- 博客(27)
- 收藏
- 关注
原创 HDU-4521 小明序列 线段树+DP
题目链接LIS解法#include #include #include using namespace std;const int maxn = 100005;const int inf = 1<<30;int n,k;int a[maxn],dp[maxn],c[maxn];//a数组存放序列//dp记录在i点时最长的递增子序列长度//c数组为
2014-03-30 21:16:34 401
原创 POJ-2886 Who Gets the Most Candies? 线段树 + 反素数
题目链接#include#include#include#include#include#include#include#include#includeusing namespace std;const int maxn = 500100;const int inf = 1<<30;//0x7f;int n,k;char name[maxn][11]; i
2014-03-30 19:07:19 411
原创 HDU-3225 Help with Intervals 线段树成段更新
题目链接题意:区间操作,交,并,补等思路:我们一个一个操作来分析:(用0和1表示是否包含区间,-1表示该区间内既有包含又有不包含)U:把区间[l,r]覆盖成1I:把[-∞,l)(r,∞]覆盖成0D:把区间[l,r]覆盖成0C:把[-∞,l)(r,∞]覆盖成0 , 且[l,r]区间0/1互换S:[l,r]区间0/1互换成段覆盖的操作很简单,比较特殊的就是区间0/1
2014-03-29 20:20:03 460
原创 HDU-2795 Billboard 线段树单点更新
题目链接#include "stdio.h"const int maxn = 200005;int tree[maxn*3];int v,w,ans;int Min( int a,int b ){ return a<b?a:b;}void buildtree( int ld,int rd,int t ){ tree[t] = 0; if( ld
2014-03-28 22:12:04 324
原创 HDU-3667 Hetol 线段树 区间合并
题目链接题目大意:一共有n个房间,初始全为空,会有两种操作,一种是询问是否有r个连续的房间,若有,则将最左端有r个连续的房间全部入住,若没有则输出0,另一种是将从u开始的d个位置退房。#include#include#include#include#include#include#include#include#includeusing names
2014-03-28 20:56:18 428
原创 HDU-1698 Just a Hook 线段树成段更新
题目链接#include "stdio.h"const int maxn = 100050;int n,x,y,z;struct Node{ int val;}tree[maxn*4];void pushup( int t ){ tree[t].val = tree[t*2].val + tree[t*2+1].val;}void pushdown(
2014-03-28 14:08:21 483
原创 HDU-1394 Minimum Inversion Number 树状数组
题目链接#include "stdio.h"#include "string.h"const int maxn = 5005;int n;int a[maxn],c[maxn];int lowbit( int x ){ return x&(-x);}void add( int x ){ while( x<=maxn ) {
2014-03-28 14:01:32 356
原创 POJ-2481 Cows 树状数组
题目链接给出n个牛的坐标,i牛的坐标为[Si,Ei],j牛的坐标为[Sj,Ej],若SiEj-Sj,则牛i比牛j强壮,现在呀要求出每个牛比它强壮的牛的数量。#include#include#include#include#include#include#include#include#includeusing namespace std;const
2014-03-28 12:19:18 328
原创 HDU-4288 Coder 线段树
题目链接题目大意:给你一个有序集合,进行插入,删除,求所有下标摸为3的数和;#include#include#include#include#include#include#include#include#includeusing namespace std;const int maxn = 100005;const int inf = 1<<
2014-03-27 18:10:29 464
原创 POJ-2828 Buy Tickets 线段树
题意:人们一个一个的来排队并插队,按人到来的顺序给出每个人插队的位置(插在第几个人后面),并告知每个人的id号,输出最终队伍的情况。分析:可以用线段树,从最后来的一个人开始向来得更早的人遍历,这样pos(插在第几个人后面)的意义就变成了,前面有多少个空位。线段树上每个节点中存储的是当前时刻,该区间有多少空位。#include#include#includ
2014-03-25 16:42:07 306
原创 FAFU-1006 旅游问题 欧拉回路
题目链接#include "stdio.h"#include "string.h"const int maxn = 105;int rudu[maxn],map[maxn][maxn],path[maxn*10]; int n,m,k; //代表元void DFS(int x){ for( int i=1;i<=n;i++ ) {
2014-03-16 15:16:14 482
原创 HDU-1878 欧拉回路
题目链接#include#include#include#include#include#include#include#include#includeusing namespace std;const int maxn =1005;const int inf = 1<<30;//0x7f;typedef __int64 LL;int n,m;int p[m
2014-03-16 15:11:30 386
原创 POJ-1671 Rhyme Schemes 第二类Stirling数
题目链接给定,有递归关系递推关系的说明:考虑第n个物品,n可以单独构成一个非空集合,此时前n-1个物品构成k-1个非空的不可辨别的集合, 方法数为S(n-1,k-1);也可以前n-1种物品构成k个非空的不可辨别的 集合,第n个物品放入任意一个中,这样有k*S(n-1,k)种方法。#include#include#include#include#include
2014-03-13 16:12:08 681
原创 HDU-1710 Binary Tree Traversals 二叉树遍历
#include#include#include#include#include#include#include#include#includeusing namespace std;const int maxn =1005;const int inf = 1<<30;//0x7f;typedef __int64 LL;int n;int pre[maxn],addr[
2014-03-13 15:09:57 432
原创 HDU-3999 The order of a Tree 树的遍历
题目链接#include#include#include#include#include#include#include#include#includeusing namespace std;const int maxn =100005;const int inf = 1<<30;//0x7f;typedef __int64 LL;int n;struct
2014-03-12 20:24:36 391
原创 POJ-3660 Cow Contest 传递闭包
题目大意:牛之间有绝对的强弱,给出一些胜负关系,问有多少头牛可以确定其绝对排名。解题思路:传递闭包(类似于floyd算法 枚举中间点更新任意两点是否可达) 判断是否能确定排名为已他强的+弱的数为n-1;#include#include#include#include#include#include#include#include#includeusing name
2014-03-11 17:46:09 480
原创 HDU-4568 Hunter 最短路 + 状态压缩DP(TSP)
题目链接题目大意:给一个N*M的矩形,矩形的每个点都有一个值(-1表示不能通过),表示到这个点需要用的花费。现在给定K个宝物的坐标,要求从任意位置进入矩阵取完这些宝物,再从任意位置出来需要的最少花费。解题思路:先求出每个宝物到其他宝物点的距离与离开边界的距离 再用状态压缩dp求最佳路线(TSP)#include#include#include#include
2014-03-11 11:39:54 698
原创 HDU-1839 Delay Constrained Maximum Capacity Path 最短路+二分
题目链接题目大意:有N个点,点1为珍贵矿物的采矿区, 点N为加工厂,有M条双向连通的边连接这些点。走每条边的运输容量为C,运送时间为D。他们要选择一条从1到N的路径运输, 这条路径的运输总时间要在T之内,在这个前提之下,要让这条路径的运输容量尽可能地大。一条路径的运输容量取决与这条路径中的运输容量最小的那条边。解题思路:二分查找路径中最小容量 最短路看是否满足在
2014-03-09 15:49:25 451
原创 HDU-3339 In Action 最短路+01背包
题目链接题目大意:要破坏掉一个电网, 有n个电站编号为1~n,每个电站有它自己的能量值。有一个军事基地编号为0,里面有无限个坦克,可以开到某个电站轰炸破坏掉电站,并且一个坦克只能破坏一个。现在要破坏掉其中一些电站,要让电网的总能量值损失一半以上, 并且要让所有执行任务的坦克去目的地路费最少。解题思路:先求最短路 每个点都有摧毁与不摧毁2个选择 于是联想到
2014-03-09 14:02:53 499
原创 HDU-1535
题目链接#include#include#include#include#include#include#include#include#includeusing namespace std;const int maxn = 1000005;const int inf = 1<<30;typedef __int64 LL;int n,m,pos;struct n
2014-03-09 00:48:36 529
原创 最短路 SPEA
裸最短路 练模板#include#include#include#include#include#include#include#includeusing namespace std;const int maxn = 105;const int inf = 1<<30;typedef __int64 LL;int n,m,pos;struct node{
2014-03-04 11:09:14 615
原创 HDU-2141 Can you find it? 简单二分
题目链接题目大意:给你三个数列A,B,C 在三个数列中个取个数满足a+b+c = x;#include#include#include#include#include#include#include#includeusing namespace std;const int maxn = 505;const int inf = 1<<30;typede
2014-03-04 10:15:24 380
原创 POJ-3258 River Hopscotch 二分枚举求上限
题目链接题意:有一条河,河的长度已知,河中间有一些石头,石头的数量知道,相邻两块石头之间的距离已知。现在可以移除一些石头,问移除m块石头后,相邻两块石头之间的距离的最小值最大是多少。思路:二分枚举答案。每 次二分枚举一个值,判断该值能够去掉多少块石头。二分枚举求上限。#include#include#include#include#include#in
2014-03-04 09:28:05 1546
原创 POJ 2002 Squares 几何 + 二分搜索 或 hash
题目链接题目大意:给你n个点 问能组成多少个不同的正方形 思路:枚举2个点 由全等三角形得到另外2点坐标 二分查找这2个点是否存在已知两个点,然后做出两个全等三角形。之后就得出结论(x1+|y1-y2|, y1+|x1-x2|),(x2+|y1-y2|,y2+|x1-x2|)。#include#include#include#include#include#
2014-03-02 20:04:46 451
原创 HDU-2157 How many ways?? 矩阵快速幂
题目链接#include#include#include#include#include#include#include#includeusing namespace std;const int maxn = 105;const int inf = 1<<30;const int mod = 1000;int n,m,q;struct Matrix{ in
2014-03-01 14:49:38 354
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人