![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM/ICPC
文章平均质量分 73
神里凌华的舔狗
这个作者很懒,什么都没留下…
展开
-
hdu 6121(Build a tree) 瞎搞+麻烦
题目链接:点击打开链接题目大意:给定一棵有n个结点的k叉树,求所有子树的大小的异或和~~~多校补题日记~~~#include #include #include #include #include using namespace std;typedef long long llt;llt SIZE[100];llt L[100];//完全k叉树llt com原创 2017-12-18 17:13:15 · 188 阅读 · 0 评论 -
hdu1404 Digital Deletions (状压+dfs)
题目链接:点击打开链接博弈论刷题笔记~~~水题,不解释,这个题目我是用状压+dfs做的,不过同理也可以用SG函数做~~~话说博弈论中的数学思维题让我这种数学渣渣很头疼啊~~~Orz,Orz,Orz#include #include #include #include using namespace std;const int power[]={1,10,100,1000,原创 2017-12-04 18:19:05 · 197 阅读 · 0 评论 -
hdu 5965(dp递推,简单题)
题目链接:点击打开链接简单题,找到状态转移方程一下就能做出来了#include #include #include #include using namespace std;const int N=11100;const int MOD=100000007;const int C[]={1,2,1};//组合数计数char str[N];int dp[N][3][3];原创 2017-11-24 10:05:18 · 205 阅读 · 0 评论 -
poj 1085 (Triangle War)状压dp+记忆化搜索
题目链接:点击打开链接题意:两个人轮流在九个小正三角形组成的大三角形上面选取边,不能重复选取,如果一个玩家选取的某条边后能组成新的小三角形,则该玩家得分为新组成三角形的个数,且进行下一次选择,比赛结束后谁的分值高谁获胜。DP[status]表示的是当前局势下,该玩家到游戏结束最多可以得到多少分(取分差绝对值~~)题目本身不算难,麻烦的是把题目输出每条边对应到指定的压缩的原创 2017-12-03 20:48:55 · 197 阅读 · 0 评论 -
hunnu 11463 信封问题 (找规律||搜索)
题目链接:点击打开链接题目大意:全错排问题,指定了某些信封装的信的对于编号,求全错排的解~~~~刚开始拿到这个题目感觉无从下手,无法保存搜索过程的状态,遂找到对应答案相同的解的特点,打表找到了某个稀里糊涂的规律,2333#include #include #include #include using namespace std;typedef long long llt;原创 2017-12-20 15:11:30 · 764 阅读 · 0 评论 -
hdu 1809(A New Tetris Game(2)) 字符串hash+sg函数+DP
题目链接:点击打开链接题意很简单,用俄罗斯方块填充图形,有些格子有障碍物,最后一个放下方块的人取得胜利,懒得介绍了~考点是博弈论sg函数的用法~~这个题目难点在于是最多能放下10个俄罗斯正方形~50*50的布局使得单纯的状态压缩无法记录已经搜索过的值,但是初始状态能转化到的所有子状态数量又是有限的~所以这里要用到字符串的hash,我这里是直接用的字典树将状态离散化的~~附上代码~~#i原创 2017-12-11 19:39:21 · 290 阅读 · 0 评论 -
hunnu 10884(简单博弈论,记忆化搜索)
题目链接:点击打开链接此人输了的条件是无论怎么走:对方都赢了此人获胜的条件是有至少一种方式可以获胜,那么能获胜此人平手的条件是至少有一种方式平手状态压缩+记忆化深搜#include #include #include #include #include #define Alice 0#define Bob 1#define Win 0#define Lose原创 2017-12-02 17:42:41 · 222 阅读 · 0 评论 -
hdu 1590(Recursive sequence)矩阵快速幂
题目链接:点击打开链接第一次做快速幂的题目,题目很简单,就当做个笔记,题解就难得写了~~~#include #include #include #include using namespace std;typedef long long LL;const LL fast_mi[7][7]={{1,4,6,4,1,0,0},{0,1,3,3,1,0,0},{0,0,1,2,原创 2017-11-22 21:13:13 · 201 阅读 · 0 评论 -
完全正负大数模板(正负数加减乘除求模运算)~~~~~
原模板是从kuangbin的acm模板里copy过来的,根据博主的代码风格对于模板做了一些写法上的小调整,不过呢~因为博主本人有强迫症(ACMer通病)~~~所以经过一个下午+晚上的修改,将原来只支持无符号大整数的运算改成了支持有符号大整数的运算~~乘法除法挺好修改的,对于新的加法减法写了两个只支持无符号大数的加减法,根据运算符两边的符号位决定运算方式~~~顺便加上了大整数之间的除法运算和几个原创 2017-11-14 12:32:01 · 624 阅读 · 0 评论 -
hdu 6156 Palindrome Function(数位dp)
题目链接:点击打开链接根据本苣菜的总结经验。。。其实数位dp就是对于能转移到的状态,能记忆就记录解,不能记录就爆搜。。。。(一般来说就dfs数字长度那么多层。。。所以有时候就算代码写的差一点其实也能过。。。。)这次学习数位dp补上了上次ccpc选拔赛的那道题目(当时是队友做出来的。。Orz。。Orz。。实在是太弱了)对于下面代码有一点解释,在搜索的过程中,如果当前限制状态为false,向下能搜到的...原创 2018-02-09 15:14:42 · 153 阅读 · 0 评论 -
hihocoder 1035 自驾旅行 III(树形dp)
本蒟蒻一道树形dp做了一天,OrzOrzOrz.....菜得难以启齿~~题解的话这篇博客说得听清楚的~~~附上大佬的链接:点击打开链接同时附上本苣菜的代码吧~~#include using namespace std;typedef long long LL;const LL inf=0x3f3f3f3f3f3f3f3f;const int MAXN=1000100;st原创 2018-02-06 12:34:49 · 281 阅读 · 0 评论 -
ACM-ICPC 2018 南京赛区网络预赛 I.Skr (后缀数组+Manacher)
题目大意:求出一个字符串的所有回文子串网上大多数题解都是回文自动机的解法,上次在群里问了dalao们,说可以用后缀数组+Manache搞一搞,终于有时间了,于是就补了这道题~~~首先我们用Manacher算法求出该字符串每一个位置作为回文中点最大的回文长度然后用后缀数组求出其每一个后缀的height值对于每一个位置,我们枚举这个位置能够形成了哪些和前面后缀能形成的不同的回文子串...原创 2018-10-02 23:07:17 · 225 阅读 · 0 评论 -
牛客多校第一场 I Substring (不同子串的个数)
题目链接:嘤嘤嘤题目大意,求一个字符串内不能通过完全映射对应到的子串的数量因为字符串中只存在a,b,c三种字符,所以我们可以通过枚举(3!)个全排列,然后通过后缀数组常用搞法将字符串通过不同的映射得到的串通过特殊字符连接起来因为按照题意,如果两个字符串同构,那么他们两个一定能够通过一种映射转化为两个串相等然后我们就可以把问题转化为一个字符串有多少个不同的子串的问题对于原字符...原创 2018-09-04 17:36:18 · 439 阅读 · 0 评论 -
牛客网多校第一场 E Removal (DP)
题目链接:点击此处题目大意:一个长度为n的数组,问其删除了m个字符后,所有不同的子串有多少个首先我们来看看这个题目的简化版:51 Nod 1202 子序列个数题目很裸,就是问一个数组子序列的个数我们用dp来解决这个问题,dp[i]表示前i个字符能够组成多少个不同的子序列首先每次对于一个数的加入如果这个数没有在前面出现过如果我们选择这个数,显然这个数可以和前面所有的子...原创 2018-09-04 15:18:06 · 132 阅读 · 0 评论 -
BZOJ- 3669 魔法森林
LCT打卡了,啦啦啦#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <vector>using namespace std;const int MAXN=55555;const i...原创 2018-08-02 23:28:35 · 168 阅读 · 0 评论 -
CSU - 2128 Wells's Travel Plan
倍增算法~~#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;//这里我们可以采用倍增算法+dpconst int inf=0x3f3f3f3f;const int MAXN=2e5+100;...原创 2018-08-03 16:28:40 · 197 阅读 · 0 评论 -
hihocoder 1337: 平衡树·SBT (伸展树Splay或者树堆Treap模板题)
题目链接:http://hihocoder.com/problemset/problem/1337模板不多解释,我是写的伸展树,直接附上代码#include <cstdio>#include <cstring>using namespace std;#define LEFT 0#define RIGHT 1const int SIZE = 111111...原创 2018-07-18 21:46:42 · 177 阅读 · 0 评论 -
csu 1994 Drug (lucas定理+容斥原理)
题目链接:点击打开链接附上代码,这个题目有一个坑的地方就是n=r=1的时候,我没有特判(请教了中南Xu Shu大佬了还是没有找到错误),结果wa了一天(qaq,附上本菜鸡的代码)#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using nam...原创 2018-04-19 20:25:14 · 173 阅读 · 0 评论 -
2018湖南省多校第一场解题报告(CSU OJ)
A Artwork :并查集倒着推//题目原型,删点之后图上还剩下多少个联通块#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <vector>using namespace std;const int MAX...原创 2018-04-03 20:34:30 · 266 阅读 · 0 评论 -
计蒜客 The Game of Life(南宁区域赛现场赛重现)瞎搞
题目链接:点击打开链接这是去年南宁区域赛的一道铜牌(银牌)题目,现场的时候两个队友做这个题目,没有做出来~~最近在补题,于是找到了这道题目,做了好些日子,本来以为这道题目是要什么特殊的算法(矩阵快速幂保存状态之类的,OrzOrz太弱了难以启齿),然后突然发现这个题目就是一个瞎搞题目,只不过过程中要减枝(大佬们嘴中的送分题~~)代码意思很简单~~我就不多解释了,溜了溜了(留下了没技术的眼泪,Orz~...原创 2018-02-22 18:48:25 · 557 阅读 · 0 评论 -
对于floyed算法过程的理解
floyed应该是大家接触最短路首先了解到的算法,简单的四行代码,却能把所有点对之间的最短距离求出来,相信很多人刚刚接触到这个算法时,没有深刻理解算法的原理~~~我写这篇文章是源于南宁区域赛热身赛的一道题目,由于对此算法理解不透彻,比赛时候没有能将一道变形题做出来,于是比赛结束后再次思考了这个算法,得到了一些收获,于是写下了这篇文章~~for(int k=1;k<=n;k++) f原创 2017-11-29 10:54:35 · 852 阅读 · 1 评论 -
ural 1101(Robot in the Field )表达式求值
题目链接:点击打开链接很水的模拟题,英语水平不行~~刚开始题目里面的invert没看懂,然后一直WA~~~OrzOrzOrzOrz题目给定一个[-N-N]*[-N*N]的场地,题目中有一些拐弯点,根据boolean表达式的值判断向右转还是向左转~还有一些点,能使机器人的某个寄存器指令翻转(就是这里题意读错了,Orz),刚开始机器人的全部指令为空,第一次遇到某个指令时候对应的寄存器打开,原创 2017-11-12 10:33:15 · 195 阅读 · 0 评论 -
HDU - 2457 DNA Repair
题目链接:点击打开链接最近在练习AC自动机的专题,做完后搜题解看到大家都是用AC自动机加上DP做的。我是跑的bfs过的,虽然说方法不算太好,但是身为一股清流,抱着分享一种新的方法的态度写了这篇文章。不过话说回来,在AC自动机跑是一个状态的转移,在某个角度也可以看为一个图论的最短路变形的问题,我这里的写法和别人写法相比就相当于Dijstra相对于spfa~~~~~~#include #in原创 2017-09-13 16:50:11 · 214 阅读 · 0 评论 -
CTU Open Contest 2016 Suspicious Samples
题目链接:点击打开链接#include #include #include #include #include using namespace std;const int MAXN=100010;typedef long long llt;int segTree_max[MAXN<<2];int segTree_min[MAXN<<2];llt segTree_sum[MA原创 2017-08-23 21:14:37 · 550 阅读 · 0 评论 -
CTU open Contest 2016 Tree Stands
树上计数问题,树上DP原创 2017-08-15 21:46:17 · 493 阅读 · 0 评论 -
m-ary Partitions
给定一个数n,问把其拆分成若干个给定数m的次方数 例如,给定m=3,n可拆分为,0(3^0),3(3^1),9(3^2)...... 完全背包变形,其中dp[n][k]表示和为n,其中最大的数不超过m^k的组合方法数 dp[n][k]=dp[n][k-1]+dp[n-m^k][k] (n>=m^k)。#include #include #include #include原创 2017-08-17 10:19:50 · 686 阅读 · 0 评论 -
Lost in Translation
题目链接:http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11739贪心思想,建立分层图,对于层次不同的结点,层次靠近源点的在前面,对于层次相同的结点,费用小的放前面直接用priority_queue建立一个有层次的堆,然后不断更新费用#include #include #include #incl原创 2017-08-17 20:03:46 · 504 阅读 · 0 评论 -
hdu 6166 Senior Pan (多校第九场)
题意:给你一张图,给定若干个点,求这些点对之间距离最小的那一对的值。点击打开链接脑洞大开的题目,我们可以这样思考,每次将给定点分为两个集合,然后用Dijstra求出两个点集之间的最短距离,集合之间的最短距离就是答案。因为要使给定点的每一对都能被划分到不同的集合中,所以根据该点二进制的第i位为依据划分两个集合,跑20遍dijstra就能的出答案。//Time Limit: 12000/6原创 2017-08-23 15:11:53 · 332 阅读 · 0 评论 -
Kattis - brackets
题目链接:点击打开链接校赛热身赛题目,省赛打完了回头再弄懂了这个题目。题目大意:给定一个括号串,最多翻转一个区间,问该括号串是否能平衡。学校oj是用线段树就会超时,因为可能查询次数比较多,复杂度为o(n^2*log n)(其实实际运行时候常数时间很低的),用RMQ就能过,复杂度为o(n^2),在Kattis上线段树和RMQ都能过。大抵上这类关于括号匹配的区间查询问题,都能用模拟栈的原创 2017-09-05 19:38:08 · 414 阅读 · 0 评论 -
HDU 6092 ( Rikka with Subset )
点击打开链接 N个数,和为M,已知其子数列为x的和的个数,还原原数列 多重背包问题,逆向背包倒推,找到B[i]数列中第一个不为0的数,然后这个数一定是原数列中的某个数,在数列B[]中删去此数 对于j,i #include #include #include #include #include using namespace std;typedef long原创 2017-08-09 19:18:16 · 234 阅读 · 0 评论 -
Timo's mushrooms CSU - 1991 (第十三届湖南省赛热身赛题)
题目链接:点击打开链接题目大意:提莫埋了很多蘑菇,有些蘑菇之间有一条有向边,u->v,若u爆炸则v爆炸,而且每个蘑菇只能引起与之相连的一个蘑菇的爆炸(当时题目意思读错,以为是求单向联通分量,然后大错特错~~~~),就是求有向图上的最小路径覆盖,不过因为原图可能存在环,所以要先进行缩点后在跑二分匹配求最小路径覆盖。//wait...wait...这个是DAG上的最小路径覆盖,所以如果不进行缩原创 2017-09-05 12:05:37 · 343 阅读 · 1 评论 -
hdu 4511 小明系列故事——女友的考验
题目链接:点击打开链接AC自动机上的最短路问题,题目要求所经过结点升序,且规定某些线路是不合法的,对应于AC自动机上的非法状态。这道题目大部分题解是用DP来做的,而我是用Dijstra变形来解决这个题目的(同上篇文章)。做了好几天的AC自动机的习题,对于AC自动机还是有了一些理解,AC自动机在某个角度来看就是一张有特殊限制的图,每个结点代表不同状态,有不同的状态转移方程~~~~~/原创 2017-09-14 16:12:23 · 309 阅读 · 0 评论 -
Kattis - dotsboxes (二分图的网络流)
题目链接:点击打开链接刚开始拿到这个题目的时候以为是高斯消元法,对于每个方格四周的边的数量设未知数解方程,后面仔细想了想,缺乏可行性,时间复杂度和空间复杂度太高了。后面终于想到网络流上面去了,可是对于每个点都要控制流量,而且每条边的流量又被多个点控制,然后越想越迷糊。想了两天了终于意识到这个是个二分图,然后二分图根据每个点的颜色,选择与源点或者汇点建边,点与点之间根据能否增流建边。(写的很原创 2017-09-07 18:57:34 · 390 阅读 · 0 评论 -
poj 2106 Boolean Expressions(字符串bool表达式求值)
自创奇葩递归写法~~~23333点击打开链接#include #include #include #include #include using namespace std;//优先级~//1.括号//2.NOT//3.AND//4.OR0//5.从左往右(!是从右往左~)string replacesub(string exp,int s,int ls,strin原创 2017-11-11 19:18:38 · 489 阅读 · 0 评论 -
hdu 2639 (Bone Collector II) 0-1背包的第k优解
最近在刷背包九讲,背包的K优解是论文的最后一个内容,于是兴致冲冲的在网上找题目做~~~~论文原文:其基本思想是,将每个状态都表示成有序队列,将状态转移方程中的max/min转化成有序队列的合并。这里仍然以01背包为例讲解一下。首先看01背包求最优解的状态转移方程:F[i; v] = maxfF[i原创 2017-10-16 20:57:03 · 177 阅读 · 0 评论 -
伸展树模板小结(Splay Tree)
首先推荐网上看到的四篇好文章,便于大家对于伸展树有一个直观的的了解: 伸展树的旋转和伸展操作:点击打开链接伸展树的初步应用—解决区间问题:点击打开链接伸展树解决区间问题:点击打开链接伸展树结点的SIZE域的应用:点击打开链接 下面是 kuangbin 的 BZOJ 1500 维护数列的模板~个人加上了一点自己的理解,对于模板多余的地方也有些修改~~~ //...原创 2017-11-09 09:02:05 · 393 阅读 · 0 评论 -
HDU - 3896 Greatest TC
题目链接:点击打开链接题目给定一张无向连通图,q个询问,问删除指定某条边或者某个点后,给定两点是否连通。首先,对于删除边的情况进行讨论,如果删去的边不为割边,那么删去这条边图仍然连通;如果该边是割边,那么只有在给定两点恰好在割边两边,那么删除这条边后两点不连通。在dfs生成树上就是表示为给定的两个点,其中一点为割边下端点的儿子,另一点不是,则删去该边两点不连通。其次,对于删除点的情况进原创 2017-10-31 11:52:42 · 290 阅读 · 2 评论 -
POJ 3376 Finding Palindromes(Trie+EKMP)
题目链接:点击打开链接题目大意:给定n个字符串,可重复地取两个字符串,一共n*n种可能的组合,问有多少种组合能构成回文串。首先给定两个字符串,若连接在一起能组成回文串,那么让短的字符串反转后和长的字符串从两端开始做匹配,如果能完全匹配,且长字符剩余的字符恰好构成一个回文串,那么这两个字符串就能组成一个回文串。例如:abcc ba (从串首开始匹配) , ccba ab(从串尾开始匹配)原创 2017-10-06 13:53:24 · 284 阅读 · 0 评论 -
hdu 4300 Clairewd’s message(KMP)
题目链接:点击打开链接给定一个从明文到密文的转换规则,给定一个由密文+明文组成的字符串,密文和明文不重叠。但是给定的明文可能是不完整的,且明文和密文的长度未知,求补全最少的明文后,前面的密文和补全后的明文完全相同。因为密文一定是完整的,所以明文可能的范围为[(L1+1)/2~L1),然后把这部分经过转换后连接到原字符串的末尾,中间用特殊字符隔开~~~然后next[tot]就是明文和密文原创 2017-10-03 22:45:39 · 197 阅读 · 0 评论 -
poj 2406 Power Strings
题目链接:题目大意:给定一个字符串L,已知这个字符串是由某个字符串S 重复R 次而得到的,求R 的最大值原创 2017-09-20 17:38:07 · 164 阅读 · 0 评论