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

梅河口网站建设怎样做网站设计

梅河口网站建设,怎样做网站设计,安徽股票配资网站建设,科技 网站 推荐CF1149B Three Religions 题意#xff1a; 给定长度为 n 的母串和三个子串s1,s2,s3s_1,s_2,s_3s1​,s2​,s3​ 。初始时子串均为空。有 q 次询问。你需要支持两种操作#xff1a;向某个子串末尾添加一个字母#xff0c;或者删去某个子串末尾的字母。在每次操作后#xff…CF1149B Three Religions 题意 给定长度为 n 的母串和三个子串s1,s2,s3s_1,s_2,s_3s1​,s2​,s3​ 。初始时子串均为空。有 q 次询问。你需要支持两种操作向某个子串末尾添加一个字母或者删去某个子串末尾的字母。在每次操作后你需要回答是否能从母串中分离出三个不相交的子序列不改变字符原有顺序满足这三个子序列恰好是s1,s2,s3s_1,s_2,s_3s1​,s2​,s3​ 在任意时刻,s1,s2,s3s_1,s_2,s_3s1​,s2​,s3​的长度均不会超过 250 1≤n≤105,1≤q≤1031 \le n \le 10^5, 1\le q \le 10^31≤n≤105,1≤q≤103 题解 想了半天想不到真的想不到啊 dp题 设f[i][j][k]:表示匹配了A串的前i个字符(第i个字符选择了原串中x位置)B串匹配了前j个字符(第j个字符选择原串中y位置)C串匹配了前k个字符时(选择原串中z位置)至少需要到模式串的位置(max(x,y,z)) 数组s[i][0/1/2]:分别表示三个子串s1,s2,s3 我们需要一个nxt[i][c]来辅助转移表示在原串中[i,n]区间内c’字符第一次出现的位置 对着图nxt数组的含义很好理解。cf官方题解的图 现在我们开始考虑转移 当f[][][]n时就说明匹配失败 初始化f[i][j][k]n1,f[0][0][0]0 转移方程 f[i][j][k]min{nxt[f[i−1][j][k]1][s[1][i]],nxt[f[i][j−1][k]1][s[2][j]]nxt[f[i][j][k−1]1][s[3][k]]}f[i][j][k]min\{nxt[f[i-1][j][k]1][s[1][i]],nxt[f[i][j-1][k]1][s[2][j]]nxt[f[i][j][k-1]1][s[3][k]]\}f[i][j][k]min{nxt[f[i−1][j][k]1][s[1][i]],nxt[f[i][j−1][k]1][s[2][j]]nxt[f[i][j][k−1]1][s[3][k]]} 其实含义很简单我们就试图从A串中加个字符找后续位置从B串中价格字符找后续位置从C串中价格字符找后续位置从这个三个位置中选取最佳(即最左边)转移 对于每次插入我们只会在一个子串末端加另外两个不变那么新增状态只有新加字符与另外两个不变的串的位置关系这样有1∗250∗2501*250*2501∗250∗250种状态对于这些新状态重新跑就可以不用全部都重新跑 对于删除操作直接减小对应串长。因为我们之前转移时小的状态都算好了所以直接减对应的串长就可以得到新的答案 答案就是ans[f[len1][len2][len3]]ans[f[len1][len2][len3]]ans[f[len1][len2][len3]],表示三个串全部匹配完之后在模式串中的最左点。对于样例来说就是如图三个位置取最大值。如果n说明有解如果n说明无解 代码 #include bits/stdc.h #include unordered_map #define debug(a, b) printf(%s %d\n, a, b); using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pairint, int PII; clock_t startTime, endTime; //Fe~Jozky const ll INF_ll 1e18; const int INF_int 0x3f3f3f3f; void read(){}; template typename _Tp, typename... _Tps void read(_Tp x, _Tps... Ar) {x 0;char c getchar();bool flag 0;while (c 0 || c 9)flag| (c -), c getchar();while (c 0 c 9)x (x 3) (x 1) (c ^ 48), c getchar();if (flag)x -x;read(Ar...); } template typename T inline void write(T x) {if (x 0) {x ~(x - 1);putchar(-);}if (x 9)write(x / 10);putchar(x % 10 0); } void rd_test() { #ifdef ONLINE_JUDGE #elsestartTime clock ();freopen(data.in, r, stdin); #endif } void Time_test() { #ifdef ONLINE_JUDGE #elseendTime clock();printf(\nRun Time:%lfs\n, (double)(endTime - startTime) / CLOCKS_PER_SEC); #endif } const int maxn2e59; int s[4][300]; int nxt[maxn][30]; int f[300][300][300]; int len[4]; int n,q; char str[maxn]; void init(){for(int i0;i26;i)nxt[n1][i]nxt[n2][i]n1;for(int in;i;i--){for(int j0;j26;j){if(str[i]ja)nxt[i][j]i;else nxt[i][j]nxt[i1][j];}} } void solve(){char ch;cinch;int id;read(id);if(ch){cinch;s[id][len[id]]ch-a;for(int i(id1?len[1]:0);ilen[1];i){for(int j(id2?len[2]:0);jlen[2];j){for(int k(id3?len[3]:0);klen[3];k){int nown1;if(i)nowmin(now,nxt[f[i-1][j][k]1][s[1][i]]);if(j)nowmin(now,nxt[f[i][j-1][k]1][s[2][j]]);if(k)nowmin(now,nxt[f[i][j][k-1]1][s[3][k]]);f[i][j][k]now;}}}}else if(ch-){len[id]--;}coutf[][][]f[len[1]][len[2]][len[3]]endl;if(f[len[1]][len[2]][len[3]]n)puts(YES);else puts(NO); } int main() {//rd_test();read(n,q);scanf(%s,str1);init();while(q--)solve();return 0;//Time_test(); }
http://www.pierceye.com/news/327280/

相关文章:

  • 做民宿的网站wordpress 短信平台
  • 婚恋网站上认识人 带你做原油交易怎么用手机创造网站
  • 网站建设投标书服务方案范本天津北京网站建设公司
  • 网站建设好评公司微企点建站怎么样
  • 某网站开发项目成本估计推广普通话作文500字
  • 制作网站需要哪些工作网站建设佰金手指科杰十三
  • 外贸哪家做网站wordpress excel搜索
  • 苏州做网站推广的英文搜索网站
  • 政务微网站建设方案深圳市易捷网络科技有限公司
  • 云南网站建设哪家好长沙网站建设营销
  • 四川省建设厅注册中心网站网站管理内容
  • 百度提交网站wordpress广告设置
  • 余姚市城乡建设局网站石家庄上门足疗
  • 深圳工程造价建设信息网站php网站建设题目
  • 龙岗网站制作织梦整合wordpress
  • 代做效果图网站哪家好汉中市建设局网站
  • 东阳海天建设集团网站网站蜘蛛爬行统计
  • asp企业网站cms北京大型网站建设公司
  • 网站要多钱杭州排名优化公司电话
  • 怎么在网站中添加百度商桥南京营销网站建设
  • 沈阳火车站wordpress的vieu主题破解版
  • 食品网站建设 网站定制开发微网站建设的第一步是进行首页的设置
  • 一站式装修公司有哪些500人在线网站建设配置
  • 郴州网站制作哪个网站可以做市场调研报告
  • 劲松网站建设公司做运营需要具备什么能力
  • 企业建设网站是网络营销吗17网站一起做网店新塘
  • 电子书籍网站开发重庆网站建设快速建站
  • 广州 企业网站建设公司网页设计模板
  • 长安网站建设制作价格乐清网站
  • 小游戏网站怎么做建站徐州seo代理计费