![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
乱搞
文章平均质量分 70
yang_bro
For my dreams I hold my life ,for wishes I behold my night. ---Nightwish
展开
-
hdu 4190 Distributing Ballot Boxes (二分)
一看到题目中间的那句“minimizes the maximum number”就想到了二分法。。。一般这种“最大值最小” 和”最小值最大“都能二分搞!ok(x)函数就是给定一个最大值x,挨个城市模拟分配box,维护每个box的人数不大于x,看能否在B个box内将其装好。#include#include#includeusing namespace std;int n, B,原创 2013-05-16 19:19:53 · 763 阅读 · 0 评论 -
HDU 4082 Hou Yi's secret(暴力)
直接6重循环就行了吧。。。判三角形相似直接从小到大枚举两向量夹角是否相等就行了。注意去重点跟三点共线就行了。。。#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#incl原创 2013-09-17 17:31:46 · 1287 阅读 · 0 评论 -
Codeforces 278C Learning Languages(并查集)
题意抽象出来就是求联通块的个数吧,然后添加最少边使图联通。注意所有人都不会任何语言的时候,答案是n而不是n-1。#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define FF(i原创 2013-10-15 00:37:30 · 1477 阅读 · 0 评论 -
Codeforces 350B Resort(bfs)
感觉是不是很久没做水题了,最近开始各种坑,不论是训练还是CF。。。加之要去长春赛区,感觉中大出题有点偏向CF风格?所以最近打算把CF上tags 带graphs的都做做吧。这个题挺水的,直接根据题意,枚举起点然后bfs找最长路就行了。讽刺的是,当时做这场DIV2的时候题都没看懂。。。#include#include#include#include#include#inclu原创 2013-10-14 23:52:07 · 1414 阅读 · 0 评论 -
Codeforces 116C - Party(dfs)
n个人,每个人之多有一个上司。“上司”关系具有传递性。求最少将人分成多少组,每组中的每个人的上司或者间接上司都不在该组。拿到题就用树的直径wa了一炮。。。正解是有向无环森林的最长路。从每个跟节点dfs,找最长的路就行了。#include#include#include#include#include#include#include#include#include#in原创 2013-10-16 22:55:41 · 1296 阅读 · 0 评论 -
Codeforces 131D Subway(找图上唯一环)
给定一个n个点n条边存在唯一环的联通图,求每个点到环的距离。找唯一环的话,用类似拓扑排序的方法,由于环上点的度>=2,所以bfs后未能遍历的点必在环上,然后就用dfs跟新距离就行了。#include#include#include#include#include#include#include#include#include#include#include#inc原创 2013-10-17 00:27:49 · 1505 阅读 · 0 评论 -
hdu 4490 Mad Veterinarian(bfs)
有三种物品,每个物品可以变换成一个或多个其他物品。这种变换关系是可逆的。然后求从初始状态转换到目标状态所需的最少步数。直接bfs就能搞了,记录状态的话小hash一发话就行了。#include#include#include#include#include#include#include#include#include#include#include#include原创 2013-10-18 23:37:44 · 973 阅读 · 0 评论 -
SGU 536 Berland Chess(状态压缩 + bfs)
在一个n*m的棋盘上,你有一个white king,然后还有一些(黑子的个数很少,所以用状态压缩来表示棋盘上还剩余哪些黑子。在bfs前先要初始化所有黑子状态下的受攻击的点,这个很恶心。。。初始化完了基本就是无脑搜了吧?#include#include#include#include#include#include#include#include#include#inc原创 2013-10-21 12:11:48 · 1069 阅读 · 0 评论 -
URAL 1752 Tree 2(树的直径+RMQ)
给出n个点的一棵树,边权都是1.然后q个询问,每次询问距离vi节点di的节点是什么,输出任意一个就行。最开始yy到了找出树的直径,每个点能走的最长路的终点必然是直径的某个端点。然后把直径上的点存起来,然后对于询问vi不是直径上的点的时候dfs搞,妥妥儿的TLE了。。。后面gxb搞出来了,用二维fa数组记录每个点到直径两个断点的路径。由于边权都是1,所以查询的时候可以用RMQ。。。学习了。。原创 2013-10-29 12:16:03 · 1310 阅读 · 0 评论 -
hdu 3681 Prison Break(dp || dfs)
15Y。。。不过离当时的 hdu4766 21Y还有一段距离。。。刚开始拿到这题就bfs TLE了一发。。。然后发现图中那些空地是可有可无的,于是可以把图中所有F G Y抽象出来建图,然后bfs。这个思路基本正解了吧?于是就wa了一整晚。。。拉着ljy yy了一晚上,总觉得bfs是可以转移所有状态的。。。但是就是wa到死。。。然后就发现了网上的人都是用dp来完成状态转移的。。为什么bf原创 2013-10-22 13:54:32 · 1170 阅读 · 0 评论 -
hdu 4781 Assignment For Princess(构造法)
构造一个n个点,m条有向边的图,需要满足两个要求:1.任意一对点对之间最多有一条有向边,且没有自环。2.保证图联通,m条边的边权严格属于[1, m]且互不相同,从任意点出发,经过任意路径后回到起始点,经过的边权总和是3的倍数。其中第二个要求似乎听上去很玄乎,其实可以一步一步的来:要同时满足1.2的要求,而且输入数据 m >= n + 3,那么也就是说,我们总是能轻松的先构造一个n个点n原创 2013-11-17 10:18:49 · 3984 阅读 · 4 评论 -
hdu 4784 Dinner Coming Soon(优先队列+spfa)
看完题目的开头,大概是个二维spfa,产生了此题可搞的幻觉。。。接着就看到了这句“But the matter is not so simple.”,次奥,看来是个三维的呢。。。接着就看到了这句“However, the problem is more complicated than imagine. ”,尼玛四维。。。好吧,四维spfa本质还是spfa吧。。于是就出现了在hdu各种原创 2013-11-18 19:19:09 · 1611 阅读 · 0 评论 -
UVA 12664 Interesting Calculator(spfa)
要你将x变换成y,一共有3×9中变换方法,每种变换有其对应的花费,然后求x-->y的最小花费,当最小花费不唯一时,求最小变换次数的解。类似于双调路径的题,用spfa进行状态转移就行了。不过类似于 ×1, +0这种变换是没有意义的,不用加入队列中了。#include#include#include#include#include#include#define REP(i, n原创 2013-11-07 18:57:01 · 1284 阅读 · 0 评论 -
zoj 3732 Graph Reconstruction(构造)
预备知识:Havel-Hakimi定理先跑一遍Havel_Hakimi算法判断是否有解。对于判断多解的情况,再跑一遍Havel_Hakimi,如果sort(p+i, p+n)排序后,从i分别向i+1, i+2...i+p[i].d连边时,如果i+p[i].d跟i+p[i].d+1的剩余度数相同,那么交换这两个点在剩下的图中的位置,就能得到两个不同的图了。坑:当边数为零的时候,也要输出两原创 2013-11-25 14:55:26 · 1567 阅读 · 0 评论 -
SGU 548 Dragons and Princesses(贪心)
坑爹:误以为王子可以marry中间任意一个princess,觉得不可搞,然后问了Lee,觉得优先队列也不好搞。。。反思:问了wintowanti,发现看错题了。。。其实只能marry最后一个princess。。。这样的话,用优先队列贪心就行了,每碰到一个di,将gi加入队列,每碰到一个pi,强制维护队列size #include#include#include#inclu原创 2013-11-11 22:50:32 · 1168 阅读 · 0 评论 -
URAL 1715 Another Ball Killer(大模拟)
在搞这种SB模拟题之前。。。一定要先把sample算明白。。。不然会很悲剧的。。。具体思路没什么好说的了吧,每次都找当前最大的连通块,当前没有连通块或者当前最大连通块小于2的时候(坑)终止就行了。注意题目中algorithm中的第三行的while...不是if...get_score(key, type)函数用于找当前主颜色为key的时候的最大连通块,type为0的时候找非主色调的最大块,原创 2013-11-26 21:07:10 · 1251 阅读 · 0 评论 -
hdu 4712 Hamming Distance(爆搞)
求2#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define FF(i, a, b) for(int i=a; i<b; i++)#define F原创 2013-09-09 11:14:39 · 1668 阅读 · 1 评论 -
UVA 12263 Rankings(拓扑排序)
给出一个n个数的序列1,然后有m个改动(a, b),在序列2中a跟b在序列中的相对顺序改变。求符合题意的序列2。题中说道如果一个数的位置不确定,则输出‘?' ,仔细想想,这种情况是不会存在的,因为在给定的序列1中,所有数都会有相对顺序,因此无论怎么修改数对的相对顺序,结果总是确定的。#include#include#include#include#include#include原创 2013-09-02 17:02:22 · 1093 阅读 · 0 评论 -
ZOJ 3633 Alice's present (STL set)
题意:给你n个数的数列a[n]和m个query, 对于每个query,输入l和r,从a[r] a[r-1]....a[l]遍历,输出第一个重复出现的a[i],若没有,输出“OK”。这个题有比较复杂的线段树解法,不过用STL的set可以3000+ms水过。。。#include#include#includeusing namespace std;const int maxn = 5原创 2013-05-10 14:37:33 · 831 阅读 · 0 评论 -
csust组队练习赛第二场A题:Yard(状态压缩)
今天做了下csust的一场比赛,这是A题,先是枚举每一行超时了一次,之后又wa了数次。。。最后还是艰难的ac了。。。同一道题,1A和10A会得到两种完全不同的喜悦感!题目:小oy是一位文艺青年,他园艺精湛,在自家后院里种满了美丽的线段树。他家后院是一个由n*m个方格组成的矩阵,有些方格上种有线段树。小oy认为:若每个格子的相邻四格(上下左右)的线段树加起来都恰好是偶数棵,那么后院就是美观的。小原创 2013-05-10 00:25:40 · 870 阅读 · 0 评论 -
hdu 4278 Faulty Odometer
根据题意计数的时候,每次碰到3和8都跳过,也就是说每八个数就进一位!不就是八进制数转成十进制数输出么。。。立马暴露其水题的本质了。。。注意4567对应八进制中的3456,应为3被忽略了,同理9对应7。#include#include#include#include#include#include#include#include#includeusing namespac原创 2013-05-23 20:47:26 · 749 阅读 · 0 评论 -
hdu 4282 A very hard mathematic problem
枚举Y和Z,确定X的范围,然后二分查找X就行。。。但由于二分查找写错,把队友坑了。。。对于二分答案来说,形如if(ok(m)) r=m; else l=m+1;的,一般while里面是(l#include#include#include#include#include#include#include#include#include#includeusing names原创 2013-05-23 20:43:08 · 660 阅读 · 0 评论 -
ZOJ 3710 Friends (map + set)
这是浙江省赛的F题,题意是给你n个人,m对朋友关系,如果两个人的公共好友超过k人,那他们可以成为新的朋友,问经过一段“”足够长的时间后“, 新产生了多少对朋友关系?刚开始看到这个题觉得很难。。。尤其是那个“a sufficiently long time”,不知到如可搞。。。于是先做了其他水题,再一看这题,发现可以用STL秒, 枚举每对未成为朋友的i和j,如果其公共好友超过k人,那么增加这对关系,原创 2013-05-12 10:06:15 · 2082 阅读 · 3 评论 -
CF 315B - Sereja and Array(树状数组)
水题,树状数组就行了。。。注意三种操作。。。#include#include#include#define FF(i, a, b) for(i = a; i <= b; i++)#define FD(i, a, b) for(i = b; i >= a; i--)#define CLR(a, b) memset(a, b, sizeof(a))#define CPY(a, b) m原创 2013-06-08 20:32:26 · 1226 阅读 · 0 评论 -
CF problem 166E Tetrahedron
找规律, f[n]跟f[n-1]和f[n-2]明显有关。。。#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define FF(i, a, b) for(i=a; i<b; i++)#defi原创 2013-07-08 13:23:06 · 1058 阅读 · 0 评论 -
CF 129B - Students and Shoelaces
n个人,m对关系。每次能删除当前所有只跟一个人有关系的人,删到不能删要搞多少次。。。map+set不用想什么事,无脑拍就行了。。。#include#include#include#include#include#include#include#include#include#include#include#include#define FF(i, a, b) for(i原创 2013-07-12 19:31:19 · 2198 阅读 · 0 评论 -
CF 224 B Array
给你n个数,求[l, r] 的一段数,a[l] - a[r] 一共含有k个不相同的数,且sum a[l, r] 最小的那一段。用队列维护当前数段中不同元素的个数即可。#include#include#include#include#include#include#include#include#include#include#include#include#incl原创 2013-07-17 14:12:33 · 832 阅读 · 0 评论 -
Codeforces 331A2 - Oh Sweet Beaverette (70 points)
贪心搞就行,用map记录每个数出现的下标,每次都取收尾两个。讲中间权值为负的删掉后取sum值最大的就行。#include#include#include#include#include#include#include#include#include#include#include#include#define FF(i, a, b) for(int i=a; i<b;原创 2013-07-18 11:21:02 · 1000 阅读 · 0 评论 -
Codeforces Round #192 (Div. 2) DBiridian Forest
题目描述给了很多坑爹的条件,其实是要想清楚一点就好办了:如果点(i, j)的人能够拦截到你,那他完全可以到终点等着你。。。所以就只需求出每个点到终点的最短路,ans就是所有到终点距离小于等于你到终点的距离的点的人数和。从终点开始做bfs,记录每个点的距离,ans每次加上当前点的人数值,在遍历到起始点的时候终止bfs就OK了。#include#include#include#inclu原创 2013-07-21 13:15:47 · 979 阅读 · 0 评论 -
hdu 4638 Group(离线线段树)
搞了这么久,终于做了一个离线线段树。。。。个人觉得,如果询问间会相互影响到的话,就用所谓“离线”来搞。。。这个题,考虑从左到右一个一个地加数,加到a[i]时,如果a[i]-1或a[i]+1有一个加过,总段数不变,都加过,合并两端,段数减一;如果都没加过,加入a[i]相当于新加了一段。将所有询问按右端点从小到大处理(一个大的区间,增加的元素会对小的区间造成影响);边处理边加数。#incl原创 2013-08-21 15:10:07 · 860 阅读 · 0 评论 -
UVA 11367 Full Tank?(bfs最短路)
n个点m条无向边的图,油箱有上限,每个单位的汽油能走1单位距离,每个城市的油价val[i], 对于每个query,求s到e的最小花费。dp[i][j]表示到达第i个城市,油箱剩余油量j时的最小花费。用bfs扩充节点,每个点拆成100个节点,时间复杂度还是可以接受的。#include#include#include#include#include#include#include原创 2013-08-15 13:59:54 · 1422 阅读 · 0 评论 -
337D Book of Evil
一棵n个点的树,上面有m个ghost,每个ghost有距离为d的影响区域。求一共有多少个点,能被所有ghost影响到。只要求出树上距离最远的两个ghost,如果一个点能同时被这两个ghost影响到,那一定能被suoyoughost影响到了!求树上距离最远的两个ghost,用类似于求树的直径的方法dfs就行了。#include#include#include#include#incl原创 2013-08-18 18:50:26 · 991 阅读 · 0 评论 -
hdu 4454 Stealing a Cake(三分法)
给定一个起始点,一个矩形,一个圆,三者无不相交。求从起始点->圆->矩形的最短距离。自己画一画就知道距离和会是凹函数,不过不是一个凹函数。按与水平向量夹角为圆心角求圆上某点坐标,[0, PI] , [PI, 2*pi]两个区间的点会有两个凹函数。所以要做两次三分才行。#include#include#include#include#include#include#include原创 2013-09-01 17:28:10 · 1035 阅读 · 0 评论 -
Codeforces 593D - Happy Tree Party(树链剖分)
#include #include #include #include #include #define lson l, m, rt<<1#define rson m+1, r, rt<<1|1using namespace std;const int maxn = 200020;const long long INF = 1e18;int n, m, total, edg原创 2015-11-06 15:00:52 · 866 阅读 · 0 评论