自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zyz_3_14159的博客

From 2016-9-20 厚积薄发

  • 博客(20)
  • 收藏
  • 关注

原创 HDU-3578-双塔dp

题目大意:有n个橘子,选一些装到两个袋子里,要求两个袋子里面重量相同,问袋子最大重量是多少;题目解析:dp[i][j]表示枚举到第i个橘子,两个袋子差值为j的时候的最大重量,注意橘子可以不取,并且如果有个橘子的重量为0答案就有解,状态转移的话很简单;AC代码:#include#include#includeusing namespace std;const int maxn=1

2017-04-29 16:48:24 356

原创 POJ-2609-双塔dp

题目大意:有n辆汽车需要运载到船上,船上有两块甲板A,B,长度都是L,n辆汽车必须一次上去,问最多能运几辆车。题目解析:先预处理前缀和,定义dp[i][j],表示前i辆车,A甲板用的长度为j能否满足条件,这样状态转移的时候只需要考虑他能否被运到A或者B上了。AC代码:#include#include#includeusing namespace std;int n,len,a[

2017-04-29 15:33:03 420

原创 ZOJ-3331-双塔dp

题目大意:有两台机器,n个任务,每个任务在机器A,B上花费的时间都被给出,并且任务i开始的条件是任务i-1被A完成或者正在被B做,问最少需要花费多少时间;题目解析:呀,我的第一道双塔dp,双塔dp又可以称为调控问题,想象成两个机器就是两座塔,dp[i][j]表示的就是任务i在A-B的时间差之下最少花费的时间,如果当前AB的情况。AC代码:#includeusing namespa

2017-04-29 13:00:59 340

原创 POJ-3067-树状数组

题目大意:东边有n座城市,西边有m座城市,现在连k跳线,问他们中有几个交点;题目解析:就是逆序对的问题,注意答案要开long long并且如果两条线段如果起点或者终点相同是不算的,这样的话先按东边的点升序排序,相同的话按照西边的点排序,然后枚举的时候统计比西边城市比他大的点,再更新;AC代码:#include#include#include#include#includeus

2017-04-21 15:26:31 189

原创 POJ-2481-树状数组

题目大意:求一个区间是多少个区间的真子集;题目解析:先按照左边界从小到大排序,一样的话按照右边界降序排序,循环枚举的时候如果发现和前面的区间一模一样,那么直接等于前一个区间的答案即可;AC代码:#include#include#include#include#includeusing namespace std;const int maxn=100010;struct n

2017-04-21 14:30:28 288

原创 POJ-2299-树状数组,离散化

题目大意:求一组数的逆序数有多少个;题目解析: 用树状数组做,向下更新,向上求和;AC代码:#include#include#include#include#includeusing namespace std;typedef long long ll;const int maxn=500010;ll d[maxn],a[maxn];struct node{

2017-04-16 21:24:46 511 1

原创 POJ-1195-二维树状数组

题目大意:一张n*n的网格图,可以在某个格子加上某个值,询问的话是一个矩形区间;题目解析:一道简单的二维树状数组,查询的话用sum(x2,y2)+sum(x-1,y1-1)-sum(x1-1,y2)-sum(x2,y1-1);AC代码:#include#include#include#include#includeusing namespace std;const in

2017-04-16 20:55:45 212

原创 POJ-2155-二维树状数组

题目大意:给定一张n*n的网格图,有种操作为'C'代表翻转左下角(x1,y1),右上角为(x2,y2)的矩形,还有一种操作为询问格子(x,y);题目解析:翻转操作肯定不可以暴力,根据imos,只需更新四个角落点就可以了,询问x,y的时候其实询问的是(x-1,y-1),因为lowbit有0的话会出现死循环,所以要把所有坐标都+1;AC代码:#include#include#inclu

2017-04-16 20:24:28 199

原创 POJ-2549-hash

题目大意:给定n个数字,求满足a+b+c=d中d的最大值;题目解析:一开始想到了O(n^3),觉得可能过不了,可以转换为a+b=d-c;然后预处理出a+b的所有值,注意要用到hash和邻接表处理,再枚举d-c即可;AC代码:#include#include#include#include#include#include#define inf -536870912using

2017-04-16 13:56:13 236

原创 POJ-3977-折半枚举,二分

题目大意:有n个数,要求它的一个子集,使得这个子集的和的绝对值最小,如果有多种情况,选个数最少的那种;题目解析:直接暴力枚举肯定超时,所以先枚举一半,另一半在枚举的过程中可以二分前一半;AC代码:#include#include#include#include#include#include#includeusing namespace std;typedef long

2017-04-16 12:24:23 408

原创 POJ-1222-尺取法,开关灯

