07 2014 档案

摘要:哎,最近都在做图论,没有练DP,现在一遇到DP就不会了= =因为有合并这个操作,所以只要是首位相同的字符串肯定是能够构成good串的,那么只要统计在奇数位上出现的0,1的个数和偶数位数,随便递推一下就出来了#include #include #include #include #include #i... 阅读全文
posted @ 2014-07-31 21:49 acm_roll 阅读(165) 评论(0) 推荐(0)
摘要:把行和列都看做是点,小行星看成是边的话,那么这个显然就是求一个最小点覆盖集的问题。最小点覆盖 == 最大匹配#include #include #include #include #include #include #include #include #include #include #inclu... 阅读全文
posted @ 2014-07-31 17:50 acm_roll 阅读(264) 评论(0) 推荐(0)
摘要:最大独立点集 = 点数 - 最大匹配数注意这题因为是两两匹配,A匹配B B匹配A算两个,所以最大匹配数要除以2#include #include #include #include #include #include #include #include #include #include #incl... 阅读全文
posted @ 2014-07-31 17:19 acm_roll 阅读(179) 评论(0) 推荐(1)
摘要:唉,又是神一样的建模,表示完全想不到。题意是给你一块地,上面有空地,草地,障碍三种地形,然后让你在上面放机器人,机器人只能放在空地上。机器人会向上下左右四个方向发出攻击,机器人的攻击可以穿过草地但是无法穿过障碍。问你在不会是机器人相互攻击的前提下,最多能放多少个机器人。我觉得大致的思路应该是这样的,... 阅读全文
posted @ 2014-07-31 14:41 acm_roll 阅读(179) 评论(0) 推荐(0)
摘要:就是判断一下是不是每一个课程都能找到自己的代表人,做一遍最大匹配看看匹配数是否等于p即可#include #include #include #include #include #include #include #include #include #include #include #includ... 阅读全文
posted @ 2014-07-31 12:42 acm_roll 阅读(157) 评论(0) 推荐(0)
摘要:把每一个任务看做一个边,机器的模式看做是一个点,这个其实就是求一个最少点覆盖所有边即最小点覆盖集的问题,因为最小点覆盖集=二分图的最大匹配,所以问题转化成了求二分图最大匹配问题。第一次写二分图匹配,感觉建模还是相当困难的。#include #include #include #include #in... 阅读全文
posted @ 2014-07-31 11:26 acm_roll 阅读(164) 评论(0) 推荐(0)
摘要:以前做过一个类似的,不过这次的显然范围要比以前那个大得多,不过还是可以用相同的方式去解决。一开始想的无脑递推是如果i这个已经是humble number了的话,就把humble number的那些素数倍数全部标记为humble number,可是显然这样是不行的。但是可以反过来处理,用cnt[j]表... 阅读全文
posted @ 2014-07-30 15:05 acm_roll 阅读(183) 评论(0) 推荐(0)
摘要:建立虚拟的源点和汇点,因为忽略掉了容量下界之后会导致流量不平衡,所以对于每个u,v,u多出来的流量流到汇点,v不够的流量从源点补流#include #include #include #include #include #include #include #include #include #inc... 阅读全文
posted @ 2014-07-29 15:35 acm_roll 阅读(191) 评论(0) 推荐(0)
摘要:建模的思路大概是这样的,把房间当做点,门当做是边,如果从房间A能到房间B中间有一个门,如果锁在A这边那么A->B容量就是INF,B->A的容量就是1。攻击者如果在A这边的话显然就算你锁了门也是没有意义的,在B这边如果锁上是有意义的,所以算1个门,然后就很简单了,建立源点到所有攻击者点的边,容量为IN... 阅读全文
posted @ 2014-07-28 17:29 acm_roll 阅读(151) 评论(0) 推荐(0)
摘要:很裸的判断最小割是否唯一。判断方法是先做一遍最大流求最小割,然后从源点和汇点分别遍历所有能够到达的点,看是否覆盖了所有的点,如果覆盖了所有的点,那就是唯一的,否则就是不唯一的。#include #include #include #include #include #include #include... 阅读全文
posted @ 2014-07-28 16:05 acm_roll 阅读(280) 评论(0) 推荐(0)
摘要:给以一个图和两个点S,T,问你拿掉最少多少个点可以使得S和T不连通。输出点数并且输出拿掉的是哪些点,如果有多种方法就输出字典序最小的那个。这就是一个求最小点割集的问题。无向(有向)图G中,给定源点s和终点t,至少要删去多少个点(具体一点,删哪些点),使得s和t不连通。这个问题就是点连通度,也叫最小点... 阅读全文
posted @ 2014-07-28 14:38 acm_roll 阅读(206) 评论(0) 推荐(0)
摘要:不懂这个建模是什么原理,以后把二分图相关的东西看完再补上把= =#include #include #include #include #include #include #include #include #include #include #include #include #include u... 阅读全文
posted @ 2014-07-28 11:34 acm_roll 阅读(170) 评论(0) 推荐(0)
摘要:据说这道题目是个很经典的题,好多人测最大流算法效率都是用的这题,只会dinic的弱菜第一法果断tle了,把vector改成数组了时候5s过。下次什么时候学了isap在写一遍把#include #include #include #include #include #include #include ... 阅读全文
posted @ 2014-07-27 18:36 acm_roll 阅读(175) 评论(0) 推荐(0)
摘要:没有想到网络流还能解决这一类问题,完全想不到@_@一开始把所有的无向边制定任意方向有当做有向边看,然后统计每个点的入度和出度。以前有向图的欧拉回路判定是每个点的入读都等于出度,这样可以保证可以回到起点,现在在一些边可以调换方向的情况下,所有定点的入度和出度之差必定为偶数,因为调换任意一条边的方向都会... 阅读全文
posted @ 2014-07-27 15:22 acm_roll 阅读(170) 评论(0) 推荐(0)
摘要:要求输出每一条有流量的边的流量,数据范围不大我就用标号法水过了,输出的时候只要把所有大于0的流量的边输出就好。#include #include #include #include #include #include #include #include #include #include #incl... 阅读全文
posted @ 2014-07-27 12:34 acm_roll 阅读(239) 评论(0) 推荐(0)
摘要:时限卡的非常紧,做尽常数优化才过。。#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace... 阅读全文
posted @ 2014-07-27 10:30 acm_roll 阅读(168) 评论(0) 推荐(0)
摘要:注意数据范围,因为插座有100个,电器需要的类型有100个, 转换器有100个(最多200个类型),所以节点是400个,一开始RE了很多发#include #include #include #include #include #include #include #include #include ... 阅读全文
posted @ 2014-07-26 14:33 acm_roll 阅读(172) 评论(0) 推荐(0)
摘要:建模不难,就读入有点麻烦,无脑拍完dinic 1A happy~#include #include #include #include #include #include #include #include #include #include #include #include #include u... 阅读全文
posted @ 2014-07-26 13:50 acm_roll 阅读(119) 评论(0) 推荐(0)
摘要:首先二分最长的边,然后删去所有比当前枚举的值长的边,算最大流,看是否能满足所有的牛都能找到挤奶的地方#include #include #include #include #include #include #include #include #include #include #include #... 阅读全文
posted @ 2014-07-26 12:57 acm_roll 阅读(113) 评论(0) 推荐(0)
摘要:很裸的最大流问题,不过注意会有重边,o(╯□╰)o,被阴了WA了一发 还有就是要用long long#include #include #include #include #include #include #include #include #include #include #include #... 阅读全文
posted @ 2014-07-26 10:16 acm_roll 阅读(117) 评论(0) 推荐(0)
摘要:第一次做网络流,看着教材里面的题解做的= =用的是Ford,应该是最好理解的把,就是不断的找有没有从源点到汇点的增广路然后更新。建图真是难啊,而且感觉细节要注意的地方比较多,一开始没有考虑反向弧,WA了两发,sad...#include #include #include #include #inc... 阅读全文
posted @ 2014-07-25 15:14 acm_roll 阅读(158) 评论(0) 推荐(0)
摘要:找最长的其实是很裸的状态压缩DP,棘手的地方是要统计数量,其实只要再来一个数组存就好。不过代码比较长,细节要注意的地方毕较多,wa了很多发,还是要仔细啊用递推和记忆化搜索分别写了一遍#include #include #include #include #include #include #incl... 阅读全文
posted @ 2014-07-25 11:34 acm_roll 阅读(202) 评论(0) 推荐(0)
摘要:和那个编码是差不多的题,同样是分别用dfs和手写栈写了一遍,练手这次写的时候比上次思路更加清晰了。#include #include #include #include #include #include #include #include #include #include #include #i... 阅读全文
posted @ 2014-07-23 18:59 acm_roll 阅读(383) 评论(0) 推荐(0)
摘要:题意:一家商店在每个小时都需要至少di个人值班,现在有n个人,第j个人可以在fj开始上班,连续工作8个小时,问你要满足商店上班的条件至少需要雇佣多少个人原题连接:http://poj.org/problem?id=1275一道比较复杂的查分约束,一开始想着写出每个小时的约束条件,后来发现根本就是牛头... 阅读全文
posted @ 2014-07-23 16:22 acm_roll 阅读(214) 评论(0) 推荐(0)
摘要:和西安邀请赛那道题题目差不多,现在终于会手写栈了,自己琢磨了好久,真是感动TAT#include #include #include #include #include #include #include #include #include #include #include #include us... 阅读全文
posted @ 2014-07-23 16:09 acm_roll 阅读(320) 评论(0) 推荐(0)
摘要:水题,不过这里整理一下欧拉路的基本概念和判断方法。欧拉路:G为连通无向图,经过G每条边一次并且仅有一次的路径成为欧拉路欧拉回路:欧拉路的起点和终点为同一个点的路具有欧拉回路的无向图G称为欧拉图判定:无向图的判定:顶点的度全为偶数或者有且只有两个为奇数的图有欧拉路。如果顶点全为偶数,则可以以任意点为起... 阅读全文
posted @ 2014-07-22 15:19 acm_roll 阅读(255) 评论(0) 推荐(0)
摘要:囧,还是暴露出了对差分约束理解的不透彻。。。一开始根据开始和结束的关系建边,然后建立一个超级源点,连接每一个其他节点,先把这个点入队。本质上相当于把一开始所有的节点都入队了,然后做一遍最长路(最短路,怎么建边的怎么来),相当于把每一个点都作为起点做了一遍最短路,每个点的d取最大的那个。#includ... 阅读全文
posted @ 2014-07-22 11:07 acm_roll 阅读(166) 评论(0) 推荐(0)
摘要:做了这道题目感觉对差分约束的理解又加深了一些。关于差分约束最后要求的值是最大值还是最小值的问题,求最小值的时候可以反向建边求最短路,也可以转化成a-b>=x的约束然后求最长路。求最大值的时候可以直接求最短路,如果目标距离是INF的话就代表可以任意长。#include #include #includ... 阅读全文
posted @ 2014-07-22 09:43 acm_roll 阅读(423) 评论(0) 推荐(0)
摘要:嘛,虽然是一道水题+模板题,不过还是学到了很多东西的,记录一下。首先题目给出的不等式是小于,但是差分约束系统只能处理小于等于的情况,所以要转化成小于等于的进行处理。对于整数处理方法非常简单= =然后是找负环的情况,其实不需要考虑图连不连通,只要一开始就把所有的点的d置成0,然后都push进队列里面就... 阅读全文
posted @ 2014-07-21 16:18 acm_roll 阅读(365) 评论(0) 推荐(0)
摘要:第一道正儿八经的差分约束题有排成一列的n个点,首先告诉你每个点的值最多是多少(最少显然要大于0),然后告诉你m段i,j,k,表示第i个点到第j个点的值的和至少有k,问你总和至少为多少。要注意的是,告诉你的所有关系式都不要忘记建边,一开始漏了大于0的条件调半天o(╯□╰)o不等式的形式是a-b 2 #... 阅读全文
posted @ 2014-07-21 14:10 acm_roll 阅读(180) 评论(0) 推荐(0)
摘要:给你一个图和AB,问你从A到B的路径中,当每条路径的最长的边长度忽略的情况下,A到B的最短路.建立两个矩阵,一个记录最大长度,一个是最短路,同步更新即可.#include #include #include #include #include #include #include #include #... 阅读全文
posted @ 2014-07-20 21:14 acm_roll 阅读(250) 评论(0) 推荐(0)
摘要:f[i][j] = max(f[i][j],min(f[i][k],f[j][k]))#include #include #include #include #include #include #include #include #include #include #include #include... 阅读全文
posted @ 2014-07-20 20:41 acm_roll 阅读(164) 评论(0) 推荐(0)
摘要:感觉非常有意思,也不难想。f[i][j] |= f[i][k] & f[k][j]#include #include #include #include #include #include #include #include #include #include #include using name... 阅读全文
posted @ 2014-07-20 20:24 acm_roll 阅读(129) 评论(0) 推荐(0)
摘要:第一次做类似的题目,卡了好几天,最后看了爱酱的blog(http://blog.csdn.net/acm_cxlove/article/details/8679230)才会的,sad题意大概是这样,给你一个图,求起点1到N的最短时间,你有一双鞋子,可以加速,一次性花费0的时间行走M单位的路程,但是鞋... 阅读全文
posted @ 2014-07-20 13:55 acm_roll 阅读(189) 评论(0) 推荐(0)
摘要:其实就是枚举最高点和起点,然后以最高点为源点在两张图上分别做spfa。一遍最短路,一遍最长路。暴露出来的问题:思维不够清晰,代码能力还不够#include #include #include #include #include #include #include #include #include ... 阅读全文
posted @ 2014-07-17 16:09 acm_roll 阅读(159) 评论(0) 推荐(0)
摘要:#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typedef long ... 阅读全文
posted @ 2014-07-17 11:20 acm_roll 阅读(146) 评论(0) 推荐(0)
摘要:最短路水题,这次用SPFA写#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std... 阅读全文
posted @ 2014-07-17 10:31 acm_roll 阅读(132) 评论(0) 推荐(0)
摘要:其实本题非常的无脑,无脑拍完1A,写到blog里只因为TM无脑拍也拍了很久啊= =#include #include #include #include #include #include #include #include #include #include #include #include #... 阅读全文
posted @ 2014-07-16 19:57 acm_roll 阅读(165) 评论(0) 推荐(0)
摘要:很裸的最短路,不过节点数和边数都是1e6,直接dij肯定是不行了,稀疏图用heap优化一下就好o(╯□╰)o注意STL里面的优先队列是优先级大的(值大的)在前面的,一开始没注意WA了好几发,哎,太粗心了#include #include #include #include #include #inc... 阅读全文
posted @ 2014-07-16 17:15 acm_roll 阅读(208) 评论(0) 推荐(0)
摘要:这道题目真是充分显示了窝的智商低下,首先题目在有中文翻译的情况下看了半天没看懂,= =然后已知这题的分类是最短路了还是不会做,= =一开始想着在dij扩展的的时候就把最大运送值算好,不过后来发现正向运输和反向运输的值显然是不相等的o(╯□╰)o后来直接把每个城市作为起点dij了,反正n就一百,n^3... 阅读全文
posted @ 2014-07-16 09:40 acm_roll 阅读(309) 评论(1) 推荐(0)
摘要:先生成MST,然后对于MST上的每一条边,如果有其他边的长度与之相等,将其删去之后再求一次MST,如果和原来的cost相同,则不唯一#include #include #include #include #include #include #include #include #include #in... 阅读全文
posted @ 2014-07-15 19:12 acm_roll 阅读(176) 评论(0) 推荐(0)
摘要:题意:变形的约瑟夫环模型,每个人有一个数字a,从第K个人开始出列,如果数字是正的,就往后数a个人出列,如果书负数,就往反方向数。然后用最基本的线段树处理约瑟夫环的方法即可但是题目要求的是第x个出列的人的名字,x为1-N中约数最多的数中的最小的那个。这里需要求反素数,即不大于N约数最多的。写起来比较多... 阅读全文
posted @ 2014-07-13 20:35 acm_roll 阅读(161) 评论(0) 推荐(0)
摘要:Sad..这么水的题WA了无数发,题目要看仔细啊,留下来做个警告把#include #include #include #include #include #include #include #include #include #include #include #include using nam... 阅读全文
posted @ 2014-07-13 10:44 acm_roll 阅读(299) 评论(0) 推荐(0)
摘要:题目描述佳佳是个贪玩的孩子。一天,他正在跟凡凡玩“数石子”的游戏。佳佳在地上摆了N堆石子,其中第I堆石子有Ai个石头。佳佳每次都会问凡凡:“凡凡,请问从第I堆到第J堆,总共有多少个石子?”聪明的凡凡每次都能快速而准确地回答对。凡凡老是被问问题,心里有些不服,就对佳佳说:“佳佳,你还记得你问了什么问题... 阅读全文
posted @ 2014-07-12 21:33 acm_roll 阅读(627) 评论(0) 推荐(0)
摘要:给你一个数N,找出一个最小的可以拆分成N种乘积表达形式的数x比如N=2,6可以拆成2x3或者1x6两种,但不是最小的,最小的是4可以拆成1x4,2x2两种首先可以肯定的是x必然有N*2或者是N*2-1(完全平方的情况)个约数利用求反素数的过程求出约数为N*2和N*2-1个的最小的数#include ... 阅读全文
posted @ 2014-07-10 16:59 acm_roll 阅读(244) 评论(0) 推荐(0)
摘要:最裸的反素数问题。求不大于N的数约数最多的数是多少,如果有多个求最小值。设x的约数个数为g(x),如果有某个正整数a有对于任意0=t2>=t3>=....有了这些性质之后,就可以用dfs搜索质因子来求值了搜索过程如下:在保证性质1和2的情况下构造出一定长度的指数数组,指数数组的每一个情况就相当于一个... 阅读全文
posted @ 2014-07-10 16:54 acm_roll 阅读(289) 评论(0) 推荐(0)
摘要:题意: 给你一张图,和一些指定的点,找一个点使得这些指定的点到这个点的距离的最大值最小对每一个指定的点都做一遍BFS,更新到达每个点的距离,取较大值,然后扫一遍所有的点,找出最小即可。注意:不同于走格子,因为方向比较多,所以要在扩展节点的时候就更新vis数组,不然有可能导致某个点的距离因为重复更新而... 阅读全文
posted @ 2014-07-10 10:44 acm_roll 阅读(260) 评论(0) 推荐(0)
摘要:模拟类似贪吃蛇运动,问蛇头最少移动几格到1,1BFS好题,状态vis[20][20][16384]来存蛇头的位置,和后面每一节想对于前面一节的关系,四个方向用0,1,2,3存,需要14位#include #include #include #include #include #include #in... 阅读全文
posted @ 2014-07-04 14:23 acm_roll 阅读(195) 评论(0) 推荐(0)
摘要:题意:现在给你M个数字和另外一个数N(N#include #include #include #include #include #include #include #include #include #include using namespace std;int N,M,num[1000];in... 阅读全文
posted @ 2014-07-04 12:02 acm_roll 阅读(305) 评论(0) 推荐(0)
摘要:给你一个迷宫一个起点和一个终点,问你能否走T步刚好到达终点,不能重复走,并且只有4个方向显然这是一个dfs,虽然N最大只有7,但是裸的dfs复杂度还是太高了,因此要进行一些剪枝1.如果T比图上所有的可走点还要大,肯定是不可行的。这个可以避免dfs整张图。2.奇偶剪枝,有性质当前点(x,y)到目标点(... 阅读全文
posted @ 2014-07-02 11:03 acm_roll 阅读(152) 评论(0) 推荐(0)
摘要:/* 先将所有度数按从大到小排序,取最大的度数为N的节点,将其后面N个节点的度数减一,如果出现负数节点或者后面的节点数量不足N则可以判定无法构成图,重复这个过程,直到所有的度数都为零*/#include #include #include #include #include #include #i... 阅读全文
posted @ 2014-07-02 09:42 acm_roll 阅读(157) 评论(0) 推荐(0)