- 博客(36)
- 收藏
- 关注
原创 Codeforces#385div.2 2017-01-13 practice
A Hongcow Learns the Cyclic Shift题意:给一个字符串,首尾相接成环形,长度为k,问从上面取连续的k个字符,能找出多少不同字符串.题解:长度为k,那么从串首开始每次后移一个字符,即最长为2k,因为是环形,所以所给字符串本身接在它自己串尾就行.代码:传送门B Hongcow Solves A Puzzle题意:给你一张图版,上面由拼图,"
2017-01-14 11:28:53 630
原创 Codeforces#390div.2 2017-01-12 practice
A Lesha and array splitting题意:给 n 个数,把它分成几段,要求每段和不能为0,求分法题解:只有全为0,才会出现不能分的情况,否则若所有数之和不为0,可以直接部分,当一段.若所有数之和为0,则必定可从一数断开,使其分为两段和不为0的数,只要找到第一个不为0的数就行了.代码:传送门B Ilya and tic-tac-toe game题意:
2017-01-12 11:32:07 474
原创 Codeforces#386div.2 2017-01-07 practice
A Compote水题代码:传送们B Decoding题意:一个字符串的加密方法是,不断拿出其中间的字符接在加密字符串后,若长度为偶数,则取其中间两个字符左边那个,现给一个加密串,解密题解:计一个l,一个r,分别每拿出一个字符后,长度为偶数时的位置,和长度为奇数时的位置,可以发现加密时,一个在左移,一个在右移,那么我们只要反着解密就行了代码:传送门
2017-01-07 12:09:52 390
原创 Codeforces#387div.2 2017-01-06 practice (Done)
A Display Size水题代码:传送门B Mammoth's Genome Decoding题意:给一串基因,由ACGT四个字母,部分丢失的由"?"代替,现要求将"?"补上,使得基因内各元素数目相等.任意输出一种情况题解:每种元素个数相等,则基因总数为4的倍数,除不开就输出"-1",最后每种元素个数为总数/4,则我们只要不够的补上就行了.代码:传
2017-01-06 17:40:17 412
原创 Codeforces#388div.2 2017-01-05 practice
A Bachgold Problem题意:用最多的素数,加出所给数.题解:用尽可能多的2,如果是偶数,末尾用2,奇数则用3代码:传送门B Parallelogram is Back题意:平行四边形给三个点找另一个点题解:肯定有可以找到3个点,水题代码:传送门C Voting题意:n个人按所给顺序投票,一些人属于D阵营,一些人属于R阵营,当每个人投票时
2017-01-05 13:11:08 442
原创 Codeforces#389div.2 2017-01-04 practice (Done)
A Santa Claus and a Place in a Class题意:确认行列左右,水题。代码: 传送门B Santa Claus and Keyboard Check题意:圣诞老头修键盘,有的键安错了,每个键只能出现一次,先要求找按错的对数,并且输出他们。题解:每个只能出现一次,所以当两个字符串每个位置的字母不一样时记录它们的对应关系,如果之前出现过,并与现在
2017-01-04 12:02:31 571
原创 线段树 学习记录
SPOJ KGSS Maximum Sum题意:两个操作,向数组更新一个数,查询一个区间内两数之和的最大值题解:维护区间最大值和第二大值代码:传送门HDU 3333 Turing Tree题意:查询区间内不同数的和值题解:我们先记录要查询的区间,并按照区间右端点从小到大排序,然后一边查询一边添加点,每次只添加当前查询区间内的点,每添加一个点时,若其之前出现过,则将之
2016-11-14 08:46:16 407
原创 Codeforces 685B Kay and Snowflake 树的重心
题意:给一棵树,每次查询以点v为根节点的子树的重心。题解:这里用到的性质是:重心在当前节点到他重儿子为根的子树,重心之间的路径上。我是这样想,若一个根节点有n棵子树,那么其重心肯定在size最大的那一棵子树上,所以重心就在这棵子树的重心与当前根之间的路径上。那我们只要从这个重心开始向上搜,那么第一个满足条件的就是重心。条件为:size[u] - size[tmp] *2>size[
2016-11-10 21:41:06 189
原创 Codeforces 633C Spy Syndrome 2 字典树
题意: 一个密码,由很多单词分别进行操作后,连接而成。操作如下 : 先翻转,然后全部变为小写字母,最后消去单词间空格,连接成密码。 现给你一本字典和一个密码,求该密码的原意。题解:由于单词都进行了翻转,所以建字典时,需要反着加进字典树,在搜索时,采用dfs,每搜到一个单词后记录位置,若最后搜素出来的单词总长度整好为密码长度,则说明找到了密码,否则回
2016-11-06 21:51:56 448
原创 树的直径/重心 学习笔记
POJ2631 Roads in the North题意:裸的直径题解:套模板,但是开始的时候,我的代码在第一次dfs循环的时候,没有考虑到,路长全为0的情况,而用来记录最远点的maxpos并没有初始化,可能会导致RE,我自己在排查问题的时候,一开始以为是max的事,所以自己写了一个MAX函数,并且用c++交了,神奇的是居然过了,导致我一直以为是max的事,后来才排查出来是maxpos的事
2016-11-05 09:46:32 775
原创 HDU1298 T9 字典树+DFS
题意:大致就是模拟手机键盘输入,给你w个词,每个词的价值为p,单词间相同的前缀的价值可以累加,m次查询,每次给手机输入的顺序,求每次按所能匹配的最大的单词。题解:很容易想到在查询时用dfs。我在写dfs时有一步坑了,我先对u进行u=u->next[k],再dfs(pos,len,u),这样就会导致在回溯的时候,u的地址已经变化,而无法继续搜索,呵呵,就这一点居然坑了3小时。代码:传送门
2016-11-03 22:46:49 452
原创 字典树 学习笔记
Codeforces 282E 解题报告: http://blog.csdn.net/r_o_j/article/details/52998669
2016-11-01 19:10:53 351
原创 Codeforces 282E Sausage Maximization Trie字典树
题意:给n个数字组成的串, 可分成不相交的前缀和后缀,要求让该前缀和后缀内的所有数的xor值最大。题解:我们可以先处理出到第i位的前缀xor值,和i位开始的后缀xor值,因为要求前缀后缀不相交,所以我们可以将对于第i位,可以将i位前的前缀都加入字典树,然后在字典树中去匹配后缀,匹配原则如下:首先,字典树存的是前缀的二进制,查询的是后缀的二进制,数据范围最多32位,所以树32层,即我们可以将
2016-11-01 19:06:31 435
原创 强连通分量 学习记录
HDU1269#include#define MEM(a,x) memset(a,x,sizeof(a));#define MEMINF(a) memset(a,0x3f,sizeof(a));using namespace std;typedef long long LL;const int MAXN=1e4+5;const int MAXM=1e5+5;const int
2016-10-30 22:18:43 297
原创 0-1BFS 学习记录
0-1BFS用来解决:边权值为0或1,或者能够转化为这种边权值的最短路问题,时间复杂度为O(E+V).0-1BFS,从队列front中去除点u,遍历u的所有边,如果当前边可以进行relax操作,则relax,然后判断level,若level相同,放到队列的front,否则,放到back,队列采用双端队列deque。实际上跟最短路挺像。SPOJKATHTHI KATHTHI
2016-10-10 00:15:06 3070 1
原创 Codeforces 724C Ray Tracing 模拟
题意:给你一张n*m的图,横坐标从0到m,纵坐标从0到n,直线y=n,y=0,x=0,x=m都是墙,现有光束从0,0出发向1,1射去,每进过一个点耗费1秒,当遇到墙角时,光束停止,当射到墙面上时,反射,入射角等于出射角,先有k个传感器在不同的点上,问光束第一次经过这些点的时间,若不经过输出-1。题解:这题真是卡了我半天,真的是半天,我先按点一个一个搜t在test7,再按边搜然后对于每条边找一遍
2016-10-09 13:15:35 18138
原创 Gym 100712D Alternating Strings 动态规划
题意:给你一个n值一个k值,一个长度为n的01串,现在要求你切割原串,使新形成的每个子串都满足,长度不超过k,且任何子串都不是完全交替的01串,利于010101就是完全交替的01串,而00101010就不是,问你最少需要切几刀。 题解:完全照着官方题解来的,自己看了几个小时也没看明白,问巨巨们都是扫一眼就告诉我怎么做,然而即便是这样我还是无法理解每一步程序究竟是什么意思,后来跟phy讨论了
2016-10-07 00:40:02 577
原创 待学习
Dilworth定理:http://www.cnblogs.com/submarine/archive/2011/08/03/2126423.html http://blog.csdn.net/xiaohuan1991/article/details/6956629
2016-10-06 09:02:05 290
原创 UVA 12706 Zero-Knowledge Protocol 字符串处理?思维?
题意:给你一个长度为n的序列s,再给你一个长度为m的序列p,满足m题解:首先,由于对p任意排列组合,并在s中找到它,那么,我们可以不用去管p具体是怎么排列组合的,只需要知道p中的元素及其个数就行了,用map[si]记录s[i]所对应的元素出现的次数,则当统计完后,map的size就是p中不同元素的个数。这样我们对s从左往右扫描从头开始扫描。定义这个扫描框的长度为m,其右端点
2016-10-05 23:38:33 342
原创 UVA12707 Block Meh 贪心
题意:给你n个区间,每个区间权值为1,在如下规则下求权值和:若一个区间能完全被另一个区间覆盖(端点不重合),则这个区间的权值不计入总和。题解:我们首先讲端点对按照右端点优先升序排列,右端点相同,按左端点升序排列,然后我们顺序对左端点进行处理,先建个空vector,对每个左端点,若在vector中能找到比它大的,则说明它可以把比它大的左端点包含在其内,则消去那个点,将当前点替换那个点的位置,若找
2016-10-05 19:55:11 340
原创 codeforces #375(div.2) 723E One-Way Reform 欧拉回路或网络流
题意:n个点,m条无向边,有回路,无重边,无自环,可以有孤立点。现要求把所有边标上方向,使得目标点的数目最大,并输出标上方向后的边,目标点满足其出度等于入度。题解:自己不会,看了官方题解上网看了博客,学会了第一种思路。我们把开始把所有点的度统计出来,假设所有的点度都为偶数,只有两个为奇数,那么我们将这个两个点之间建立一条边,则若从其中一点延向另一点出发并能走回起点,则走过的回路构成
2016-10-04 23:06:00 722
原创 codeforces#375(div.2)723D - Lakes in Berland dfs+bfs
题意:给你一张n×m的图,点代表水,星代表地,当水连在一块时,称为湖,但是,若湖中有水在边界上,则不算它是湖,现在要求你去掉x个湖,并用地将其填上,使原图剩下k个湖,输出你最少需要多少个单位的地,并且输出你填补过的图。比赛的时候没过,好菜呀。思路:首先定义两个数组bfs_vis,dfs_vis,分别记录bfs和dfs的访问状况,定义flag,true代表一块区域属于湖,fa
2016-10-03 23:23:00 371
原创 Atcoder KUPC2016 E柵 / Fences 最小割
题意:给你一张图,X是羊,如果羊在图的边界,则羊可以出逃,直接输出-1程序结束.羊只能向上下左右四个方向走,现在你可以在图中的‘.'上安置栅栏,问最少需要多少栅栏才能将其圈住。这题乍一看是搜索,但是搜索交了两发都wa了,错误在哪知道了但是找不出解决方法,不知道搜索能不能做,后来才发现是个最小割。思路:我们首先虚拟一个虚拟的源点和一个虚拟的汇点,并把图上所有的边界点连接到源点
2016-10-03 18:08:31 646
原创 codeforces 722C. Destroying Array map+multiset
题意:给你一个由1~n随意排列的序列,进行n次删除,每次删除一个数,每次删除后输出最大连续子串和,被删除的数会变成空位。比赛的时候想到了思路,没想到用map和multiset,用链表去记录了区间,结果坑在了链表上,赛后看到大神们用了map和multiset才学着写了这么一发。思路:先预处理将从0到i(i属于1~n)的和算出来,这样每删除一个数c,则其左侧区间的和为sum[c-1]-sum[
2016-10-03 15:08:34 164
原创 Gym 100345G Pulp Fiction 贪心
这题很简单,就是对于每本书,在下一次出现前能否写完,能写完就写,写不完就在下一次idea出现之后判断,这样不停的判断,把中断的书全都加到队列里去,到最后没书写的时候把队列里的书拿出来继续写,由于要求的是天数总和最小,所以需要用到优先队列。题目传送门代码:#include#define MEM(a,x) memset(a,x,sizeof(a));#define MEMINF(a)
2016-09-19 10:40:51 333
原创 HDU5889 Barricade bfs+网络流裸模板 2016ICPC沈阳网络赛1011
沈阳预选赛的1011,刚开始没想到用bfs找最短路,还找了一个能找出所有多条最短路径的板子,结果一直犹豫最短路+网络流会不会超时,到了也没写完这题。K - BarricadeTime Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64uDescriptionTh
2016-09-19 10:29:24 553
原创 Andrew Stankevich Contest 6 B Under Control
这题挺有意思思路, 先将所有城市的领地都加到一个集合里,然后再拿出一个点判断其周围点是否在集合中,不在就加入队列,再判断这些点是否满足2*2的特性,满足就将其放入队列,就这样循环判断到队列为空为止,思路出来代码就很好写了#include#define MEM(a,x) memset(a,x,sizeof(a));#define MEMINF(a) memset(a,0x3f,size
2016-09-15 19:43:26 472
转载 c++大数模板
网上搜的,6的飞起#include #include #include #include #include #include using namespace std;const int MAXN = 410;struct bign{ int len, s[MAXN]; bign () { memset(s, 0, sizeof(s)); len = 1;
2016-09-15 13:36:22 334
原创 Andrew Stankevich Contest #4 A Unique Attack 最小割唯一性判断
题目传送门正向跑一遍,反向跑一遍,统计可行点,看是否相同/************************************************************************* File Name: 1.cpp ID: Liusiyu BLOG: http://blog.csdn.net/r_o_j LANG: C++
2016-09-13 11:43:11 381
原创 Andrew Stankevich Contest 10 D More Divisors 反素数
今天学了个新东西,反素数,感觉这玩意主要是套模板。以下套用大牛的讲解。反素数的定义:对于任何正整数,其约数个数记为,例如,如果某个正整数满足:对任意的正整 数,都有,那么称为反素数。 从反素数的定义中可以看出两个性质: (1)一个反素数的所有质因子必然是从2开始的连续若干个质数,因为反素数是保证约数个数为的这个数尽量小
2016-09-13 11:31:32 406
原创 Andrew Stankevich Contest 10 I Trade 有下届网络流
用Dinic跑一遍,关键是建图/************************************************************************* File Name: 1.cpp ID: Liusiyu BLOG: http://blog.csdn.net/r_o_j LANG: C++ Mail: 779
2016-09-13 11:24:38 522
原创 统 一代码格式
http://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/formatting/#id8
2016-07-27 17:58:29 311
原创 Github搭建过程简记
注册...创建仓库创建密钥:ssh-keygen -t rsa -C “your_email@youremail.com”这填你注册时的邮箱然后gedit ~/.ssh/id_rsa.pub复制里面的密钥,到github里个人设置下有个sshkeys创建.标题随意,内容就是之前复制的密钥.然后设置个人信息git config --global user.name “
2016-07-23 22:01:22 200
原创 资料链接简记
字符串博客:http://www.cnblogs.com/a180285/archive/2012/02/22/2363468.html字符串-马拉车: http://www.bilibili.com/video/av4829276/c++技巧:http://codeforces.com/blog/entry/15643std::find : http://www.cplusplus.
2016-07-12 18:51:20 390
原创 linux 下 vim 学习笔记
ctrl-z 把当前进程放到后台jobs 查看当前所有后台进程fg 1 把1号后台进程放到前台ctrl-c 强退vim下ggVG“+y 全选复制
2016-07-12 10:02:25 452
原创 POJ 1037 A decorative fence 动态规划
POJ 1037 Adecorative fence 动态规划题意,给一个数字J,要求1-J中的数字进行交错排列,即每个数的左右两边的数应比它大或比它小,并且将所有排列进行字典序排序后,查找第C个排列。步骤一:枚举预处理首先,交错排列无非就是两种,一种是,第一数比第二个数大,即W型,一种是第一个数比第二个数小,即M型。我们可以定义两个数组,分别记录以i开头,总数为j根的排列的个数。
2016-05-29 09:31:44 2094 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人