当前位置: 首页 > news >正文

php 网站授权如何做招生网站

php 网站授权,如何做招生网站,wordpress 理财,徐州seo网站推广例题#xff1a;https://acm.sdut.edu.cn/onlinejudge3/problems/4928ui​​​​​​ 第一种方式#xff1a; 这一种做法就和正常的字符串哈希基本思想一样#xff0c;都是h[r]h[l-1]*p[r-l1]; 我们这里是左高右低#xff0c;故是hash[ l ]hash[ l ]*p[ r.len ]hash[ r …例题https://acm.sdut.edu.cn/onlinejudge3/problems/4928ui​​​​​​ 第一种方式 这一种做法就和正常的字符串哈希基本思想一样都是h[r]h[l-1]*p[r-l1]; 我们这里是左高右低故是hash[ l ]hash[ l ]*p[ r.len ]hash[ r ]; 且注意要query要先递归右子树以便于先维护出右部分的len #include bits/stdc.h using namespace std; #define pi acos(-1) #define xx first #define yy second #define endl \n #define lowbit(x) x (-x) #define int long long #define ull unsigned long long #define pb push_back typedef pairint, int PII; typedef pairdouble, double PDD; #define max(a, b) (((a) (b)) ? (a) : (b)) #define min(a, b) (((a) (b)) ? (a) : (b)) #define Ysanqian ios::sync_with_stdio(false), cin.tie(0), cout.tie(0); const int N 1e6 10, M 1010, inf 0x3f3f3f3f, mod 998244353, P 13331; const double eps 1e-8; char s[N]; int n, q; int p[N]; struct node {int l, r;int len;int hash1, hash2; } tr[N 2]; void init() {p[0] 1;for (int i 1; i n 10; i)p[i] p[i - 1] * P; } void pushup(node u, node l, node r) {u.hash1 l.hash1 * p[r.len] r.hash1;u.hash2 r.hash2 * p[l.len] l.hash2; } void pushup(int u) {pushup(tr[u], tr[u 1], tr[u 1 | 1]); } void build(int u, int l, int r) {tr[u] {l, r, r - l 1, 0, 0};if (l r){tr[u] {l, r, 1, (int)s[l], (int)s[l]};return;}int mid l r 1;build(u 1, l, mid);build(u 1 | 1, mid 1, r);pushup(u); } void modify(int u, int x, int k) {if (tr[u].l x tr[u].r x){tr[u].hash1 k;tr[u].hash2 k;return;}int mid tr[u].l tr[u].r 1;if (x mid)modify(u 1, x, k);elsemodify(u 1 | 1, x, k);pushup(u); } int query1(int u, int l, int r, int len1) {if (tr[u].l l tr[u].r r){int temp (tr[u].hash1 * p[len1]) % mod;len1 tr[u].len;return temp;}else{int res 0;int mid tr[u].l tr[u].r 1;if (r mid)res query1(u 1 | 1, l, r, len1);if (l mid)res query1(u 1, l, r, len1);return res % mod;} } int query2(int u, int l, int r, int len2) {if (tr[u].l l tr[u].r r){int temp (tr[u].hash2 * p[len2]) % mod;len2 tr[u].len;return temp;}int res 0;int mid tr[u].l tr[u].r 1;if (l mid)res query2(u 1, l, r, len2);if (r mid)res query2(u 1 | 1, l, r, len2);return res % mod; } void solve() {cin n q;cin (s 1);init();build(1, 1, n);while (q--){int op;cin op;if (op 2){int l, r;cin l r;int len1 0, len2 0;int x query1(1, l, r, len1);int y query2(1, l, r, len2);if (x y)cout Yes endl;elsecout No endl;}else{int x;char k;cin x k;modify(1, x, (int)k);}} } signed main() {Ysanqian;int T;T 1;// cin T;while (T--)solve();return 0; } 第二种方式 这一种直接暴力维护的正反哈希一个左高右低一个右高左低相比较于第一种做法多了一个快速幂的log( 注意取mod不然会wa #include bits/stdc.h using namespace std; #define pi acos(-1) #define xx first #define yy second #define endl \n #define lowbit(x) x (-x) #define int long long #define ull unsigned long long #define pb push_back typedef pairint, int PII; typedef pairdouble, double PDD; #define max(a, b) (((a) (b)) ? (a) : (b)) #define min(a, b) (((a) (b)) ? (a) : (b)) #define Ysanqian ios::sync_with_stdio(false), cin.tie(0), cout.tie(0); const int N 1e6 10, M 1010, inf 0x3f3f3f3f, mod 1e9 7, P 13331; const double eps 1e-8; char s[N]; int n, q; int p[N]; struct node {int l, r;int len;int hash1, hash2; } tr[N 2]; void init() {p[0] 1;for (int i 1; i n; i)p[i] p[i - 1] * P % mod; } int qpow(int a, int b) {int res 1;while (b){if (b 1)res res * a % mod;a a * a % mod;b 1;}return res; } void pushup(node u, node l, node r) {u.hash1 (l.hash1 r.hash1) % mod;u.hash2 (l.hash2 r.hash2) % mod; } void pushup(int u) {pushup(tr[u], tr[u 1], tr[u 1 | 1]); } void build(int u, int l, int r) {tr[u] {l, r, r - l 1, 0, 0};if (l r){tr[u] {l, r, 1, (int)s[l] * p[n - l], (int)s[r] * p[r - 1]};return;}int mid l r 1;build(u 1, l, mid);build(u 1 | 1, mid 1, r);pushup(u); } void modify(int u, int x, int k) {if (tr[u].l x tr[u].r x){tr[u].hash1 k * p[n - x] % mod;tr[u].hash2 k * p[x - 1] % mod;return;}int mid tr[u].l tr[u].r 1;if (x mid)modify(u 1, x, k);elsemodify(u 1 | 1, x, k);pushup(u); } int query1(int u, int l, int r) {if (tr[u].l l tr[u].r r)return tr[u].hash1;else{int res 0;int mid tr[u].l tr[u].r 1;if (r mid)res query1(u 1 | 1, l, r);if (l mid)res query1(u 1, l, r);return res % mod;} } int query2(int u, int l, int r) {if (tr[u].l l tr[u].r r)return tr[u].hash2;int res 0;int mid tr[u].l tr[u].r 1;if (l mid)res query2(u 1, l, r);if (r mid)res query2(u 1 | 1, l, r);return res % mod; } void solve() {cin n q;cin (s 1);init();build(1, 1, n);while (q--){int op;cin op;if (op 2){int l, r;cin l r;int x query1(1, l, r);int y query2(1, l, r);x (x * qpow(p[n - r], mod - 2)) % mod;y (y * qpow(p[l - 1], mod - 2)) % mod;// cout x y endl;if (x y)cout Yes endl;elsecout No endl;}else{int x;char k;cin x k;modify(1, x, (int)k);}} } signed main() {Ysanqian;int T;T 1;// cin T;while (T--)solve();return 0; }
http://www.yutouwan.com/news/99026/

