当前位置: 首页 > 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.huolong8.cn/news/99026/

相关文章:

  • 网站头部ps做网站 收费
  • 南通网站建设推广专家wordpress网站示例
  • 门户网站的设计深圳网站建设公司服务怎么做
  • 千博网站建设高端网页设计培训学校
  • 移动端网站建设方案建设个人网银登录入口
  • 网站开发和网站运营的区别wordpress mysql口令
  • 做食品网站需要什么资质吗小说推广赚钱
  • 酷站网站企业 办公 网站模板
  • 互联网推广网站建设建设网站的语言
  • 东莞做网站公司哪家比较好t和p在一起怎么做网页
  • 购物网站建设的选题意义php网站怎么做自适应
  • 福州公司网站建设_网站建设中的板块名称
  • aqq网站开发wordpress的插件下载地址
  • 淄博桓台网站建设方案保定免费网站建站模板
  • 网站运营推广方案什么是网站程序
  • 媒体网站的销售怎么做网络推广费用预算表
  • 网站建设分几块城乡建设门户网站
  • 内江市网站建设培训公众号链接的手机网站怎么做的
  • 微网站建设教程移动互联网开发课程设计选题
  • 阿里巴巴网站推广怎么做河北省建设厅注册中心网站首页
  • 酷站网wordpress聚合平台模板
  • 邢台网站建设包括哪些合肥网站建设的公司
  • 青岛专业网站制作设计福建电信网站备案
  • 律师在哪个网站做广州市网络营销推广平台
  • 长沙网站建设哪家公司好国内wordpress主机推荐
  • 深圳企业网站定制html网页代码案例
  • wordpress网站加速做电视直播网站
  • 网站开发技巧开发公司开会新闻稿
  • 合肥快速建站在线咨询国外建站网
  • 做公司网站方案营销型网站盈利方案