自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 Codeforces Round #385 (Div. 2) E

二分答案+状压DP。状态转移写崩了,查了好久,对于每一个点是可选可不选的,我漏了一个不选的状态,wa了好久。思路:重复的个数肯定是n和n-1,因此二分n,对于每一个n进行一次状压DP。在此之前先打一个f数组用于以后的状态转移。#include #include #include #include #include #include using namespace std;

2016-12-18 12:10:41 355

原创 Codeforces Round #379 (Div. 2) E

对于一棵树,只有两个颜色,每次可以将一个颜色相同的联通块染成一个颜色,求最少的染色次数。对于每一个颜色相同的联通块缩点,结果得到一个黑白相间的图,这时找出这个图的直径,方法是先搜到最深的一个点以后,将该点作为根在搜一遍找到深度得到的就是这棵树的直径。最后从中间开始不断向两边变色,因为直径总是最长的,所以两边的分支一定在直径变色完都变为一个颜色了,因此只要求直径上的变色次数就行,结果就是(len

2016-11-17 00:00:47 380

原创 Codeforces Round #379 (Div. 2) F

第一次补完CF题。首先看到b[i] = a[i] & a[1] + a[i] & a[2] + ... + a[i] & a[n], c[i] = a[i] | a[1] + a[i] | a[2] + ... + a[i] | a[n]。 联想到a[i] + a[j] = a[i] | a[j] + a[i] & a[j]。因此b[i] + c[i] = n * a[i] + sum。推

2016-11-16 23:51:51 282

原创 HDU 5934

2016CCPC杭州赛,3题铁,B题当时出不了,太水了。对每一块强连通分量(SCC)缩点,记录每一个点的入度,对入度为0的点的耗费求和为结果。代码:#include #include #include #include #include #include #include using namespace std;const int maxn = 1005;vector

2016-11-05 23:31:41 398

原创 HDU 5889

青岛网络赛,当时不会做,可想我有多水。最大流即最小割。要阻断的是最短路,因此其他路忽略掉就行,先跑一遍最短路,删除最短路以外的路,跑一遍最大流即最小割。代码:#include #include #include #include #include #include using namespace std;const int maxn = 1010;const int

2016-11-05 11:38:33 346

原创 UVALive 3645

(大概有n久没写博客了,懒癌又犯了。。。PS上个周的个人赛这个周周末才补,我要懒死了。。打了一个周的口袋妖怪白金,还被某康嘲讽了好久。。开始打有难度的个人赛了。第一场个人赛,XJBG暴过去一个题,网络流从来没做过,而且也建不出图来就放弃了,现在补出来了。其实只要建出图来就很好做了。题意:给你一个起始城市,结束城市,结束时间,并要求必须从起始城市开始并在结束时间之前到达结束城市。给你一堆

2016-11-05 11:34:08 300

原创 HDU 5918

(好久没写博客了,我要懒死了。。。kmp计数。用b去匹配a,b数组的最后一个数用一个独一无二的数表示就相当于第m+1个数匹配失败,然后就会继续匹配了,wa就wa在匹配完一个之后继续匹配上,这里要特别注意!代码:#include #include #include using namespace std;int n, m, p;int a[1000005];int b[1

2016-10-08 17:40:34 366

原创 UVA 10054

将颜色抽象成点,珠子抽象成边,建图,判欧拉回路并打印,记住欧拉回路的打印需要回溯打印。代码:#include #include #include #include using namespace std;int n;int vis[100];int g[100][100];int d[100];int f[100];pair ans[1005];int nn;i

2016-09-06 16:54:34 431

原创 2016ACM暑假集训总结

暑假集训总结从大一开始练ACM也有一年了,这一年也是收获了很多,不管是友谊,算法知识,对知识的认识态度,以及学习效率都有了不小的提升,在过去的一年里,有过迷茫有过懵懂,也想过放弃,但是最终都坚持了下来,或者是说也最终从低落中走了出来,在经过暑假集训的升华,最终也对ACM有了一定的认识,也掌握了练ACM得一些技巧方法。从开始的比赛一个题做不出来,到勉强做出来,再到最后不停地刷题,积累知识,到

2016-09-05 21:43:28 1084

原创 UVALive 7361

矩阵快速幂。别人都做出来,我没做出来,知识点不够,仍需扩充知识面。求2^48以内的对10^9取余的斐波那契数列。思路:|an    |  =  |1 1| * |an-1||an-1|  =  |1 0| * |an-2| 因此可以看出用这个矩阵不断地乘并用快速幂优化就能很快得到2^48以内的斐波那契数列,这道题就很容易出来了。代码:#include #inc

2016-09-05 19:27:42 271

原创 Gym 100685G

好坑啊。。。。查询竟然有从自身到自身。。。还是年轻啊。。题意大致是给你一个有向图,然后给你一些查询,问你是否能从x点到y点,题意保证这个图的基图是一个树。思路:首先因为将任何点作为根都可以,为了方便就让节点1为这棵树的根节点,而后将该树每一个节点的深度(即层数)储存到dep数组里面,还有根到这个点经历过多少个正向边和反向边,分别用1和-1保存在dp数组里,这样如果u能到v,设他们最近公共祖

2016-09-05 18:47:08 418

原创 UVALive 6801

很水的dp,和学长推了一下午,也是够了。。dp这个东西一下想明白了就发现很水,重要的是想不出来- -!第一维代表当前走到了第几步,第二维代表剩余几个1。状态转移:dp[i][j] += dp[i - 1][j + 1] * (j + 1)(代表前一个选了1,有j+1种选法);dp[i][j] += dp[i - 1][j - 1] * (n - j + 1)(代表前一个选了0,有n-j

2016-08-24 21:25:05 374

原创 UVALive 6697

字符串dp。挺水的,场上不敢做。。。只能说还是菜,好多次都因为不敢开题,错失了翻盘的机会。。给你一个母串,让你拿一个子串来匹配,匹配成功+8分,匹配失败-5分,子串上添加字符-3分,删除字符-3分,每一个连续的添加或删除都要减掉4分,求最多得分。。第一维是母串走到了第几个,第二维是子串走到了第几个,第三维分别是0代表匹配上了,1代表添加字符,2代表删除字符。初始化很重要!!!!查了

2016-08-24 21:03:40 291

原创 HDU 5833

2016CCPC网赛第二题。现场没出,好可惜。。当时找到书上的板子了,不敢抄怕查重,然后就手写了一个高斯消元,数据量也挺小没用模版,直接模拟的,结果最后一直wa,找了一晚上原因竟然是数组开小了。。数组开小了,一直wa。。。不明嚼栗。。蓝书161页原题。。附代码:#include #include #include #include #include using names

2016-08-23 21:47:08 346

原创 UVALive 6625

状压dp。深搜能过,大神搜得过,反正我是各种姿势都试了就是过不了,参考了退役大神的代码。。第一次写状压dp。。首先题意,向格子里填数,每个格子里面的数大于等于右边的,大于下边的(如果有的话)。给你每行多少个数字,由此可以打出每列有多少个数字从左向右转移dp[i][s],i代表当前走到第几列,因为上下是严格递增的,因此可以用整数s表示一个整数集。当前面一个整数集大于后面时,并且两个整数集

2016-08-23 20:36:42 745

原创 URAL 2070

水题大作战。一个人认为一个数是质数,是好的,合数是不好的,一个人认为这个数的因子个数是质数的是好的,因子个数不是质数的是不好的。求这两个人在l和r之间的数观点相同的数的个数。首先质数两个人都觉得好,因为质数的因子有两个,是质数。再就是合数不是某个质数的n次方的数,两个人一定认为都不好,因为如果一个数不是某个质数的n次方,那么他的因子个数一定是大于二的偶数个。最后一种情况,就是这个数是某个质

2016-08-23 20:26:31 500

原创 UVALive 6859

凸包模版。要求将所有点严格包含在内,并且只能走格子的边和对角线。两种思路:第一种比较好理解,就是将每个点周围四个点,画在图上,去重后套模版,复杂度较高O(4n);其实,将每一个点严格包含在内就是将它旁边的点连接起来,这样同一方向的边与凸包所求出的边是相等的只不过严格包含后需要在结果加上转四个方向时的总长度4 * sqrt(2)就会得到结果。代码:#include #inclu

2016-08-18 18:34:45 364

原创 HDU 5514

容斥原理。青蛙跳石头,给出青蛙跳的步数,青蛙所能跳的石头就是第i只青蛙与总步数的最大公因数的倍数,即gcd(a[i], m) * k, k = 0, 1, 2...这样就会产生重复跳过的石头,用容斥原理来解决。一开始先用vis[i]来标记所有走过的m的因子,num[i]记录前面的重复数。即最后每一个因子对应的经过个数num[i] - vis[i];看了好久才懂得。。感觉离散白学了。

2016-08-17 21:30:09 297

原创 HDU 5510

KMP+滑动数组。给你n个字符串,让你找编号i最大的一个字符串使得前i-1个字符串中至少有一个不是他的子串。思路:左右一个i,一个j,当s[i]是s[j]的字串时++i,否则++j,并且记录当前j,当i==j时,两边都加。记得用kmp优化。。代码:#include #include #include #include #include using

2016-08-17 20:12:08 307

原创 POJ 3666

离散化+dp,好神奇的做法,将一个序列a变成b,并要求每一个元素|a[i] - b[i]|的绝对值尽量小,求最小的绝对值之和。。如果能想到离散化,这就是一道非常水的题目了。。因为元素最大为INF,因此不能作为下标,如果将所有值离散化,就可以进行状态转移了。首先将原来数组排序去重后存到一个t数组里,然后dp[i][j]中的第一维i代表当前到了第几个元素,j表示最后一个数的大小,因为要满足

2016-08-09 20:56:22 505

原创 HDU 3236

今天比赛又血崩,一道弱智题硬生生写成了模拟,最后超时。。昨天那道kmp+dp依旧是没做出来。。今天比赛上的I题,一直没做出来,自己还是很烂啊,一道很水的dp吧,大神都秒A,我这个渣渣整场比赛硬是没做出来。这道题卡的内存,因为状态转移时,只需要记录前一个状态就行根本不需要全部都记录。。涨姿势了。题意虐狗:你有v1,v2的钱,必须分开使用,给女朋友买礼物,其中有一些礼物女朋友必须要,如果当

2016-08-05 20:01:55 429

原创 HDU 3689

额,今天下午又被血虐,看了好几天的kmp总算是看懂了,以前看的不够用心,认真看了后发现还是挺简单的。这道题挺水的吧,以前做错过的那道CF死活做不出来了,先把这一道水的贴上来。首先说说这个题意,给你将n个字母打出来的概率,让你求打出一个字符串长度为m的串,其中串s为它的子串的概率。先特判不可能组成的,再就是dp[i][j],第一维i代表当前达到了第i个字符,第二维代表当前到达了s串的第j

2016-08-04 21:14:32 574

原创 UVALive 7512

EC_Final额。。。要是我在去年的赛场的话,估计就哭死了。。。典型的脑洞不够。。题意给单身狗一个影院,任意在同一行上的两个人不相邻,可能有坏掉的座位,求最多和最少坐多少人。最多肯定就是能做就做,最少就是下图,S代表人,B代表坏掉的椅子,.代表空位这么几种:BSB、B.SB、B.S.B、B.S.SB、B.S..SB、B.S..S.B。因此当连续座位数 sum % 3 ==

2016-08-01 18:59:34 601

原创 HDU 5441

给你一个无向图,给出m条边,q个请求,要求求出有多少种游玩的方式,在相同的两个城市之间往不同的方向走即A->B与B->A看做是不同的方式,问一共有多少种游玩方式。这个题。。第一眼看到无向图城市之间有多少个联通的就应该想到并查集,还是练得不够。。。将请求和路都按照从小到大排序,i代表当前是第几条路,j代表当前是第几个请求,当第i条路小于第j个请求时就,j不变,增加i,读取边,更新并查集,

2016-08-01 18:44:58 363

原创 POJ 3169

题意:一群奶牛,按1~n的顺序站好,站位可以重叠,奶牛与奶牛之间可能有最大或最小距离限制,让你求1号奶牛和n号奶牛之间的最大的距离,没有输出-1,正无穷输出-2。用差分约束。。。一开始不知道这是啥,看过别人的博客介绍以后就懂了,通俗的说给你一个如下的三角形假如说 b - a 然后利用这道题给出m1个 d[v] - d[u] = w -> d[u] - d[v] = 0-> d[i]

2016-07-29 21:59:02 305

原创 HDU 5708

看到很多人都有博客,据说对打ACM和有帮助,决定自己以后也写博客了。。先拿道博弈题开刀。今天做了一道博弈题,以前一直不知道博弈是个什么东西,今天问了下大神学长,差不多就是先打个表,然后找规律。从最右下角开始,最右下角设为'.',在此点左边和上边以及左上k个单位的点都是'*',即在此点是必胜,而如果一个点它能走的所有方向都是必胜点,那么他走完这一步后,对手就在必胜点上,因此这个点为必输点

2016-07-29 21:33:45 1220 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除