ACM
文章平均质量分 65
算法学习
wang2147483647
这个作者很懒,什么都没留下…
展开
-
UvaLive 5031 Graph and Queries(Treap+并查集)
题目地址:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3032思路:1.三种操作#include#include#include#include#include#include#define debugusi原创 2017-10-23 17:35:57 · 626 阅读 · 0 评论 -
UvaLive 2197 Paint the Roads(费用流)
题目地址:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=198思路:原创 2017-10-21 20:51:29 · 737 阅读 · 0 评论 -
Uva 11146 Insurrection(最短路+最小割)
题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2087思路:1.删除k个点使得点1到点n不连通。2.拆点。将每个点拆为i和i’,容量为删除该点的花费(即为从1点到该点的最短路+n点到该点的最短路)。3.对于原图中的无向边i-j,原创 2017-10-21 16:16:56 · 696 阅读 · 0 评论 -
Uva 10983 Buy one, get the rest free(二分+最大流)
题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1924思路:1.二分所需花费cost,每次只选择不大于cost的航班。2.设源点S,汇点T。对于每个城市,表示为二元组(i,t),代表第t天处于第i个城市。从S到每一(i,0)连边,容原创 2017-10-20 14:15:08 · 609 阅读 · 0 评论 -
Sgu 438 The Glorious Karlutka River(动态流)
题目地址:http://acm.sgu.ru/problem.php?contest=0&problem=438思路:1.由于不同时刻,两点的流量不同,故不能在一张图中求解。2.由于任意时刻,人可在中间节点停留,故费用流无法解决此题。3.给定所有流量限制,求最短经过时间。可通过枚举时间,将中间节点按时间拆点为(i,t)(即在时间t时的点i)。(1)节点存在容量限制,可通过拆点解原创 2017-10-19 22:04:59 · 389 阅读 · 0 评论 -
Gym 100204G Network Wars(最小割+0/1分数规划)
题目地址:http://codeforces.com/gym/100204/attachments思路:1.即要求求:其中Xi=1代表选择该条边,为0代表不选择该边。2.转化为:即:二分ans,设置所有边为W-ans,若一条边小于0,则直接将其加入(该边小于平均值,加入则会使最终结果更小),设所有负权边和为sum。求最小割,判断最小割+sum原创 2017-10-19 16:18:03 · 703 阅读 · 0 评论 -
Uva 10615 Rooks(二分图完美匹配+补边)
题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1556思路:1.给棋子染色,要求每行每列棋子颜色均不相同。2.可以看出,所需最少颜色数为每行每列最大的棋子数,设为ans。3.构造二分图模型,左右各n个点,若第i行第j列存在棋子,原创 2017-10-17 15:42:42 · 1596 阅读 · 0 评论 -
Uva 10984 Double NP-hard(二分图)
题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1925思路:1.求一点集,使得其为图的最小覆盖集和最大独立集。2.首先,若该图不为二分图,则必无解:若不为二分图,则存在奇数长度回路,设该回路上点数为2*k+1。则由定义,至多k个点在原创 2017-10-16 20:19:42 · 689 阅读 · 0 评论 -
Poj 3621 Sightseeing Cows(二分+负环判断)
题目地址:http://poj.org/problem?id=3621思路:1.求点权值除以边权值最大的环。2.二分答案ans,sigma(v)/sigma(e)=0。对原图中的边,设其边权值为ans*e-v,判断是否存在负环即可。3.由于图有可能不连通,设一点0,向所有点连权值为0的边,从0点开始跑spfa判断是否存在负环即可。#include#include#inclu原创 2017-10-16 14:44:42 · 438 阅读 · 0 评论 -
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 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 评论 -
Ural 1028 Stars(树状数组)
题目地址:http://acm.timus.ru/problem.aspx?space=1&num=1028思路:首先按坐标排序(先按x,后按y),按x从小到大依次处理,则点i下方的点的个数即为y坐标不大于改点的个数,使用树状数组维护即可。#include#include#include#includeusing namespace std;const int maxn=15原创 2017-10-10 22:22:06 · 409 阅读 · 0 评论 -
Ural 1003 Parity(并查集)
题目地址:http://acm.timus.ru/problem.aspx?space=1&num=1003思路:一、1.区间和可表示为两前缀和相减:sum[R]-sum[L-1]。若区间[L,R]和为奇数,则连边(L-1)-->R,权值为1,否则权值为0。则由a->b和b->c可推出a->c的奇偶性。2.使用并查集维护信息,设w[i]为i到其根结点的距离。则判断时只需判断(w[L原创 2017-10-10 21:32:04 · 585 阅读 · 0 评论 -
Gym 100273L Language Recognition(Trie+Hash)
题目地址:http://codeforces.com/gym/100273/attachments思路:1.建立Trie,显然所有叶子节点都是等效的,Hash值设为1。2.对于非叶子节点,需将其儿子Hash值与边对应字母同时考虑。Hash[root]=sigma(Hash[son]*ch+1),Hash[root]*=Son[root],ch为字符,son为root的儿子节点,Son[原创 2017-10-09 17:07:15 · 663 阅读 · 0 评论 -
Poj 2970 The lazy programmer(贪心)
题目地址:http://poj.org/problem?id=2970思路:1.按照d值从小到大排序,依次完成任务。2.将所有已完成任务加入优先队列(a值越大越优先),若当前任务无法完成,则从队列中不断找到a值最大的任务,花费一定钱数减少完成时间,直到当前时间等于d。3.若某任务花费值为b/a,则以后花费钱任务时间也不会减少,从队列中删除。#include#include#原创 2017-10-08 17:15:04 · 627 阅读 · 0 评论 -
Gym 100206B Fire station building(三分)
题目地址:http://codeforces.com/gym/100206/attachments思路:1.求出任意两点最短距离g(i,j),对于建在边u-v长为len的消防站(位置为x),则到点i的最短距离为min{g[u][i]+x,len-x+g[v][i]}(r2.枚举每条可建消防站的边,显然总期望距离为一凹函数,三分求取最小值即可。3.当图不连通或道路长度不足以建站时无解原创 2017-10-07 18:57:21 · 646 阅读 · 0 评论 -
Ural 1040 Airline Company(构造)
题目地址:http://acm.timus.ru/problem.aspx?space=1&num=1040思路:1.无向连通图满足从一点出发的边数大于1的边,其标号的最大公约数为1。2.直接从任意点开始dfs,直接按dfs顺序给所有边标号即可(对于一点相连的两条边,dfs时必有一条边进入该点,一条边离开该点,即其标号相差1,而相邻两数其gcd为1,满足条件)。#include#原创 2017-10-06 20:21:41 · 1869 阅读 · 0 评论 -
Poj 3106 Flip and Turn(模拟+优化)
题目地址:http://poj.org/problem?id=3106思路:一、模拟+栈优化1、所有操作均对应与两种操作的组合,对应题目中的1和V操作。设1操作为1,V操作为0。则所有操作分别对应:112010H101V0A10B1010C101010原创 2017-10-06 18:56:37 · 578 阅读 · 0 评论 -
Uva 10934 Dropping water balloons(递推)
题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1875思路:红书上分析:#include#include#include#includeusing namespace std;typedef long lo原创 2017-10-05 18:43:54 · 592 阅读 · 0 评论 -
Uva 1153 Keep the Customer Satisfied(贪心)
题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3594思路:从小到大排序,依次加入,若当前值超过规定时间,则从已加入的订单中删去所需时间最大的,然后将当前订单加入记录个数即可。#include#include#include#原创 2017-10-05 16:56:30 · 568 阅读 · 0 评论 -
Uva 10888 Warehouse(KM)
题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1829思路:1.首先求出每个箱子到达每个目的地的最短距离w。2.将箱子看做x点,将目的地看做y点,x向y连边,权值为w,求二分图最优匹配即可。3.是否存在移动过程中路径上有其他箱子原创 2017-09-29 22:18:50 · 385 阅读 · 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 评论 -
Gym - 101201F Illumination(2-sat)
题目地址:http://codeforces.com/gym/101201/attachments思路:比较明显的2-sat:每个位置只可选择行或者列,若两位置选择行发生冲突,则必有一选行另一选列,列同理。对应连边判断是否有解即可。#include#include#include#include#include#include#define lson l , m, rt <原创 2017-09-23 20:16:41 · 447 阅读 · 0 评论 -
Gym - 101201J Shopping(RMQ+二分)
题目地址:http://codeforces.com/gym/101201/attachments思路:1.题目相当于对于一数,依次对[L,R]区间内的数取模,结果即为答案。2.若对于区间内一大于v的数,其取模结果仍为本身,无作用。则问题变为快速寻找区间内第一个不大于v的数(区间内数无序)。3.考虑二分区间[L,R],mid=(L+R)/2。若区间[L,mid]内最小值不大于v原创 2017-09-23 19:58:42 · 654 阅读 · 0 评论 -
Gym - 100792K King's Rout(拓扑排序+优先队列)
题目地址:http://codeforces.com/gym/100792/problem/K思路:1.根据到达顺序,可以使用拓扑排序:a比b早,a->b。2.要求编号为1的尽量靠前,满编号为1的节点尽量靠前的条件下编号为2的尽量靠前。。。。满足n-1尽量靠前的情况下编号为n的尽量靠前。若直接进行优先队列(标号小优先)+拓扑排序,对于样例3 1;3 1,由于2、3节点入度均为0,则都会原创 2017-09-21 22:24:50 · 435 阅读 · 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 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 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 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 评论 -
Uva 1627 Team them up!(dp+二分图染色)
题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4502思路:1.将所有不能在一组的两个人连边,二分图染色,若发现染色不成功,则无解。2.若染色成功,同一连通分量里的黑点与白点无法分为一组,不同连通分量中的点可与其他连通分量中的任一种原创 2017-08-30 20:41:58 · 597 阅读 · 0 评论 -
uva 1326 Jurassic Remains(中途相遇法+位运算)
题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4072思路:1.找一最大集合,使得其中任意字符串出现偶数次。将每一字符串转化为一二进制数(每一位对应一字母A...Z),若该字符出现奇数次,该位为1,否则为0。将给定字符串分为两部分,原创 2017-08-27 21:45:26 · 576 阅读 · 0 评论 -
uva 1476 Error Curves(三分)
题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4222思路:几个函数图像相交所形成的图像仍为下凸的(若不为下凸,则在交点处存在先增后减,而由于取局部最大值,不应该选择递减部分,矛盾,所以图像全部为下凸),下凸函数最小值可用三分法解决:取原创 2017-08-27 20:16:53 · 559 阅读 · 0 评论 -
uva 1328 Period(KMP循环节)
题目地址:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4074思路:1.对于某个字符串S,长度为len,由长度为L的字符串s重复R次得到,当R≥2时必然有S[0..len-L-1]=S[L..len-1],那么对于KMP算法来说,就有nex原创 2017-08-27 20:06:09 · 501 阅读 · 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 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 6180 Schedule(贪心)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6180思路:1.贪心。将每个安排分成两个:起始(标号为0)和终止(标号为1)。按照时间顺序排序,每次遇到一个起始事件时,num++(代表当前机器不能满足条件,需要一台新的机器);每次遇到一个终止事件时,num--(代表当前机器运行结束)。则机器个数=max{num}(代表同时运行的机器个数)。原创 2017-08-25 19:52:01 · 1165 阅读 · 0 评论