CodeForces 828C String Reconstruction(并查集思想)
题意:给你n个串,给你每个串在总串中开始的每个位置,问你最小字典序总串。
思路:显然这道题有很多重复填涂的地方,那么这里的时间花费就会特别高。
我们维护一个并查集fa,用fa[i]记录从第i位置开始第一个没填涂的位置,那每次都能跳过涂过的地方。每次填完当前格就去填find(fa[i + 1])。
ps:一定要合并,不然超时。
代码:
#include<stack> #include<vector> #include<queue> #include<set> #include<cstring> #include<string> #include<sstream> #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #define ll long long #define ull unsigned long long using namespace std; const int maxn = 1000000+5; const int seed = 131; const int MOD = 100013; const int INF = 0x3f3f3f3f; char ans[maxn*10]; int fa[maxn*10]; char s[maxn]; int find(int x){return fa[x] == x? x : fa[x] = find(fa[x]); } int main(){int n,t;memset(ans,0,sizeof(ans));scanf("%d",&n);for(int i = 0;i < maxn * 10;i++) fa[i] = i;int end = 1;while(n--){scanf("%s%d",s,&t);int len = strlen(s);while(t--){int x;scanf("%d",&x);end = max(end,x + len - 1);for(int i = find(x);i <= x + len -1;i = find(i + 1)){ans[i] = s[i - x];int fx = find(i);int fy = find(i + 1);if(fx > fy)fa[fy] = fx;elsefa[fx] = fy;}}}for(int i = 1;i <= end;i++)if(ans[i] != 0)printf("%c",ans[i]);else printf("a");printf("\n");return 0; }
转载于:https://www.cnblogs.com/KirinSB/p/9517004.html
CodeForces 828C String Reconstruction(并查集思想)相关推荐
- Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) C. String Reconstruction 并查集
C. String Reconstruction 题目连接: http://codeforces.com/contest/828/problem/C Description Ivan had stri ...
- CodeForces - 123A prime permutation(并查集,水题)
题目链接:点击查看 题目大意:给出一个字符串s,问能否通过重组其字母顺序,从而满足:若字符串下标从1开始,对于每一个质数下标,满足 题目分析:其实在纸上稍微写写画画就能看出个大概的规律,当字符串的长度 ...
- CodeForces - 468B Two Sets(并查集+思维)
题目链接:点击查看 题目大意:现在给出两个集合A和B,再给出两个数a和b,现在规定在集合A中的数x必须满足x和a-x同时在集合a中,而在集合B中的数x也同样需要满足x和b-x同时在集合B中,现在给出一 ...
- codeforces 884E Binary Matrix 并查集,滚动数组
E. Binary Matrix time limit per test 3 seconds memory limit per test 16 megabytes input standard inp ...
- Harmonious Graph CodeForces - 1253D(思维+并查集)
You're given an undirected graph with n nodes and m edges. Nodes are numbered from 1 to n. The graph ...
- Codeforces 1144D Deduction Queries 并查集
Deduction Queries 用并查集维护前缀的关系, 在同一个联通块内两两之间的异或值都是已知的. 每个点再维护一个和它当前父亲的异或值, 压缩路径的时候更新一下就好了. #include&l ...
- Codeforces 371D. Vessels【并查集】
题目大意: 给出一堆从上到下叠起来的容器,有两种操作:第一种是在编号为i的容器中加入x的水(保证水溢出之后会流到下一个最近的容器(如果存在)中):第二种是查询编号为i的容器中有多少水. 做法: 首先, ...
- CodeForces - 371D Vessels 【并查集】
Vessels 题意: 自上而下的n个碗,向某个碗中倒水,如果溢出,则会流向它之下的下一个未满的碗.有两种操作:1 p x表示往第p个碗中导入x的水,2 p表示询问此时第p个碗中的水量. 题解: 未经 ...
- CodeForces - 371D. Vessels(并查集)
题目链接:http://codeforces.com/problemset/problem/371/D点击打开链接 D. Vessels time limit per test 2 seconds m ...
最新文章
- js空对象undefined
- 控件联动(三级联动)
- git删除分支_程序员必须要掌握的 Git 使用技巧
- oracle 天转换成月函数_oracle中to_date详细用法示例(oracle日期格式转换)
- 【扯淡】今天看了《写给失眠者的心理学》,下面开始借鉴与脑洞大开
- 坐标轨迹计算_【老杨讲坛】737NG无系留最大风速限制的插值计算
- 2021牛客寒假算法基础集训营3,签到题DGHIJ
- 绝地大逃杀服务器维护多少时间,绝地求生4月12日维护到几点/维护多长时间 绝地求生4.12维护什么时候好/能进游戏...
- expect移植到powerPC平台的过程
- Linux基础知识全面总结
- 热敏打印机ESCPOS指令封装类,票据打印从此轻松,佳博系列实测通过
- 【环境搭建】在Ubuntu16.04上搭建Nginx-rtmp流媒体服务器
- 用友NC总账辅助余额表与应收应付模块余额表对账技巧
- GINI Index-基尼指数
- 关于数据恢复,记一次修复SD卡 RAW 之后的修复过程
- 蓝牙系统中的主机与控制器
- 原腾讯副总裁,Google资深研究员吴军:ChatGPT不算新技术革命,带不来什么新机会...
- 2022温州经开区沙城街道办事处招聘编外人员综合试题及答案
- 【学术相关】没有痛苦的博士求学经历,是不合格的!一位毕业了三十多名博士的中科院博导感言...
- 微信小程序+vant的自定义tabBar
热门文章
- TypeScript算法专题 - blog3 - 对TypeScript链表实现中的一些问题总结与改进
- 泰安虚拟服务器怎么样,泰安S5353:搭建您最满意的服务器
- l2高斯分布_浅谈为什么L2正则化有效
- linux未找到make命令,linux中无make命令的问题(make: *** 没有指明目标并且找不到 makefile及make命令安装方法)...
- 二元偏导数存在的条件_偏导数连续怎么证明
- python框架漏洞_注意!Python中的10个常见安全漏洞及修复方法
- 依赖注入有点_12.24 (Core管道amp;中间件amp;依赖注入+琐碎笔记)
- oracle lock 1,Oracle試用 DBMS_LOCK.sleep(1);權限問題
- fckeditor php 不显示,PHP Fckeditor上传文件(或图片)中文显示为乱码的解决方法
- JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)...