【poj】2481 Cows【线段树单点更新】

题意: 有N头牛 每头牛有一个[S,E]值 要求找出所有牛j使得Si Ej - Sj 对每头牛输出这样的牛的个数

2016-05-31 23:25:24

阅读数:141

评论数:0

【hdu】3231 Box Relations【拓扑排序三维】

题意:空间中存在n个长方体,m个长方体之间的关系 I代表长方体相交 Xab代表a长方形的所有点x坐标小于b的任意一点 YZ同理 要求给出一组满足条件的坐标 否则输出-1 题解:一个长方体可以由一个体对角线上的两个端点表示也就是说2个三维坐标来表示 我们可以对三维坐标分解来看 X代表a矩形的x轴坐标...

2016-05-31 02:04:59

阅读数:231

评论数:0

【hdu】3001 Travelling【三进制状压dp】

题意:n个点m条边的图,任意选择起点,要求经过每个点不超过两次,求遍历全图的最小cost 题解:普通状压dp2进制压缩,这个题三进制压缩0表示未经过1表示经过一次2表示经过两次,因为三进制不同于二进制,所以预先处理状态在三进制状态下每一位的值,dp[i][j]记录当前状态为i最后一个到达节点为j...

2016-05-31 01:48:40

阅读数:215

评论数:0

.CodeforcesBeta Round #19 D. Points 线段树 单点更新

题意:三个操作均在二维坐标轴上进行 Add(x,y)加入一个点 remove移出一个点 find寻找最小的坐标严格大于当前点的坐标 没有输出-1 x优先级大于y 题解:因为是在二维坐标轴上操作所以可以将所有操作按照x轴排序,然后把x轴坐标当成线段树的区间,y区间当做线段树权值,线段树记录当前线段...

2016-05-31 01:19:53

阅读数:127

评论数:0

poj 2886 线段树 单点更新

题意:N个小孩围成一圈,玩约瑟夫环,每个小孩有一张卡片上面是数字a,正数代表右手边第a个小孩出队,负数表示左手边,游戏从第k个小孩开始,游戏直到所有小孩出队为止,第p个出队小孩得到f[p]分数,f[p]为p的因子数 题解:这里引入反素数的概念不清楚可以看http://blog.csdn.net/...

2016-05-31 01:01:44

阅读数:140

评论数:0

poj 2828 线段树 单点更新

题意:有N个人排队,每一个人都有一个val来对应,每一个后来人都会插入当前队伍的某一个位置pos后面。要求把队伍最后的状态输出。 题解:一看到这种题目如果之前做过类似的题目很容易就可以想到要倒序完成 因为这样每个数插入的位置在当前都是可以确定的,sum记录当前线段的空位数 #include #...

2016-05-31 00:28:55

阅读数:119

评论数:0

hdu 4906 状压dp

