- 博客(23)
- 资源 (15)
- 收藏
- 关注
原创 codeforces 617E XOR and Favorite Number (莫队)
题意:给你n个数(a1....an)和常数k,m次询问,求出(l,r)这个区间中有多少个自区间把所有的值异或起来等于k。解:保存每个数前缀的异或,s[i]:表示a1~a(i-1)的异或。我们先考虑,从左到右扫过去,val=s[i]^k。在i之前有没有ai等于val呢? 如果有,说明中间某些值异或起来肯定为k。 因为 k^k=0, a[i]^0=a[i]。 又如果val在之前出现了多次呢?显
2016-01-31 16:59:07 377
原创 HDU 5619 Jam's store (费用流,建图巧妙)
Jam's store Accepts: 15 Submissions: 42 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)问题描述Jam不好好学习,然后就去帮别人修电脑了,在一家店里,有MM个店员,现在有NN个顾客,给出每个
2016-01-31 16:28:56 784
原创 poj 1651 Multiplication Puzzle (区间DP)
题意:给出n个数,每次你可以取出一个数a[i](不能取边界),并得到一个值val=a[i-1]*a[i]*a[i+1]。要求取完所有的数最后剩下边界,你得到的值总和最少。解:dp[i][j]:i~j这个区间的最优解。当只有三个数时,val=a[1]*a[2]*a[3]。dp[1][3]=val;当只有四个数时,dp[1][3]、dp[2][4]可以直接得到,那么dp[1][4]等于
2016-01-29 11:31:29 268
原创 POJ2955 Brackets(区间dp)
题意:给出一个括号的字符串,可以任意抽出一些子串,保持它们相对位置不变,并能组成匹配的括号,问最长能提取出几个字符。解:区间DP用 dp[i][j] 表示 i~j 这个区间内的最大括号匹配数。如果 s[i] 和 s[j] 匹配,那么很明显有 dp[i][j] = dp[i+1][j-1] + 2;如果 s[i] 和 s[j] 不匹配,那么我们可以在 i~j 中找一个断点
2016-01-28 19:36:41 262
原创 BZOJ 1061 (费用流,填”坑“ )
1061: [Noi2008]志愿者招募Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 2874 Solved: 1775[Submit][Status][Discuss]Description申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管。布布刚上任就遇到了一个难题:为即将启动的奥运新项目招募一批短
2016-01-28 15:11:10 564
原创 poj3680 Intervals (费用流巧妙的建图)
题意:在实轴上给个N个开区间,每个区间给出一个权值w,要求你选出一些区间(ai,bi)使得这些区间的权值和最大,要求是选出的区间中的每个点不能被覆盖超过k次。(1 【建模方法】经典构图题。先将所有区间端点离散化到整数1..M,另加源s=0,汇t=M+1;对每个点i (0 #include#include#include#include#include#include#i
2016-01-27 18:33:52 424
原创 HDU 1853 Cyclic Tour(KM或费用流)
题意:有n个点m条边的有向图,一个人可以从一个起点走最终回到起点,每个点只能访问一次。意思是要把这个图分成很多个环,每个点只能属于一个环,求构成这些环的最短路程,若不能满足要求的图就输出-1。解法一:一个人要从起点出发又回到起点,并且每个点只能走一次。这不就是二分匹配问题吗?把每个点拆成两个点i和i'。把i作为二分图左边的点,i'作为二分图右边的点。假设u到v有条边,即左边的u可以和右边的
2016-01-27 10:05:17 385
原创 HDU 3667Transportation(巧妙的建图,费用流)
题意:有N个点,M条边,现在要将K单位的物品从1运到N,在没条边上只能运ci个单位的物品,并且有一个花费系数ai,即运送x单位花费x^2*ai。问在保证把所有物品运到N点情况下求花费最小,否则输出-1.分析:明显的费用流,但是难点是花费是x^2*ai怎么建图。刘汝佳《算法竞赛入门经典》P.366中讲到,用拆边法。一个费用系数为ai,两个物品通过的话可以拆成1*ai+3*ai,三个物品要
2016-01-25 20:56:17 424
原创 KM
km算法,求完美匹配下的最大(小)权匹配。 在一个二分图内,左顶点为X,右顶点为Y,现对于每组左右连接Xi,Yj有权wij,求一种匹配使得所有wij的和最大。 //O(n^3) hdu 2255//求最大权匹配//若求最小权匹配,可将权值取相反数,结果取相反数/*预处理lx[i]=max(w[i][j]);memset(ly,0,sizeof(ly));所以对于任何边:lx[i]+l[
2016-01-24 19:11:25 259
原创 codeforces 620E New Year Tree (DFS序+线段树区间操作+二进制)
题意:给出一棵树,每个节点初始都有一个颜色值,有m次操作,1操作:输入id,c。第id个节点以及其子树都被染成c。2操作:id,输出id子树中不同颜色的种数。解法:先跑一次DFS,第id个节点就控制DFS序为l,r的区间。那么就转换为了线段树的区间操作。怎么记录有多少种颜色?题意上说颜色种数不超过60。那么第c种颜色就对应二进制的第c位,两段区间合后的颜色为他们两段区间颜色值的“或”。
2016-01-24 15:45:51 455
原创 SPOJ 287 Smart Network Administrator(最大流+二分答案)
题意:有N户人,m条街道(边),k户人家需要向1联网(1号有网),通过各个街道连电缆到1。要求这些电缆在同一条街道颜色不同,要求在k户人家连接到的情况下使用最少的颜色,输出最少颜色的种数,题目保证k户人家一定能连上网,边是双向边。分析:
2016-01-23 18:34:36 607
原创 SGU 326 Perspective最大流
题意:NBA某小组内有N支球队,小组内以及小组间已经进行了若干场比赛。现在给出这N支球队目前胜利的场数、还剩多少场没有比(包括小组内和小组间),以及小组内任意两支球队之间还剩多少场没有比,问能否合理安排剩下的所有比赛,使得球队1最后胜利的场数大于或等于最终胜场数最大的球队。分析:这题的建图不好想。首先,最好的策略肯定是让1队赢下所有的比赛,1队的胜场数为tot=已有的胜场+剩下的场数。建图
2016-01-23 15:12:39 332
原创 poj 3281 Dining(最大流,两种资源一种群体建图)
题意:有F种food,N头牛,D种drink。每种食物或饮料只能供一头牛享用,且每头牛只能享用一种食物和一种饮料。问最多能使几头牛同时享用到自己喜欢的食物和饮料。建图方法:跟常规的建图方式不太一样。现在供应有两种资源,需求仍只有一个群体。其实只要仔细思考一下最大流的建模原理,此题的构图也不是那么难想。最大流的正确性依赖于它的每一条s-t流都与一种实际方案一一对应。那么此题也需要用s-t流将
2016-01-22 16:21:54 423
原创 POJ 1149 PIGS(最大流)
题意:有m个猪圈,初始值为ai头,有n个人来买猪。第i个人他可能打开某些猪圈,并且他最多买num个,他买后,他打开的猪圈里的猪可以随意的移动到打开的猪圈,然后猪圈关闭,第i+1个人又来买。问这n个人最多能买多少头猪。分析:建图:源点到猪圈建边容量为猪的初始头数,人到汇点 建边容量为人最多买的猪的头数。第i个人买猪的时候,再建边(他能打开的猪圈id到他,容量为INF),同时这些能打开的猪圈可
2016-01-21 19:29:50 336
原创 POJ 2391 Ombrophobic Bovines (最大流+二分答案)
题意:有F个牧场,每个牧场当前牛的头数为num,牧场能容纳的牛的头数为rong,牧场与牧场间有P条边,距离为dis,现在所有的牛同时出发,问所有牛到达可容纳的牧场,最短的时间。1=分析:把每个点拆成两个点(i,i‘'),那么设源点为S=0,汇点为T=2F+1。连边add(S,i,numi),add(i'',T,rongi)。由于牛是同时出发,求的是最少时间,所以不是费用流。那么只有二分
2016-01-21 16:58:46 476
原创 POJ 2195 Going Home(KM或费用流)
题意:给一个字符矩阵,m表示man,H表示house。人和房子个数相等。一个房子只能住一个人,要求所有人走到空的房子,每走一步花费1,要求总的花费最小,输出最小值。解法1:KM,给定一个带权的二分图,求权值最大的完美匹配。题意要求总花费最小,用KM只需要把花费弄成相反数(负数),再运行KM算法,求出后结果是一个负的最大值,输出它的相反数就是正的最小了。#include #includ
2016-01-20 15:48:33 371
原创 HDU 4596 Yet another end of the world(GCD)
题意:给出N行 x,l,r。如果有数ID%x1属于[l1,r1]而且ID%x2属于[l2,r2]那么Cannot Take off,否则Can Take off。分析:假设有这么一个数ID使得“cannot.....”,那么:ID=x1*a+u ①且ID=x2*b+v ②②-①:x2*b-x1*a=v-u ③此时 l2-r1如果③有解则gcd(x1,x2)的n倍在区间
2016-01-19 13:49:31 440
原创 HDU 4856 Tunnels(状压DP)
题意:给出一个城市地图(n*n),在给出m条管道。目的是可以从任意管道入口走,走完所有的管道路程最少。分析:说白了就是访问管道顺序的问题,由于管道数量m#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define M
2016-01-17 17:08:11 392
原创 HDU 3440 House Man差分约束
题意:在水平坐标轴上给n座房子,房子与相邻房子距离至少为1,房子的高度各不相同, 从最低的房子开始, 每次跳到更高的房子, 跳n-1次最能跳到最高的房子了,但是每次跳跃的距离不能超过d。将这些房子在一维的方向上重新摆放(房子间的相对位置不变) , 使得最矮的房子和最高的房子水平距离最大。分析:高度相近的两个坐标(设为xi,xj)相减 | (xi-xj)| =1, 因为要化为最短
2016-01-16 09:30:34 531
原创 HDU 4179 Difficult Routes spfa存了反向边
题意:输入 n,m,表示n个点m条边。接下来n行输入n个点(编号1~n)的坐标(x,y,z),接下来的m行输入m条边,最后一行输入st,en,d,即求从st->en,难度不超过d的最短距离为多少。所谓难度,假设u->v点,如果v.z>u.z,d=100*(v.z-u.z)/sqrt((u.x-v.x)^2+(u.y-v.y)^2);否则,d=0;思路:难度超过了d的边就不添加,同时记录下刚好为
2016-01-15 13:10:08 424
原创 codeforces 616D Longest k-Good Segment
题意:给n个数(大小不超过10^6),求连续的不同的数个数小于k的最大长度的起始坐标。思路:枚举从i坐标开始,不超过K的最大长度。#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define MAX
2016-01-13 14:44:48 622
原创 KMP模板
#include #include#includeusing namespace std;//p串在s串中出现的次数char s[1000001]; char p[10005];int next[10005];//next[i] 0-i字符串最大匹配数/** next[]的含义:x[i-next[i]...i-1]=x[0...next[i]-1]* ne
2016-01-10 12:41:48 312
原创 Codeforces 615B Longtail Hedgehog 【dp】
题意:给出一个图,找到一条链,这条链点的编号是递增的,使得这条链:MAX(长度*最后一个点的度)解析:dp[i]表示以i点结尾,最大的链长。所以u->v,dp[v]=max(dp[v],dp[u]+1);最后的答案就是 ans=max(ans,dp[x]*degree[x]);#include#include#include#include#include#include#
2016-01-09 13:30:30 277
hibernate官方文档+chm用户手册+其他中文文档
2018-09-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人