
poj
文章平均质量分 76
Flynn_curry
这个作者很懒,什么都没留下…
展开
-
牛客oj 习题9.2神奇的口袋(DFS)&& poj2362 Square(DFS)
最基础的暴搜,连枝都没剪都能过,好水啊。。。#include <cstdio>#include <iostream>#include <algorithm>#include <string>#include <cstring>#include <vector>#include <sta...原创 2020-03-19 10:13:44 · 263 阅读 · 0 评论 -
poj2488 A Knight's Journey(DFS+国际象棋坐标系)
这题其实只有一点需要注意,就是国际象棋坐标系的选取。国际象棋有个特点,标号的时候行为数字1~8,列为字母A~H,行从上到下为纵方向,列从左到右为横方向。不同于一般的坐标系,上个图就明白了:剩下的就是普通的深搜了。#include <cstdio>#include <iostream>#include <algorithm&...原创 2020-03-18 12:32:10 · 366 阅读 · 0 评论 -
牛客oj 习题2.11坠落的蚂蚁(模拟) && poj1852Ants(贪心)(蚂蚁问题)
两题都是蚂蚁爬杆问题。。所以放在一起了。第一个是复试题,因为不同蚂蚁撞在一起交换速度,所以分情况,一动一不动相当于接力,两个相向相当于换位。所以对于速度为0的蚂蚁来说,如果左右两边都有一只朝自己走的蚂蚁,那方向不变但初始位置变成最后交换位置的蚂蚁初始位置。仔细想想(想的过程就不说了)就可以变成首先计算出左右两方各有多少蚂蚁,把能够遇见的蚂蚁当成同归于尽,不动蚂蚁落下的时间就是未同归于...原创 2020-02-18 18:17:42 · 819 阅读 · 0 评论 -
poj2377 Bad Cowtractors(最大生成树的Prim和Kruskal做法)
http://poj.org/problem?id=2377题意:约翰雇Bessie来在自己的仓库之间设计一个通路网络,约翰已经找出仓库之间修路的成本,要求做一个最小成本的通路网络。但是这货居然不想给钱,Bessie就看这智障不爽了,反正不给钱,索性给你设计个成本最大的网络,忙活去吧= =,求最大网络的成本。思路:最大生成树。这题n的数量不是很大,所以用两种做法都做了一下。Pr原创 2016-11-14 21:42:15 · 415 阅读 · 0 评论 -
poj2457 Part Acquisition(dijkstra||spfa+路径记录优化)
http://poj.org/problem?id=2457题意:m个关系n个货物,关系中的a b代表可以拿货物a换取货物b,构造一条最短路,起点1终点n,输出交换次数和路径。思路:看了这个教程。注意是有向图。dijkstra和spfa事实上是一个思路,都是找到最短路后,沿着这条路根据找路时存储的前驱来存储相应的节点。记录路径的方式也有几种,刚开始用数组记录,绕的我头都晕了。后原创 2016-10-22 15:29:16 · 388 阅读 · 0 评论 -
poj1787 Charlie's Change(多重背包+路径)
http://poj.org/problem?id=1787题意:查理想买咖啡,咖啡销售机只支持三种硬币,分别是1分、5分、10分、15分。然后给出查理拥有的四种硬币的个数,求查理最多可以消耗多少硬币,可以正好买到咖啡而且不需要找钱。思路:给出每种物品的个数,即为多重背包。不过这题要求的是装满情况下的最多数量,那么数量即为价值。最后要求把每种硬币的数量分别输出,难点就在路径的记原创 2016-11-05 15:34:07 · 557 阅读 · 0 评论 -
poj1064 Cable master(二分搜索)
http://poj.org/problem?id=1064题意:有N条绳子,他们的长度分别为Li,如果从他们中切割出长度相同的绳子的话,这K条绳子每条最长能有多长?保留两位小数。思路:偶然看到《挑战》上有二分搜索,以前见过的二分好像都是查找哎,做一做吧。二分居然可以这样处理问题,好神奇。相当于加了条件的搜索,找一个无限精确于标准答案的绳子长度。我的理解哈,二分查找是在数的范围原创 2016-10-30 22:12:28 · 455 阅读 · 0 评论 -
poj3281 Dining(经典最大流+拆点)
http://poj.org/problem?id=3281题意:n头牛f种食物d种饮料,每头牛都有各自喜欢的食物和饮料(不止一种),而每种食物或饮料只能分配给一头牛(数量为1)。问最多能有多少头牛可以同时得到喜欢的食物和饮料?思路:普通建图都是超级源点与供应相连接,超级汇点与需求相连接。然而这里有两种供应一种消耗,但是只有供应和消耗之间有联系,同种消耗之间没有联系,要想建立一原创 2016-10-30 12:41:03 · 310 阅读 · 0 评论 -
poj1276 Cash Machine(多重背包)
http://poj.org/problem?id=1276题意:银行里有一个取款机,cash表示应该取的钱数,接着有n种钞票,每种钞票的数量ni、面值di,求这个取款机最多可以取出多少钱。思路:简单的多重背包。每种物品的花费和价值为同一属性。不要求装满背包。#include #include #include #include #include u原创 2016-11-04 12:17:54 · 359 阅读 · 0 评论 -
poj3020 Antenna Placement(无向图最小边覆盖)
http://poj.org/problem?id=3020题意:给你一个n*m的图,'*'表示城市,每个无线网只能覆盖两个城市,且这两个城市只能东南西北相邻,求最小用多少这样的无线网可以覆盖所有的城市。ps:做完这道题我感觉英语不好这题就做不出来。。思路:无向图的最小边覆盖。刚开始各种看不懂题我就不说了= =。一开始一看是矩阵以为和上一道题一样,结果感觉这才是真正原创 2016-10-30 11:02:00 · 422 阅读 · 0 评论 -
poj3041 Asteroids(最小顶点覆盖经典模型)
http://poj.org/problem?id=3041题意:给你一个n*n的格子,然后是k个坐标,每个坐标代表这个地方有一个小行星。每个光束可以摧毁一整行或一整列的小行星,求问最少用多少光束可以摧毁所有小行星。思路:好吧。。刚开始愣是不知道怎么建图,这种问题居然能和最小顶点覆盖联系到,学到了。最大匹配和最小顶点覆盖本就是两个概念,并没有什么关系,如果一开始想怎么匹配,那完原创 2016-10-29 22:02:53 · 565 阅读 · 0 评论 -
poj1470 Closest Common Ancestors(LCA离线优化)
http://poj.org/problem?id=1470题意:给你点和关系,还有m次询问,求某点是最小公共祖先的次数。思路:整体思路和poj1330相似,但是这题时间卡的相当紧,听别人说是多组询问。解决办法就是用数组存起来,LCA的时候每处理一个点就处理与该点有关的询问,这样遍历完也就处理完所有询问。保存次数我用的结构体,刚开始想复杂了。。还有输入输出格式也比较恶心,处理完原创 2016-05-26 19:34:57 · 632 阅读 · 0 评论 -
poj1330 Nearest Common Ancestors(LCA离线算法)
http://poj.org/problem?id=1330题意:给你n个节点和n-1个关系,通过关系建起一棵树,然后给你两个节点,求他们的最小公共祖先。ps:这里的Tarjan离线算法貌似和前些日子做过的用Tarjan判断强连通不一样,难道Tarjan发明的算法都叫Tarjan算法么,那么他发明了应该不止一种的话。。。细思恐极思路:这题是树和并查集的完美结合,边信原创 2016-05-25 18:33:06 · 466 阅读 · 0 评论 -
hdu2063 过山车&&poj1469 COURSES(二分匹配)
hdu2063:http://acm.hdu.edu.cn/showproblem.php?pid=2063题意思路:裸求最大匹配数。#include #include #include #include #include #include #include #include using namespace std;typedef long long原创 2016-10-28 16:16:19 · 352 阅读 · 0 评论 -
poj1459 Power Network(Dinic多源多汇)
http://poj.org/problem?id=1459题意:给你n个节点,m个路的关系表示从s到t可以传送w的电量,np个发点站,nc个耗电站。求最大耗电量。ps:看的别人的题意。。看不懂思路:多源多汇其实不用一个一个来,建立一个超级源点连接所有发电站,路的容量就是该发电站可以发的电;建立一个超级汇点连接所有耗电站,路的容量就是该耗电站可以耗的电。这样就转化为原创 2016-10-27 16:31:45 · 356 阅读 · 0 评论 -
hdu3549 Flow Problem(EKarp||Dinic)
http://acm.hdu.edu.cn/showproblem.php?pid=3549题意:典型最大流模型。思路:详见我的上一篇,几乎一样的题,最大流割草游戏= =。Ekarp:#include #include #include #include #include #include #include #include using n原创 2016-10-25 13:07:33 · 300 阅读 · 0 评论 -
poj1061 青蛙的约会(扩展欧几里得)
http://poj.org/problem?id=1061题意:中文题,求青蛙跳多少次才可以碰面,碰面即约会。思路:数论第一题。根据题意很容易得出这个周期问题的条件:(x+mt)-(y+nt) = kl。其中t代表跳了多少次,k代表相差多少圈,这两个都是未知数。变形一下得到(n-m)t+lk = x-y,这就相当于解ax+by = c的式子了。其中a = n-m,b = l,原创 2016-11-20 17:58:26 · 350 阅读 · 0 评论 -
poj2478 Farey Sequence(法雷级数+欧拉函数式素数筛)
http://poj.org/problem?id=2478题意:求第n项的法雷级数是多少。思路:法雷级数,百度百科就可以知道后一项和前一项的差值就是与该数互质的数的个数,因为如果不互质就约分变成其他数了。求小于n与n互质的数的个数正是欧拉函数的作用,但是这题数据量大,需要打个表再判断。打表也不是普通的打表,不是那种先打个素数表,然后再来一次打欧拉表,最后打法雷级表,时间应该超原创 2017-02-22 20:56:59 · 560 阅读 · 0 评论 -
poj2182 Lost Cows(经典单点更新)
http://poj.org/problem?id=2182题意:每个牛有1~n中的一个序号,给你从第二个牛开始每个牛以前比其序号小的牛的个数,求最后每个牛的序号。思路:这题虽然和poj2828相像,但是第一眼不容易看出来,看不出来就没法使线段树。poj2828是已知每个数的序号求位置,特点是越靠后选的位置越准确;poj2182是已知每个数的位置求序号,特点是越靠后选的原创 2017-03-04 21:48:57 · 501 阅读 · 0 评论 -
poj2828 Buy Tickets(单点更新模拟队列)
http://poj.org/problem?id=2828题意:买票时需要排队,但是这里可以插队,通过每个人的插队操作后形成一队。有n个人,每人都有想插的位置pos和权值val,输出最后的权值顺序。操作数量大。思路:比较经典的单点更新。看了别人的才知道,这篇模拟的不错。第一个人先选一个位置,第二个人再选,就可能改变前一个人的位置。第三个人再选,前两个人的位置可能都会改变。原创 2016-04-30 20:36:58 · 500 阅读 · 0 评论 -
poj2249 Binomial Showdown(二项式系数)
http://poj.org/problem?id=2249题意:求组合数C(n,k),最后的结果超大可能是2^31。思路:刚开始本来想把前些日子的dp法复习下,结果RE。2^31至少要开10000*10000的二维数组,行不通。。后来就想,其实这题有个很简单的方法,很久以前也碰到过类似的问题。C(n,k) = n!/(k!*(n-k)!)。我们知道n!有n项,k!有k原创 2017-03-16 21:59:52 · 569 阅读 · 0 评论 -
poj3069 Saruman's Army(经典贪心)
http://poj.org/problem?id=3069题意:给出范围R,被标记的点可以覆盖范围内的点,求用多少个点就可以完全覆盖所有点。思路:这道题真的泪奔了。没看书上的思路,先是看见有重复元素去重,贪心策略还给选错了,麻烦了好多。。还特判了起点的情况,结果以为过了样例就沾沾自喜,无限WA,真的是彻底错了。首先是贪心策略的选择,范围是两边的啊。。说不清,刚开始也不知道原创 2017-03-15 21:24:36 · 645 阅读 · 0 评论 -
poj2155 Matrix(经典二维树状数组)
吐槽:这题先说[x1,y1]和[x2,y2]是左上角和右下角的两个点,又说x1http://poj.org/problem?id=2155题意:输入n*n矩阵,有两个操作,C代表翻转[x1,y1]到[x2,y2]矩阵内的值(0变1,1变0),Q代表查询某点的值。思路:和普通的单点更新和求和不同,这里是区间更新和单点求值。重点在于翻转操作,矩阵大操作多肯定不能一个一个原创 2017-03-04 13:37:13 · 763 阅读 · 0 评论 -
poj1195 Mobile phones(二维树状数组)
http://poj.org/problem?id=1195题意:(一大坨的题)给你4种操作,0代表输入矩阵的宽度建立矩阵,1代表对矩阵中第x行y列的数加上a,2代表对坐标点(l,b)~(r,t)矩阵内的所有点求和并输出,3代表退出。思路:首先看教程,二维树状数组说白了就是横向为1,2,1,4,1,2,1,8这样的树状数组,纵向也为1,2,1,4,1,2,1,8这样的树状数组,原创 2017-03-03 21:30:58 · 414 阅读 · 0 评论 -
poj2481 Cows(树状数组)
http://poj.org/problem?id=2481题意:农民发现山上长了一排三叶草,他有n个牛。每个牛都有自己喜爱的吃草范围[st,ed],如果说牛i的st比j的小,ed比j的大,就说牛i比牛j强壮。问每头牛都有多少头牛比自己强壮。思路:说白了就是求有多少区间覆盖了当前区间。同样的也是10^5^2的大数据,用数状数组,不过用树状数组处理区间还是第一次。比牛j强的牛i要原创 2017-03-03 18:28:13 · 508 阅读 · 0 评论 -
poj3928 Ping pong(树状数组)
http://poj.org/problem?id=3928题意:有n个乒乓球选手,住在一条直线上,从左到右依次输入。每个选手有一个技术等级值。他们想打比赛,就要找裁判,为了省时和公正,选裁判的条件为裁判的位置和技术等级都在两位选手之间,求能打多少场比赛。思路:N久没做树状数组,刚开始根本就是一脸蒙蔽,看了题解。树状数组解决的是根据特性求数量(比如Stars那道根据x坐标大小求原创 2017-03-02 21:25:50 · 480 阅读 · 0 评论 -
poj3617 Best Cow Line(贪心+字符串)
http://poj.org/problem?id=3617题意:给你一个字符串,通过不断地对其进行头尾比较输出较小的构建字典序最小字符串,输出。思路:很不错的水题,首先是贪心思想,就如挑战书上所说,将当前字符串与其反转的字符串比较,使末尾字符相等的字符串依然消除较小的。较大的字符串最后一个元素进队列,并将其消除,最后输出队列。输入输出还是用cin和cout,处理字符串还是c+原创 2017-03-15 16:16:27 · 522 阅读 · 0 评论 -
poj1284 Primitive Roots(原根,欧拉函数)
http://poj.org/problem?id=1284题意:求一个奇素数的原根个数。思路:原根定义:here。感觉和费马小定理有点像,定义里都说“归根到底就是g^(P-1) = 1 (mod P)当且仅当指数为P-1的时候成立.(这里P是素数).”。说白了就是用了一个定理:一个数n有原根,那么他有phi(phi(n))个模n不同余的原根(n是否素数都可用)。原创 2017-02-28 21:51:56 · 662 阅读 · 0 评论 -
poj2127 Greatest Common Increasing Subsequence(LICS+路径)
5555校赛在即可是这路径输出我怎么也搞不好,搞了好久了,改天在搞吧。。。#include #include #include #include #include using namespace std;const int N = 1005;const int INF = 1000005;int dp[N][N], path[N][N];int main(){原创 2016-03-25 20:09:40 · 587 阅读 · 0 评论 -
poj2063 Investment(完全背包)
http://poj.org/problem?id=2063题意:Jone想做一笔投资。现在他有一笔初始资金,准备做几年的投资。他想买债券,债券的归还期为一年,也就是说每到一年他得回收本金与利息,再次购买新的债券。债券有n种,每种的价格和利息(每年)都列举出来。求最大收益。ps:好难懂的题意,不过很贴近于生活。思路:由于想买的债券每种都是无限数量,所以是完全背包求不原创 2016-11-11 22:05:33 · 539 阅读 · 0 评论 -
poj3090 Visible Lattice Points(法雷级数)
http://poj.org/problem?id=3090题意:求在边长为n的正方形内有多少能看见的点。思路:刚开始愣是以为n是视野长度半径,懵逼了半天。这里看不见的点无非就是被挡住路线重合的点,这条路线上离原点最近的x和y必定没有最大公约数,因为有最大公约数的都是后面被挡住的。这样x轴上45度角以内的能看到的所有点都是斜率不同的点,且x和y互素,y/x就是斜率也就是法雷级数原创 2017-02-23 15:12:57 · 402 阅读 · 0 评论 -
poj1273 Drainage Ditches(最大流EKarp+Dinic+模板总结)
http://poj.org/problem?id=1273题意:农夫的田野每次一到下雨就会被淹没,这让他很苦恼。于是修了好多渠沟,编号为1作为池塘,编号为n作为小溪,求从池塘到小溪的最大排水量。ps:最大流第一题。思路:花了一段时间来入门,这个是EKarp的教程,并且参考了这个代码。现在感觉这个算法好神奇。首先扩展方式精辟,按照我们普通的想法,每找到一条增广路,就原创 2016-10-24 13:32:05 · 561 阅读 · 0 评论 -
poj1703 Find them, Catch them(关系并查集)
http://poj.org/problem?id=1703题意:给你n个人,m个操作,A x y代表查询x和y是否是同类,有是、否、不确定三种输出;D x y代表确定x和y不同类。思路:食物链的简化版,那个是三种关系,而这个只有两种。推公式就按照食物链的思路推,纸上比划下就出来了。一旦判断了两个元素的关系,就把他们合并为一个集合。#include #includ原创 2016-05-24 21:44:22 · 373 阅读 · 0 评论 -
poj1182 食物链(经典关系并查集)
http://poj.org/problem?id=1182题意:给你n个生物k个操作,生物之间有吃、被吃、同类三种关系,1,x,y代表x和y是同类,2,x,y代表x吃y,求假话数量。思路:并查集高级应用,直接上大牛博客。刚开始看了几个说的不怎么明白的博客被误导了,现在把思路都理清吧。p[x]代表x的父亲节点,r[x]代表x与p[x]的关系,x、y所在集合的代表元素rx、r原创 2016-05-22 20:41:01 · 383 阅读 · 0 评论 -
poj1201&&hdu1384 Intervals(差分约束)
http://poj.org/problem?id=1201题意:m个约束条件,a b c表示在[a,b]区间内整数至少有c个,求满足这样要求的最短序列长度。思路:因为序列是连续的,所以和上一道题一样同样可以转化为序列和之差,那么S[b]-S[a-1]>=c这个条件就出来了,根据性质也知道是求最长路。不过这题还有个更重要的隐藏条件1 =某一个数。而这里要想利用这个条件,那就满足原创 2016-10-21 09:09:50 · 310 阅读 · 0 评论 -
poj2528 Mayor's posters(成段更新+离散化)
http://poj.org/problem?id=2528题意:基本和上一题板子上涂颜色一样,只不过这题数据量超大。。思路:把一条条线段离散化。这题的离散化原理:题中区间:[1,4][2,6][8,10][3,4][7,10],排序去重后变成1,2,3,4,6,7,8,10赋其序号为1,2,3,4,5,6,7,8 这样就减少了空间,但是不影响线段划分。将新原创 2016-05-09 21:21:07 · 353 阅读 · 0 评论 -
poj2777 Count Color(成段更新)
http://poj.org/problem?id=2777题意:给你一个长板,宽度为l,t种颜色,o项操作。操作共两种,更新一个区间内的颜色,求一个区间内的颜色数量,输出。思路:比较普通的成段更新,用mark统计颜色数量,不多说了。#include #include #include #include #include using namespace原创 2016-05-09 21:18:42 · 339 阅读 · 0 评论 -
poj3667 Hotel(成段更新+区间合并)
http://poj.org/problem?id=3667题意:给你n个房间,m种操作,1操作为查看有没有连续长度为num的房间,若有,则返回其左端点,并将其置为非空;2操作为置空st~st+num-1区间内的房间。思路:这题就是区间合并和成段更新的完美结合,然后加上懒惰标记的思想。麻烦就麻烦在对各变量的更新查询操作,以及要理解透彻几个变量的意义。ls代表从左数最长连续区间,原创 2016-05-11 22:04:47 · 367 阅读 · 0 评论 -
hdu2586 How far away ?&& poj1986 Distance Queries(LCA离线求最短距离)
http://acm.hdu.edu.cn/showproblem.php?pid=2586题意:给你一个带权值的无向图,求其中两点的最小距离。思路:这题貌似别的方法也行,这里还是为了练习LCA用这办法。不同于LCA求最小公共祖先的值,由于输入的是无向边,所以首先输入边时记得反向同步添加一条。接着我们可以把这个图看成一个以1为根的树,遍历LCA,当全部遍历完后,遍历需要查询的点原创 2016-05-28 20:56:37 · 374 阅读 · 0 评论 -
poj2886 Who Gets the Most Candies?(单点更新+约瑟夫环+素数打表)
http://poj.org/problem?id=2886题意:N 个小孩围成一圈,他们被顺时针编号为 1 到 N。每个小孩手中有一个卡片,上面有一个非 0 的数字,游戏从第 K 个小孩开始,他告诉其他小孩他卡片上的数字并离开这个圈,他卡片上的数字 A 表明了下一个离开的小孩,如果 A 是大于 0 的,则下个离开的是左手边第 A 个,如果是小于 0 的,则是右手边的第 -A 个小原创 2016-05-04 21:47:35 · 369 阅读 · 0 评论