题意:给出n,k 题解:看到k 状态转移方程next=(1 #include #include #include #include #define ll __int64 using namespace std; const ll mod=1e9+7; ll dp[1<<21],v; i...

2016-05-31 00:03:34

阅读数:170

评论数:0

hdu 3874 线段树 离线查询

要求一个区间所有数之和 求和时要去重  离线查询 先把所有查询离线 然后按照右端点排序 每次保证加入后一个数的时候线段树中没有和他重复的 如果重复就把前一个删掉 这样由于之前排序过 保证不会漏解 #include #include #include #define lson l,mid,rt&...

2016-05-26 01:21:55

阅读数:189

评论数:0

hdu 2852 线段树 单点更新

主要是查询的时候 本来时间就比较紧 查询的时候直接暴力二分求答案 超时 看了下别人代码 主要是find的时候要直接find速度快了很多 #include #include #define lson l,mid,rt<<1 #define rson mid+1,r,rt<<...

2016-05-26 01:18:54

阅读数:182

评论数:0

hdu 5045 状压dp

因为所有人做题数量差不能大于1 所以可以把每n道题看成一组 每一组必须由每个人完成一道的方式完成 dp[i][j] i代表当前题数 j代表当前队员状态 #include #include #include using namespace std; double dp[1005][1050],r...

2016-05-24 23:36:32

阅读数:118

评论数:0

hdu 4114 状压dp floyd

dp[s1][s2][i] s1为当前必达景点状态 s2为当前拥有钥匙状态 i为当前到达节点

2016-05-24 23:26:05

阅读数:191

评论数:0

hdu 3920 状压dp

题意:2n个敌人需要杀死,分布在地图上的不同位置,每次能杀死2个人,代价为本人与敌人1距离+敌人1与敌人2距离 思路:状态压缩dp 状态o每位代表一个敌人0未杀死1杀死 直接一维dp枚举 #include #include #include #include using namespace s...

2016-05-24 22:56:22

阅读数:203

评论数:0

hdu 5690 多种方法实现

太菜了 比赛的时候下面罗列的方法大致方向都想对了 但都差了一点 没敢写 不够自信 第一种方法:找循环节法 注意循环节不一定就从第一个开始 #include #include #define ll __int64 using namespace std; int vis[10005]; int nu...

2016-05-21 22:15:08

阅读数:588

评论数:1

hdu 5381 线段树区间合并

gcd运算的时候 如果之前的保持不变 新加入一个数进行gcd运算 得到的答案只会越来越小 这题要我们求[l.r]中所有子区间的gcd值之和 我们就要尽量保存子区间的gcd在合并区间的时候以尽可能快的速度合并 我们可以知道gcd的数量是log级别的 所以我们可以保存Rg[32],Rn[32],...

2016-05-21 10:06:48

阅读数:363

评论数:0

hdu 3046 最小割

直接每个点和周围四个点连一条容量为1的边 s与狼连容量为inf的边 羊与t连容量为inf的边 之前以为这样会超时 还是太嫩了。。 #include #include #include using namespace std; const int MAXN=500000; const int...

2016-05-21 09:45:50

阅读数:219

评论数:0

hdu 4825 字典树

xor的题目 没怎么接触过主要还是字典树没学好 读入询问的时候 询问的这一位是0 那么尽量往1走 反之同理 这样就能尽量使得异或值最小 #include #include using namespace std; #define ll __int64 const int M=55; const...

2016-05-19 23:59:57

阅读数:161

评论数:0

hdu 2894 欧拉回路

代码很短 但看别人的blog看了很久 才理解 第一问的答案毫无疑问是2^n 第二问的答案长度肯定是2^n   因为要求前n个必然是0 原问题是要求能够表示出0-(2^n-1)的数 每个数只能出现一次 一圈是一个循环 每条边也只能经过一次 就是求一个欧拉回路 从u向to1=(u 其他解释都...

2016-05-19 23:43:13

阅读数:281

评论数:0

hdu 4292 最大流

有食物与饮料两个限制条件 之前还在想怎么连边 后来想到可以s与食物连边 流量为食物数量 饮料与t连 流量为饮料数量 这样问题就完美解决了 然后食物与人连 人与饮料连 流量为1 其中人要拆点 来控制人的数量 两个点之间连流量为1 写错了个小细节之前 #include #include #inc...

2016-05-19 22:43:42

阅读数:182

评论数:0

hdu 3667 拆边费用流

因为每条边的容量是c 穿过这条边的代价与流的平方成正比 cost=a*f*f 所以可以从u向v连c条边 每条边的流为1 代价为a 3a 5a (2*i-1)a    跑一边最小费用流 代价就变成了流的平方 #include #include #include #include using n...

2016-05-18 23:30:42

阅读数:151

评论数:0

hdu 4284 状压dp

dp[i][j]表示到达状态i且最后到达的城市为j最多剩余多少钱 因为必达城市有15个 所以最多1 floyd预处理不同城市之间的距离 #include #include #include using namespace std; const int N=(1<<16)+10; c...

2016-05-18 23:19:35

阅读数:136

评论数:0

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