相关文章:

  • wordpress主页图片信息流优化师需要具备哪些能力
  • 郑州网站优化托管被黑网站
  • 昌吉 建设局 网站新房装修图片
  • 做网站一个月工资小程序游戏开发成本
  • .net开发网站怎么样脑卒中中心建设网站
  • 蓟县集团网站建设延吉省住房和城乡建设厅网站
  • 嘉兴网站建设电话辽源网站建设
  • 重庆网站关键词推广网站免费创建
  • 江南大学做网站天眼查公司注册查询官网
  • 做美瞳网站需要什么资质心理健康网站建设方案
  • 公开课网站建设山东房地产新闻
  • 菠菜网站怎么建设义乌网站推广
  • Wordpress怎么做筛选功能wordpress 自动seo插件
  • 对于网站建设的意见和建议企业网站建设经济效益分析
  • 网站数据库修改密码要怎么做深圳地图各区分布图
  • 深圳做网站哪个平台好临沂网站制作加速企业发展
  • 石家庄网站建设成功案例科技馆展厅
  • 3d 网站设计怎么创建自己的小程序商城
  • 网站建设的国内外现状外贸采购平台推荐
  • 佛山做网站wordpress ip 地址修改
  • 杭州正规的网站建设公司最好的企业网站源码
  • 北京建设网网站做的网站每年都要交费吗
  • 自己建网站需要钱吗360建筑网如何删除自己的信息
  • 山东省建设备案网站审批企业展厅设计费用多少
  • 克拉玛依市建设局网站彩票网站里的统计怎么做
  • 营销型网站建设的概念旅游网站技术方案
  • 工作室 网站东莞互联网大公司
  • 违禁网站用什么浏览器住房城乡建设局是干什么的
  • 图片点开是网站怎么做免费网站转app
  • 搭建钓鱼网站教程中企动力z邮局登录