
题解
Anoyer
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
学军信友队趣味网络邀请赛 D-抗疫斗争
抗役斗争时间限制:2000ms空间限制:512MB题面描述新冠疫情爆发以来,病毒不断地扩散传播,而人类也在不断采取各种措施遏制病毒传播。于是我们可以为这场抗疫斗争建立一个数学模型,将病毒的不断传播和人类的不断采取措施抽象为一场双方轮流行动的博弈。我们认为人类与病毒的每轮行动都可以选择一个正整数作为行动值来评估。然而,出于各方面限制,双方的所有行动值总和必须等于一个数 ,且每次的行动值不能超...原创 2020-04-05 21:30:37 · 934 阅读 · 0 评论 -
Codeforces Round #525 (Div. 2) -C. Ehab and a 2-operation task
博主链接题目链接 Note In the first sample, the array is already increasing so we don’t need any operations. In the second sample: In the first step: the array becomes [8,6,3]. In the second step: ...原创 2018-12-05 00:17:48 · 221 阅读 · 0 评论 -
HDU - 3294 - Girls' research(裸马拉车)
个人博客题目链接题意:通过第一个字符与a的关系翻译字符串,输出最长回文串和首尾下标,不存在则输出No solution!题解:用manachar求出最长回文串中心和半径,因为变换后的串各字符下标改变了,所以输出原首尾下标要公式倒推输出字符时要跳过插入的符号。如果你没有马拉车板子,或者说你不会马拉车,请见Manacher最长回文串算法代码:#include<stdio.h&g...原创 2018-12-03 21:42:06 · 487 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day4 (Div2, onsite) A 夺宝奇兵 思维 贪心
A - 夺宝奇兵很简单的一道题,相邻两组宝藏走法只有两种交叉走,或者平行走(就是一号第一个宝藏走到二号第二个或者一号第一个走到二号第一个),所以for扫一遍去min就可以了#include<stdio.h>#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=...原创 2019-01-23 22:53:16 · 378 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day4 (Div2, onsite) F 小小马 思维
F - 小小马因为走法比较特殊,如果当前xy奇偶性相同,下一步则必定不同,所以黑白格子是轮流出现的,这样就可以根据起点和终点的奇偶性判断是否黑格数等于白格数了。同时可以发现只有棋盘大于3 * 4可以从一个点到达棋盘任何点, 3 * 3的棋盘除去中心点其余点都能相互走到,其他棋盘情况就看看从起点走8个方向是否可以走到终点(因为此时棋盘只能走一步)。#include&amp;amp;lt;stdio.h&amp;amp;gt;...原创 2019-01-23 22:54:22 · 509 阅读 · 2 评论 -
CCPC-Wannafly Winter Camp Day4 (Div2, onsite) I 咆咆咆哮 贪心
I - 咆咆咆哮基本思路就是贪心枚举选a的数量num,去选择num个对ans贡献最大a,然后ans取min。#include<stdio.h>#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e3+7;struct Node{ int a,b;...原创 2019-01-23 22:55:24 · 461 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day4 (Div2, onsite) C 最小边覆盖 最小边覆盖
C - 最小边覆盖最小边覆盖,不能有多余的边重复覆盖点。所以如果发现一个点被多余的覆盖了就不是最小点覆盖#include<stdio.h>#include<bits/stdc++.h>using namespace std;const int maxn=2e5+10;int in[maxn],u[maxn],v[maxn];int main(){ in...原创 2019-01-23 23:20:17 · 308 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day5 (Div2, onsite) A Cactus Draw DFS
A - Cactus Draw把节点的深度做x坐标,儿子序做y坐标,进行DFS遍历,因为是棵树所以肯定不会交边#include&lt;stdio.h&gt;#include&lt;bits/stdc++.h&gt;using namespace std;const int maxn=1e4+10;struct edge{ int v,next;}e[maxn];int he...原创 2019-01-24 21:51:18 · 393 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day5 (Div2, onsite) C Division 暴力
C - Division把每个数先压到优先队列中,每次操作取队顶元素除2再压进去,同时判断下队顶是否为0,如果为0就没必要继续操作了。因为数大小1e9所以每个数最多就操作30次。#include&lt;stdio.h&gt;#include&lt;bits/stdc++.h&gt;using namespace std;typedef long long ll;const int ma...原创 2019-01-24 21:53:12 · 342 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day5 (Div2, onsite) J Special Judge 边与边的关系
J - Special Judge对任意两条边都进行判断是否相交,如果相交则在判断是否是相交于端点,不过不是则ans++。是的话在判断下是不是重合边,如果不是重合边就不符合,是就ans++.#include&lt;stdio.h&gt;#include&lt;bits/stdc++.h&gt;using namespace std;typedef long long ll;struct...原创 2019-01-24 21:54:31 · 343 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day4 (Div2, onsite) G 置置置换 DP
G - 置置置换定义dp[i][j]为 i个数的排列中,最后一个数字为j当i为偶数的时候,位于山谷,需要前面大于他dp[i][j]+=dp[i-1][k], j&lt;=k&lt;=i-1之所以可以这么写是因为,前面并没有出现i这个数字,所以也没有计算dp[i-1][i],但是有个巧妙的做法假设把前面所有大于等于j的数+1,就刚好解决这个问题了。当i为奇数的时候,位于山峰,需要前面小于...原创 2019-01-24 22:32:32 · 520 阅读 · 0 评论 -
HDU - 3068 - 最长回文(裸马拉车)
个人博客题目链接题意:给出一个只由小写英文字符a,b,c…y,z组成的字符串S,求S中最长回文串的长度.回文就是正反读都是一样的字符串,如aba, abba等题解:裸的马拉车(Manacher)算法,直接上板子就够了。如果你没有马拉车板子,或者说你不会马拉车,请见Manacher最长回文串算法代码:#include<stdio.h>#include<algori...原创 2018-12-03 21:40:45 · 295 阅读 · 0 评论 -
HDU - 2609 - How many (最小表示法+set除重)
博主优快云题目链接题意:有n个环形字符串,一个环形字符串移动会形成不能的字符串,我们把它们看作同一串字符串,求有多少个不同的字符串题解:用最小表示法把每个串的最小字典序找出来, (如果两个循环串相等则他们的最小字典序也一定相等),set带有除重功能,因为set具有除重功能所以用set来存每个串求出的最小字典序代码:#include&lt;stdio.h&gt;#include&...原创 2018-12-03 21:39:06 · 339 阅读 · 0 评论 -
HDU-4333-Revolving Digits(扩展KMP)
优快云题目链接题意:给你一个字符串,你可以将该字符串的任意长度后缀截取下来然后接到最前面,让你统计所有新串中有多少种字典序小于、等于、大于原串。题解:首先我们将原串扩展成两倍,算一遍扩展KMP(自匹配),时间复杂度O(n)。这样一来,我们就得到了eKMP[i],eKMP[i]代表s[i…len-1]与s的最长公共子串。为了避免重复子串重复计数,我们先求出s的最小循环节:然后我们只需统...原创 2018-11-28 17:42:19 · 346 阅读 · 0 评论 -
POJ-3261-Milk Patterns(后缀数组)
博主优快云题目链接题意:给定一个字符串S,求至少出现k次的最长重复子串,这k个子串可以重叠。题解:后缀数组。先二分答案,然后将后缀分成若干组。这里要判断的是有没有一个组的后缀个数不小于k。如果有,那么存在k个相同的子串满足条件,否则不存在。。代码: /* 题意:找出出现k次的可重叠的最长子串的长度 这都是套路题了,二分长度L,按照height值分组...原创 2018-11-28 17:43:34 · 287 阅读 · 0 评论 -
SPOJ - REPEATS - Repeats(RMQ+后缀数组)
博主链接题目链接题意:对于给出的字符串(长度&lt;= 50000,只包含字符’a’或’b’)找到最大的k使得存在某个字符串t重复k次是给出的字符串的子串题解:如果每一个循环节的长度为len, 那么在原字符串S中, S[i*len]与S[(i + 1)len]一定会被包含在答案的子串当中那么枚举可能的答案的循环节的长度, 然后枚举可能的位置, 对于每一组可能被包含的位置S[ilen],...原创 2018-12-07 23:14:24 · 586 阅读 · 0 评论 -
POJ-2406-Power Strings(循环节)
博主链接题目链接题意:给我们一个字符串,我们要求出它最多由几个相同的连续子串连接而成。也就是求最小循环节题解:先注意到如果他是循环子串那么n-next[n]一定是最小循环节。于是可以先求出nxt然后暴力匹配一遍看看。但是事实上只要满足n%(n-next[n])==0就可以保证答案正确了。代码:#include<stdio.h>#include<cstring&g...原创 2018-12-05 20:43:51 · 251 阅读 · 0 评论 -
POJ - 3974 - Palindrome(裸马拉车)
博主链接题目链接题意:给一个字符串,求连续最长的回文子串的长度。题解:利用Manacher算法,裸的模板题,不多说了。不懂Manacher算法----见Manacher最长回文串算法代码:#include&lt;stdio.h&gt;#include&lt;algorithm&gt;#include&lt;cstring&gt;#define met(a) memset原创 2018-12-05 20:44:38 · 232 阅读 · 0 评论 -
HDU-3336-Count the string(KMP-Next数组性质)
博主链接题目链接题意:求一个串中所有前缀子串出现次数之和题解:对于每个串他前缀串出现次数和一定大于或等于n,因为有n个前缀;所以此时只需要去计算一下每一个前缀在后面出现了几次,也就是next数组的值。结合next数组的性质可以很容易得知,next数组中存在一个非0位,就出现了一种前缀,ans就++。所以只需对字符串求一遍next数组,统计都是个非零元素就可以了。代码:#includ...原创 2018-12-05 20:45:37 · 283 阅读 · 0 评论 -
HDU-3746-Cyclic Nacklace (KMP求循环节)
博主链接题目链接Sample Input3aaaabcaabcdeSample Output025题意:给你一些串,问如果想让这个串里面的循环节至少循环两次,需要添加几个字符(只能在最前面或者最后面添加)。比如ababc 需要添加5个就是添加ababc。题解:利用Next数组的性质:符合 i % ( i - next[i] ) == 0 &&...原创 2018-12-05 20:47:10 · 380 阅读 · 0 评论 -
HDU-1841-Find the Shortest Common Superstring(kmp)
博主优快云题目链接题意:给出两个串,用这两个串组成一个新串,使新串包含这两个串,问这个新串的长度最小是多少;题解:显然,对于两个串A,B;A如果是B的子串或者B如果是A的子串的话,直接输出那个母串的长度即可,如果没有这种关系,那么看一个串的后缀是否是另一个串的前缀,如果某个串的后缀与另一个串的前缀的公共部分最长,则答案=A.length+B.length-公共长度,所以可以直接用km...原创 2018-12-03 21:33:08 · 327 阅读 · 0 评论 -
HDU-1711-Number Sequence(数组跑KMP)
博主优快云题目链接题意:给你两个数组的所有元素,让你对它们进行匹配,当位置为多少时候它们能完全匹配。题解:直接跑KMP就可以了,唯一注意的…emmm…应该不用注意吧,也就原先是字符串,现在把字符串换成数组超级大水题代码:#include&lt;stdio.h&gt;#include&lt;bits/stdc++.h&gt; using namespace std;int s...原创 2018-12-03 21:35:30 · 224 阅读 · 0 评论 -
HDU - 2087-减花布条(裸KMP模板)
博主优快云题目链接题意:中文题面,题意也说得非常清楚了,给一个文本串,求文本串中有多少个不重复的模式串题解:kmp标准做法,甚至基本没有变动。 判断的时候,每当完整的匹配一次之后令j=0,ans++,即模式串的下标从0开始,匹配数量加1代码:#include&lt;iostream&gt;#include&lt;algorithm&gt;#include&lt;cstdio&am原创 2018-12-03 21:36:27 · 313 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day1 (Div2, onsite) E 流流流动 树形DP
E - 流流流动直接连边树形dp计算。需要注意的是图并非联通,可以使用并查集,判断这个集合是否已经处理过。#include<bits/stdc++.h>using namespace std;const int maxn=110;vector<int> e[maxn];void add(int u,int v){e[u].push_back(v),e[v].pu...原创 2019-01-25 22:56:08 · 390 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day1 (Div2, onsite) C 拆拆数 暴力
C-拆拆拆数思路:题目只有1和2的情况,如果ab互质则为1,如果不互质n为2,且一定存在答案(第一感觉是这样)。开始我对n=2的情况去构造,发现一直wa~~(菜哭了)~~,后来A了J题后重新换了100*100暴力枚举两组ai,bi。#include&amp;amp;amp;lt;stdio.h&amp;amp;amp;gt;#include&amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;gt;原创 2019-01-22 10:56:14 · 680 阅读 · 2 评论 -
CCPC-Wannafly Winter Camp Day3 (Div1, onsite) F 小清新数论 杜教筛
F - 小清新数论杜教筛能的,跑了1423ms,对上面公式中欧拉函数前n项和,欧拉函数前n项和进行杜教筛,然后套一个分块求解#include<stdio.h>#include<bits/stdc++.h>#include<tr1/unordered_map>#define INV2 499122177using namespace std;typ...原创 2019-01-26 10:34:36 · 685 阅读 · 0 评论 -
HDU - 2612 - Find a way(BFS+打表)
题目链接题意:求2个点到KFC的距离之和,使其最小题解:可用2次BFS,分别求出2个点到各个KFC的最短距离,然后找出和最小的即可AC代码:#include<stdio.h>#include<string.h>#include<iostream>#include<queue>#define inf 0xffffffusi...原创 2019-02-28 20:30:32 · 254 阅读 · 0 评论 -
POJ - 1321 - 棋盘问题(裸DFS)
题目链接题意:给你一个棋盘,问在这个棋盘上放K个棋子,有多少种放法(每行每列只能有一个棋子)题解:对棋盘DFS搜索,每满足一种就ans++,基本是裸的AC代码:#include<stdio.h>#include<string.h>typedef long long ll;const int maxn=17;char mp[maxn][maxn];...原创 2019-02-28 20:31:40 · 240 阅读 · 0 评论 -
POJ - 2251 - Dungeon Master(分层BFS)
题目链接题意:给一个三维图,可以前后左右上下6种走法,走一步1分钟,求最少时间(其实就是最短路)题解:最短路Bfs,和二维的基本一样,就是原来4个方向,现在6个方向,原来数组是二维,现在是三维,也相当于模板题了。AC代码:#include<stdio.h>#include<cstring>#include<queue>#include&...原创 2019-02-28 20:34:01 · 302 阅读 · 0 评论 -
POJ - 3126 - Prime Path(BFS枚举)
题目链接题意:给出两个四位数的素数a,b,求从a变到b最少要花几步?每一步只能将a中的一位改变,且改变后的数也要是素数。题解:BFS枚举个位,十位,百位,千位变换的数,用素数表判断变换后是否为一个素数AC代码:#include<stdio.h>#include<string.h>#include<queue>#include<al...原创 2019-02-28 20:34:46 · 317 阅读 · 0 评论 -
POJ - 3278 - Catch That Cow(裸BFS)
题目链接题意:给定两个整数n和k,通过 n+1或n-1 或n*2 这3种操作,使得n==k,输出最少的操作次数题解:简单的对每个节点进行三个方向(三种走法)的BFSAC代码:#include<stdio.h>#include<string.h>#include<queue>#include<algorithm>using ...原创 2019-02-28 20:35:25 · 426 阅读 · 0 评论 -
POJ - 3087 - Shuffle'm Up(模拟)
题目链接题意:已知两堆牌s1和s2的初始状态, 其牌数均为c,按给定规则能将他们相互交叉组合成一堆牌s12,再将s12的最底下的c块牌归为s1,最顶的c块牌归为s2,依此循环下去。现在输入s1和s2的初始状态 以及 预想的最终状态s12问s1 s2经过多少次洗牌之后,最终能达到状态s12,若永远不可能相同,则输出"-1"。题解:虽然归类于kuangbin搜索专题,但个人感觉模拟...原创 2019-02-28 20:36:45 · 304 阅读 · 0 评论 -
FZU - 2150 - Fire Game(双端BFS)
题目链接题意:给你块地,有空地,也有草堆,让你选两个草堆进行点火,燃烧的草堆会引燃上下左右的相邻草堆,每一次引燃花费1s时间,问你最少花多长时间把草堆都点着,如果做不到输出-1.题解:枚举图中所有草地,找到任意两块不一样的草地,然后bfs求出烧掉所有草的最短时间,可以将两个初始状态都push进队列,这样就可以模拟两堆草同时燃烧的情况,在bfs的过程中要判断是否烧完(即所有的草堆...原创 2019-02-28 20:37:21 · 278 阅读 · 0 评论 -
POJ - 3984 - 迷宫问题(路径记录)
题目链接题意:给你一个5*5的迷宫,0代表通路,1代表墙,找到从迷宫左上角到达右下角的最短路径,并输出路径。题解:先进行一遍BFS,得到vis数组,表示到该位置最少需要多少时间,然后从(4,4)位置倒着查路径,查到符合的就直接break,防止重复AC代码:#include<stdio.h>#include<string.h>#include<...原创 2019-02-28 20:38:00 · 403 阅读 · 0 评论 -
UVA - 11624 - Fire!(BFS逃生问题)
题目链接题意:在迷宫内,J表示人,F表示火,火可能不止一处,但是人只有一个,火会向上下左右蔓延,蔓延速度和人移动速度一至(每次一格,但是可以同时向四个方向)问是否可以成功逃出迷宫,不能输出IMPOSSIBLE,能的画话输出最短路径。题解:每步先让火走–然后人走其他的路–就可以保证人不会被火烧了先将火入队列最后将人入队列,走的时候判断下是人还是火,如果是人的话看看是否无路可走注...原创 2019-03-01 15:31:56 · 280 阅读 · 0 评论 -
HDU - 1241 - Oil Deposits(DFS联通块)
题目链接题意:就是给你一个地图,找出所有不相连(八个方向)的@组合有多少个题解:经典的DFS求联通块的题,和紫书上求油田一样,枚举每一个点进行DFS搜联通的@AC代码:#include <stdio.h>#include<bits/stdc++.h>using namespace std;const int maxn=105;char mat[m...原创 2019-02-28 20:29:00 · 213 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day3 (Div2, onsite) G 排列 思维 构造
G - 排列搞清楚每个数组都是干什么的。P 原数组Ap 前缀数组q Ap中第i大的位置(相同的先取左边,例如 AP={2,1, 1},第1小的位置是2而不是3.)现在题目给了q,可以根据q倒推出Ap,然后倒推出Pinclude<stdio.h>#include<bits/stdc++.h>using namespace std;const int m...原创 2019-01-22 21:49:43 · 351 阅读 · 1 评论 -
CCPC-Wannafly Winter Camp Day3 (Div2, onsite) F 小清新数论 欧拉函数的利用 莫比乌斯反演 杜教筛
F - 小清新数论#include&amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;gt;#include&amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;gt;using namespace std;#define LL long longconst int maxn = 1e7+9;const LL mod = 998244原创 2019-01-22 17:33:17 · 486 阅读 · 0 评论 -
2019 CCPC Wannafly Camp day7
自闭感受Camp第七天,上午xls给我们来了一波意识流图论讲解,我没有包图论所以听了些前面简单的,就去补day3,div1的数论了。经过群里一群大佬的点醒,发现自己傻逼了,明明可以直接用我div2的欧拉函数写法套上两个杜教加分块就能过,还整半天直接用莫比乌斯跑TT。下午训练赛,感觉题目有点坑,数据范围好大,就写了两道签到题EG,队友没有怼出A题,晚上听解题发现自己D题推的离答案就差一两步了,...原创 2019-01-26 22:29:40 · 465 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day7 (Div2, onsite) E 线性探查法 思维
E - 线性探查法按照哈希的操作进行逆操作,求出每一位最小数值,利用set维护压入的最小值。#include<stdio.h>#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=3e3+20;struct Node{ ll a; int i...原创 2019-01-26 22:31:36 · 333 阅读 · 0 评论