OJ_Hdu
文章平均质量分 74
wang2147483647
这个作者很懒,什么都没留下…
展开
-
Hdu 1512 Monkey King(左偏树+并查集)
题目地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=1512思路:使用左偏树快速合并两堆。#include#include#include#includeusing namespace std;const int maxn=100000+50;struct Node{ int val,lson,rson,d原创 2017-10-13 17:27:45 · 532 阅读 · 0 评论 -
Hdu 3631 Shortest Path(Floyd插点)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3631思路:Floyd,对于已求出最短路的图,若增加一点k及相应的边,则只需将k当做中间节点更新点u与点v的距离即可。因此,每增加一个标记点时,则将标记点当做中间节点更新最短路径,由于点数只有300,时间上可以承受。#include#include#include#includeusin原创 2017-02-07 23:29:09 · 369 阅读 · 0 评论 -
Hdu 3486 Interviewe(二分+RMQ)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3486思路:二分选择个数m即可,开始只考虑各个区间长度,未考虑是否能够选够m个,wa了几次。。。。#include#include#include#include#includeusing namespace std;const int maxn=2e5+50;int n,k;i原创 2017-02-05 16:21:29 · 483 阅读 · 0 评论 -
Hdu 1558 Segment set(并查集+几何)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1558思路:判断线段相交(注意端点相交),若相交并入同一集合。#include#include#include#include#include#include#define debuusing namespace std;const double eps=1e-10;const原创 2017-02-04 15:30:17 · 374 阅读 · 0 评论 -
Hdu 5023 A Corrupt Mayor's Performance Art(线段树+状压)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5023思路:用一30位数每一位表示有某个颜色,使用线段树进行区间修改与查询。最后某位为1,则存在该种颜色。#include#include#include#include#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define r原创 2016-11-15 20:51:46 · 453 阅读 · 0 评论 -
Hdu 5024 Wang Xifeng's Little Plot(暴力枚举)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5024思路:枚举每个‘.’点,分两种情况:横竖、对角线。从该点分别向某一方向延伸到最大,从横竖中取两个最大值;从对角线中取两个最大值,最后取两种情况的最大值即为解。#include#include#include#includeusing namespace std;const int原创 2016-11-15 17:51:33 · 469 阅读 · 0 评论 -
Hdu 1885 Key Task(状压+BFS)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1885思路:用四位二进制数每一位表示是否拥有一种钥匙,若当前状态与当前门取&不为0表示可通过;若遇到钥匙,则取|,表示拥有此种钥匙。用v[x][y][state]表示在(x,y)位置,拥有钥匙状态。#include#include#include#include#include#i原创 2016-11-15 17:22:10 · 383 阅读 · 0 评论 -
Hdu 4888 Redraw Beautiful Drawings(最大流+方案唯一判断)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4888思路:设置一源点、汇点。将每行看做一点,从源点连边,容量为改行元素和;将每列看做一点,从该点向汇点连边,容量为该列元素和。每行每列连边,容量为k。求最大流,若满流,则存在解。存在解时,若残量网络中存在环,则流量可绕环一圈而不改变最大流,则此时存在多解。#include #include原创 2016-11-10 20:36:33 · 585 阅读 · 0 评论 -
Hdu 5876 Sparse Graph(补图最短路)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5876思路:用set维护未访问节点。BFS时,对于点u,枚举所有未访问点v,若u、v在原图中无边连接,则将v点入队·,更新最短距离,并且删除点v。#include#include#include#include#include#includeusing namespace std;原创 2016-09-24 19:47:05 · 887 阅读 · 0 评论 -
Hdu 2546 饭卡(01背包)
题目地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=2546思路:5元钱可以买任何东西,显然应该买最贵的物品。则剩下的m-5元钱构成01背包。#include#include#include#includeusing namespace std;const int tmp=1000;const int maxn=4000+5原创 2016-09-08 21:20:05 · 459 阅读 · 0 评论 -
Hdu 3686 Traffic Real Time Query System(双联通分量+LCA)
题目地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=3686思路:对于两条边, 若其在同一双联通分量中,则它们最少有两条路可达。所以从边x--->y,必须经过的点的数目为从x所在双连通分量到y所在双连通分量的割点的数目。则找出所有双连通分量,缩成一点,构成双连通分量---割点----双连通分量。。。。。则缩完点后,新图构成一棵树,则必须经过原创 2016-09-01 17:09:03 · 573 阅读 · 0 评论 -
Hdu 3363 Ice-sugar Gourd(思路)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3363思路:有解:两种情况。第一种,中间一分刚好,即切一刀。第二种,将第一个与最后一个连接起来,组成一个圆,过圆心将圆分成两部分,总有一种方式符合题意。枚举起点i,判断sum[i+n/2]-sum[i]是否等于H/2即可。#include#include#include#inclu原创 2016-07-29 21:53:30 · 1078 阅读 · 0 评论 -
Hdu 3364 Lanterns(高斯消元)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3364思路:灯的状态是由控制它的开关的异或值所决定的,每个开关值为0或1,所以设 (xi*k1)^(xi*k2)^.....^(xi*km) = xi 灯为x,开关为k。得到一方程组,高斯消元后等式左边系数全为0,若等式右边系数不为0,则无解。否则,答案为2^(自由元(不管开或关都行)个数)。原创 2016-07-30 11:14:03 · 881 阅读 · 0 评论 -
Hdu 4009 Transfer water(最小树形图)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4009思路:最小树形图:有向图的生成子图,满足图中有一个点无入弧,其他每个点只有一条入弧的情况下,权值最小。设立超级源点0,向每个点连边,权值为高度*X(即为挖井的费用)。可建设输水管道的两个点连边,注意判断高度差。以0作为根求最小树形图即可。#include#include#include原创 2017-02-03 17:12:20 · 348 阅读 · 0 评论 -
hdu 6118 度度熊的交易计划(最小费用可行流)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6118思路:求最大值,取反成为求最小值。源点S,汇点T。从源点向每一地区i连边,费用为a[i],流量为b[i](代表地区i每生产一物品花费)。每一地区i向汇点连边,费用为-c[i],流量为d[i](代表地区i每卖出一物品所得)。地区间两两连边,费用为地区间距离,流量为INF(代表每运送一原创 2017-08-14 14:10:16 · 1943 阅读 · 0 评论 -
hdu 6180 Schedule(贪心)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6180思路:1.贪心。将每个安排分成两个:起始(标号为0)和终止(标号为1)。按照时间顺序排序,每次遇到一个起始事件时,num++(代表当前机器不能满足条件,需要一台新的机器);每次遇到一个终止事件时,num--(代表当前机器运行结束)。则机器个数=max{num}(代表同时运行的机器个数)。原创 2017-08-25 19:52:01 · 1166 阅读 · 0 评论 -
Hdu 4417 Super Mario(主席树+二分)
题目地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=4417思路:1.查询区间内不大于x的数的个数。2.使用主席树求区间k大值,二分k,求最后一个不大于x的k大值,则k即为元素个数。#include#include#include#include#define lson l,m#define rson m+1,r#d原创 2017-10-12 19:31:57 · 585 阅读 · 0 评论 -
Hdu 6201 transaction transaction transaction(最长路)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6201思路:1.选择两点,一点作为买入,一点作为卖出,每经过一条边需一定花费,求最大利润。2.选择最短路中若求一起点集合到一终点集合的最短路,可通过设置一源点与一汇点求得。3.对于此问题,可分为买入集合与卖出集合。设置一源点,向所有节点连边,权值为-w[i],在该点买入;设置一汇点,所有原创 2017-09-29 16:37:39 · 458 阅读 · 0 评论 -
Hdu 6214 Smallest Minimum Cut(最小割)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6214思路:1.要求在最小割的情况下割集边数最小,对于两种约束条件,可通过一定方法将其转化为单约束。2.令边权值为w*MAX+1,MAX为一较大数,使得当割不同时,边权值作用最大;当割相同时,边数起作用。3.求最大流,边数即为maxFlow%MAX。#include#include原创 2017-09-27 16:48:48 · 500 阅读 · 0 评论 -
Hdu 6211 Pythagoras(暴力+勾股数)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6211思路:1.由勾股数性质:对于两个数n、m(设n2.按照Stern-Brocot tree的生成规则,可以构造出在一定范围内互质的n和m,判断是否满足(m-n)&1=1,若满足,取m^2-n^2与2*m*n最大值作为y并记录其个数,最终求和即可。3.卡常数,取模运算%mod使用&(m原创 2017-09-27 16:31:18 · 780 阅读 · 2 评论 -
Hdu 6209 The Intersection(Stern-Brocot tree+二分)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6209思路:1.对于每次在m1/n1,m2/n2中插入(m1+m2)/(n1+n2)构成下一排。2.对于任意一个Farey序中连续的分数m1/n1,m2/n2,必有m1/n13.Stern-Brocot树可以构成所有有理数。4.Stern-Brocot树构原创 2017-09-26 22:16:16 · 758 阅读 · 1 评论 -
Hdu 5785 Interesting(Manacher+区间处理)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5785思路:1.L[i]表示以i开始的所有回文的结束位置和,R[i]表示以i位置结尾的所有回文开始位置和,则答案为sigma(R[i-1]*L[i])(x1*y1+x1*y2+...x1*yn+x2*y1+x2*y2+.....x2*yn+......=(x1+x2+....xn)*y1+(x1原创 2017-09-06 22:32:07 · 633 阅读 · 0 评论 -
Hdu 6000 Wash(贪心)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6000思路:1.首先处理出对于衣服i,其最早洗完时间wash[i],可通过优先队列实现。2.若保证总完成时间最短,则应优先烘干最后洗完的衣服,与处理最早洗完时间类似,只需按洗完时间从大到小处理,取最大值即可。#include#include#include#include#inc原创 2017-09-07 17:17:04 · 319 阅读 · 0 评论 -
Hdu 5784 How Many Triangles(极角排序+尺取法)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5784思路:1.锐角三角形总锐角个数=总锐角数-非锐角三角形提供锐角数。则锐角三角形个数=总锐角数/3(即(锐角数-2*(直角+钝角数))/3,每钝角和直角三角形提供两锐角)。2.枚举每个点p[i],以p[i]为原点,求其他n-1个点与原点组成的向量,按极角(小于0时加2*PI)递增排序。设原创 2017-09-05 20:07:15 · 791 阅读 · 0 评论 -
hdu 6166 Senior Pan(SPFA+二进制分组)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6166思路:1.从集合A中一点到集合B中一点的最短路径:设立源点0,连向所有A集合中的点,边权值为0;设立汇点,B集合中点向其连边,边权值为0。求源点到汇点的最短路即为集合A到集合B的最短路。2.将最短两点分别分到A、B集合:由于图中任意两点标号不同,其二进制表示中必有至少一位不同。按二进制原创 2017-08-25 21:28:24 · 732 阅读 · 0 评论 -
Hdu 5782 Cycle(拓展KMP+Hash)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5782思路:1.若两串st1、st2循环同构(即两串首位相接旋转后相等),则必存在st1=str1+str2,st2=str2+str1(即串1的后缀等于串2的前缀,串1的前缀等于串2的后缀)。2.枚举长度len,对于前缀s1、s2,使用扩展KMP求出串s1的后缀[i....len]与串s2原创 2017-09-04 17:31:32 · 478 阅读 · 0 评论 -
Hdu 6162 Ch’s gift(Tarjan+dp)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6162思路:1.强连通分量中的点必定两两可达,可将其看作一点,将图缩点。2.对于缩点后的图,将其节点的权值设为每个连通分量的节点数。单条路径上的点对于任一点u必定存在一点v使得u可达v。则最多能u达v或v达u的点数为DAG图上权值最大的路径。判断其是否等于总点数即可。3.dp[u]=ma原创 2017-08-25 21:04:12 · 489 阅读 · 0 评论 -
hdu 6141 I am your Father!(最小树形图+权值编码)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6141思路:1.求解一有向树,使得权值最大。最小树形图边权取反即可。2.要求编号为n的节点的父亲字典序最小:将节点的编号引入边权值中,同时为了避免节点编号的影响比初始权值影响大,将每个边权乘n(即-n*w),这样即使边权值变化一单位,其影响程度也大于点编号的影响,即只有边权值相同时顶点编号起原创 2017-08-25 20:13:56 · 776 阅读 · 0 评论 -
Hdu 3365 New Ground(计算几何)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3365思路: 以A[0]为原点,构造向量A[i]-A[0]。先旋转(注意旋转方向),再伸缩,最后平移至终点。#include#include#include#include#include#define debuusing namespace std;const double原创 2016-07-30 11:30:02 · 918 阅读 · 0 评论 -
Hdu 3366 Passage (概率DP)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3366思路:如果已知行走顺序,则可通过DP求解。要使得选择最优,则应按p/q从大到小的顺序选择(遇到士兵的几率越小,出去几率越大的路应首先考虑)。d[i][j]表示在第i条路,还有j的钱能够出去的概率,则若能直接出去ans+=[i][j]*p[i],若遇到士兵d[i+1][j-1]+=d[i][原创 2016-07-30 11:41:49 · 1295 阅读 · 0 评论 -
Hdu 4462 Scaring the Birds(枚举子集)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4462思路:#include#include#include#include#includeusing namespace std;const int maxn=55;const int INF=0x3f3f3f3f;struct Node{ int x,y;};i原创 2016-08-08 19:51:43 · 700 阅读 · 0 评论 -
Hdu 4458 Shoot the Airplane(判断点在多边形内)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4458思路:以飞机为参考系,则飞机相对静止,子弹加上水平方向速度-v。则只需枚举时间,判断该时间时点(子弹)是否在多边形(飞机)内。注意g可以为0,分匀变速和匀速。另外本题精度要求较高,判断点在线段上用坐标差值,避免使用Dot 。#include#include#include#inclu原创 2016-08-08 21:39:21 · 1107 阅读 · 0 评论 -
Hdu 4454 Stealing a Cake(枚举或三分)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4454思路:枚举角度,确定圆上点的位置,取最小值。点到矩形最短距离:若点在矩形边所表示的范围内,则到矩形最短距离为x或y坐标到矩形边的距离。否则为点到矩形顶点的距离。#include#include#include#include#include#define debuusing原创 2016-08-10 10:28:47 · 654 阅读 · 0 评论 -
Hdu 3236 Gift Hunting(01背包变形)
题目地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=3236思路:d[i][j][k][l]表示第i种物品,第一种背包容量j,第二种背包容量k,l==0表示使用过免费,l==1表示未使用免费。则d[i][j][k][1]=max{ d[i][j][k][1],d[i-1][j][k][0]+s.happy,d[i-1][j-s.cost原创 2016-08-22 21:38:09 · 602 阅读 · 0 评论 -
Hdu 5510 Bazinga(KMP+尺取法)
题目地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=5510思路:设两个指针l、r,对于字符串a、b、c,若a为b的子串则下次比较时可直接比较b,c。枚举r,依次比较s[l]--s[r-1]是否为s[r]的子串,若s[i]为s[r]的子串,则l++。否则答案更新为r。#include#include#include#include原创 2016-08-22 11:29:16 · 430 阅读 · 0 评论 -
UVAlive 7366 Brocard(二分+计算几何)
题目地址:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=5388思路:二分Brocard angle设为rad,将两条边(AB,BC)按该角度旋转,求出两条边的交点P,判断CA与CP所成角度ang是否等于该角度,若rad>ang则rad原创 2016-08-21 21:14:43 · 787 阅读 · 0 评论 -
Hdu 3687 National Day Parade(暴力)
题目地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=3687思路:暴力,枚举每列(矩形开始的列),将同一行的人按列从小到大排序,则每个人的移动距离为abs(g[j][k]-i-k)(第j行的第k个人移动到合适位置距离),枚举累加取最最小值即可。#include#include#include#include#includeus原创 2016-08-20 20:38:36 · 739 阅读 · 0 评论 -
Hdu 4435 charge-station(BFS+贪心)
题目地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=4435思路:编号大的点应尽量避免建立加油站(2^0+2^1+2^2+......+2^id则不符合题意(从某加油站出发到i,从i并不能返回加油)。若i为加油站,则若从加油站1不能到达i,则不满足题意)。若不符合,则该点必须建立加油站。#include#include#includ原创 2016-08-19 22:06:01 · 645 阅读 · 0 评论 -
Hdu 5521 Meeting(建图+最短路)
题目地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=5521思路:边数太多,不能直接建图。对于每个集合,设置一个虚拟点,对于每个集合中的点u:连一条u->S权值为0的边(点在集合中,花费为0);连一条S->u权值为w的边(从集合中一点到另一点花费w)。分别计算从点1到i和从点n到i的最短路,枚举i,则ans=min( ans,max ( d原创 2016-08-19 20:40:43 · 720 阅读 · 0 评论 -
Hdu 3666 THE MATRIX PROBLEM(差分约束)
题目地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=3666思路:差分约束。取对数将乘除转化为加减。 L log(L/m[i][j])则 : log(a[i]) log(b[j])SPFA判断是否存在负环即可。优化:把判断单个点的入队次数大于n改为:如果总的点入队次数大于所有点两倍原创 2016-08-17 20:37:22 · 832 阅读 · 0 评论