题目大意:有一个5*6的网格图,每个格子都是一个灯,按灯的时候会使这个灯周围其余4个灯改变状态,给出初始状态,问最后按灯的结果;题目解析:先暴力出第一行所有按灯的情况,然后从第一行到第五行,如果i,j是亮的话,只能按i+1,j,最后判断最后一行是否全为暗的即可;AC代码:#include#include#include#include#include#includeusin

2017-04-15 15:28:18 308

原创 HDU-4722-线段树优化dp

题目大意:有n个人站成一排,现要求把他分成几组,要求每组的长度不能大于l并且每组最后一个人的身高必须严格大于前一个组的最后一个人的身高,每一组的得分为B[i]^2-B[i-1],问总得分的最大值是多少;题目解析:定义dp[i]表示以i作为结尾所能够取得的最大得分,那么dp[i]=max(dp[j]+val[i]*val[i]-val[j]);i-lAC代码:#include#in

2017-04-15 13:25:11 319

原创 POJ-2010-优先队列

题目大意:有c个牛,每个牛有分数c和学费f,现一共总可以提供F的学费给n个牛,问所有情况中c的中位数最大是多少;题目解析:首先按照c排序,再枚举每头牛作为中位数进行判断,先预处理出L和R数组,代表第i头牛左边和右边n/2头牛f总和的最小值;一开始看着书上以为是二分,还能过,其实是不可以的,因为那个条件不满足二分的性质;AC代码: #include #include

2017-04-12 20:18:26 512

原创 POJ-3685-二分

题目大意:有一个n*n的矩阵,第i行第j列元素的值为i*i+100000*i+j*j-100000*j+i*j;问第m大的元素是什么;题目解析:注意到如果j确定的话,那么函数就是关于i的增函数,所以可以二分再二分;AC代码:#include#include#include#include#includeusing namespace std;typedef long lon

2017-04-12 19:16:02 1693

原创 POJ-3621-01分数规划,spfa判负环

题目大意:一张有向图,求一个环的点权和除以边权和,使得那个环在所有环中点权和除以边权和最大。题目解析:最优比例环,令sigma(vi)/sigma(ei)=0,换句话说如果途中有负环,就不成立,上式成立需要所有换都不是负环,我们只需要二分ans即可;AC代码:#include#include#include#include#include#includeusing name

2017-04-11 11:59:02 330

原创 POJ-2728-01分数规划,Dinkelbach迭代

题目大意:最优比例生成树,分子为两点间的垂直距离,分母为欧几米德距离;题目解析:用迭代+prim,更新dist,dist为abs(ax-b.x)-ans*dist(a,b);(题目输出只能用f不能用lf)AC代码:#include#include#include#include#include#includeusing namespace std;const int ma

2017-04-10 20:58:17 712

原创 POJ-2976-01分数规划,二分

题目大意:给定n个分数的分子x和分母y,定义average=sigma(x)/sigma(y),先要将n个分数去掉k个,问average最大是多少;题目解析:二分答案ans,ok判断的时候对x-y*ans进行sort然后在累加得出答案;AC代码:#include#include#include#include#include#includeusing namespace s

2017-04-10 20:53:01 326

原创 POJ-2373-单调队列优化dp

题目大意:有一块长度为l的草原,你需要用洒水器把所有草坪都覆盖并且每块草坪只能被覆盖一次,有n个奶牛所在的草坪属于[l,r],这些区间只能有一个洒水器;题目解析:定义dp[i]为在第i块草坪结束的时候所苏姚最少的洒水器,dp[i]=min(dp[j]+1),i-2bAC代码:#include#include#include#include#includeusing names

2017-04-09 22:15:50 859 2

原创 POJ-1821-单调队列优化dp

题目大意:有n个工人准备铺m个连续的墙,每个工人有他必须图的一面墙壁Si,最多连续铺Li,每铺一个就花费Ci的钱,问最多要多少钱;题目解析:首先肯定将n个工人按照pos排下序,然后定义dp[i][j]表示第i个工人最后图第j块墙壁的最大值,那么dp[i][j]=max(dp[i-1][k]+(j-k)*cost);其中我们需要用单调队列维护dp[i-1][k]-k*cost的最大值,注意k的范

2017-04-08 14:56:52 400

原创 POJ-3071-dp,单调队列

题目大意:给定n个数字和m,现在需要把他分成若阁个连续的组,使得每组的的sum都必须要不大于m,问所有组的最大数字之和的最小值是多少;题目解析:一开始看到最大值的最小值就想到了二分,其实大可不必,以后还是要提醒自己以后这种分组的题目大多可以用dp来做,dp[i]=min(dp[j]+max(j+1,j+2.......i)),其中要满足后面的j+1到i的sum要不大于m并且维护最大值,就是单调

2017-04-08 00:37:22 242

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除