自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

God horses are clouds

快退役了,写点东西作纪念.

  • 博客(56)
  • 资源 (1)
  • 收藏
  • 关注

原创 HDOJ 1166 敌兵布阵 线段树: 单点更新 成段求和

//HDOJ 1166 敌兵布阵 线段树: 单点更新 成段求和/*题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1166题意: N个工兵营地(N<=50000),已知每个工兵营地的初始人数, M次(M<=40000)操作 : 1、在第i个营地增加j个人; 2、在第i个营地减少j个人;

2012-10-09 10:36:02 657

原创 uva 12501 - Bulky process of bulk reduction 线段树 不好想

//uva 12501 - Bulky process of bulk reduction/*题目地址:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3945题意:一个数列a[],初始化所有元素为100,有两种操作:1、更新操作:将一段连续的区

2012-10-08 00:06:31 732

原创 HDOJ 3682 To Be an Dream Architect 暴力

//HDOJ 3682 To Be an Dream Architect 暴力/*题意:有一个n*n的魔方,每次去除一排,问最后剩几个思路:只有1000次删除,记录所有删除的点,排序后去重,数据比较水...*/#include#include#include#includeusing namespace std;#define N 1000005int T,n,m

2012-10-08 00:06:18 582

原创 uva 12499 - I am Dumb 3 Staircase Nim

//uva 12499 - I am Dumb 3 Staircase Nim/*题目地址:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3943题目:前面一堆废话,只有后面一小段有用一个序列有n个数,从左到右非递减,每次可以在任意一个

2012-10-08 00:04:53 974

原创 CodeForces 91B Queue 线段树 单点更新 成段查询

//CodeForces 91B Queue 线段树 单点更新 成段查询/*题目地址:http://codeforces.com/problemset/problem/91/B题意:有n个数的失望值,失望值的定义是:离它最远的比它小的数 与 它本身之间 间隔的数的数量思路:线段树,结点保存区间最小值每次将当前的数更新为INF,然后查找整个区间内最右边的比它小的数的下标*/

2012-10-05 00:49:10 1355

原创 HDOJ 2492 Ping pong 线段树+离散化

//2492 Ping pong 线段树+离散化/*题意:有一陀人从左到右排成一排,每个人有一个唯一的技能值,每个人都找其他人比赛,比赛前要再找一个人做裁判,裁判的技能值不能比这两个人都高,也不能比这两个人都低,并且这两个人到裁判的距离总和不能大于他们之间的距离,不同的人比赛或者比赛时候的裁判不同算不同的比赛,求一共能比几场思路:由题意知道裁判必须在这两个人中间枚举每一个人做裁

2012-10-05 00:48:58 828

原创 HDOJ 4288 Coder 线段树 vector偷懒做法

//4288 Coder 线段树 vector偷懒做法/*题意:给一个序列,每次有3种操作: 1、往有序集合中增加一个原素x 2、把集合中的元素x 3、查询集合中下标%5=3的元素的总和思路:vector*/#include#include#include#include#include#includeusing namespace std;char o

2012-10-05 00:48:40 918

原创 CodeForces 228E The Road to Berland is Paved With Good Intentions 2Sat求解

//CodeForces 228E The Road to Berland is Paved With Good Intentions 2Sat求解/*题目地址:http://codeforces.com/problemset/problem/228/E题意:一幅图,100个点,最多10000条边,边权为0或1,每次可以选择一个点,将与之相连的边取反(0变为1,1变为0)问最后能不

2012-10-05 00:48:12 1101

原创 POJ 3264 Balanced Lineup 线段树 单点更新 求区间最值

//POJ 3264 Balanced Lineup 线段树 单点更新 求区间最值/*题意:求区间最大值最小值之差*/#include#include#include#define INF 100000000#define N 50005#define lson rt<<1,l,mid#define rson rt<<1|1,mid+1,rint n,m;int

2012-10-04 00:23:33 838

原创 HDOJ 4000 Fruit Ninja 线段树+数学

//HDOJ 4000 Fruit Ninja 线段树+数学/*题意:有一个数列a[],当下标满足i<j<k时候,满足a[i]<a[k]<a[j]个总数 -->x=a[i]; y=a[j]; z=a[k]; -->x<z<y 思路:(线段树操作很简单,数学转化不好想) x x<(y?z) - x<y<z; //(y?z)表示y、z大小不确定 一边更新,一边查

2012-10-04 00:23:22 644

原创 POJ 1195 Mobile phones 线段树 二维线段树 单点更新 区间求和

//POJ 1195 Mobile phones 线段树 二维线段树 单点更新 区间求和/*题意:一个矩阵,初始化为0,两种操作:1、将某点增加val2、查询一个子矩阵的和思路:二维线段树,单点更新,区间求和,记得pushup.*/#include#include#include#define N 1050#define lson rt<<1,l,mid#defi

2012-10-04 00:23:08 915

原创 HDOJ 1823 Luck and Love 二维线段树 单点更新 成段求最值

//HDOJ 1823 Luck and Love 二维线段树 单点更新 成段求最值/*题意:当操作符为‘I’时,表示有一个MM报名,后面接着一个整数,H表示身高,两个浮点数,A表示活泼度,L表示缘分值。 (100<=H<=200, 0.0<=A,L<=100.0)当操作符为‘Q’时,后面接着四个浮点数,H1,H2表示身高区间,A1,A2表示活泼度区间,输出符合身高和活泼度要求的MM中

2012-10-03 23:08:36 1127

原创 POJ 2029 Get Many Persimmon Trees 二维线段树 单点更新 区间求和

//POJ 2029 Get Many Persimmon Trees 二维线段树 单点更新 区间求和/*题意:一个0,1矩阵,在其n*m的子矩阵中找出含有1最多的,输出最多的数量思路:二维线段树*/#include#include#include#define N 105#define lson rt<<1,l,mid#define rson rt<<1|1,mid+1

2012-10-03 00:27:40 1066

原创 POJ 2155 Matrix 二维线段树 奇妙的成段更新 单点查询

//POJ 2155 Matrix 二维线段树 奇妙的成段更新 单点查询/*题意:有一个n*n的矩阵,初始化全部为0。有2中操作;1、给一个子矩阵,将这个子矩阵里面所有的0变成1,1变成02、询问某点的值思路:二维线段树,一维线段树的成段更新需要lazy。引申到二维线段树应该需要一个lazy,一个sublazy,可是这里什么都不用。奇妙之处在于这题的操作是异或,当某一段区间需要

2012-10-03 00:27:05 1815

原创 ZOJ 1610 Count the Colors 线段树 成段更新 单点求值

//ZOJ 1610 Count the Colors 线段树 成段更新 单点求值/*题意:有一个0-8000的区间,每次将一个子区间染色,颜色用整数表示,如果一段区间被重复染色的话,它的颜色会被后面染上去的颜色覆盖问最后有几种颜色出现,每种颜色的区间有多少个思路:注意是对区间染色,不是对点染色。成段更新 单点求值由于不需要知道父节点的信息,所以不需要pushup。*/#

2012-10-03 00:26:25 1284

原创 FAFU 1100 线段树 二维线段树 单点更新 区间求和

//FAFU 1100 线段树 二维线段树 单点更新 区间求和/*题意:一个矩阵,初始化为0,两种操作:1、将某点增加val2、查询一个子矩阵的和思路:二维线段树,单点更新,区间求和,记得pushup.*/#include#include#include#define N 1050#define lson rt<<1,l,mid#define rson rt<<1

2012-10-02 23:46:53 1239 1

原创 POJ 2299 && ZOJ 2386 Ultra-QuickSort 线段树

//POJ 2299 && ZOJ 2386 Ultra-QuickSort 线段树/*题意:给一个序列,序列中的数都不重复,每次可以将序列中的两个数交换,求将这个序列变成升序序列的最小交换次数思路:其实就是求这个序列的逆序数,离散化后边查询边插入即可注意ans会爆int*/#include#include#include#define lson rt<<1,l,mi

2012-10-02 23:46:28 1176

原创 POJ 3067 Japan 线段树 转化

//POJ 3067 Japan 线段树 转化/*题意:有一幅图,左边m个结点,右边n个结点,给出k条边连接左边结点和右边结点 求这些边相互交叉的个数,一个点只会有两条边经过思路:同样将线段转化成点然后放在二维平面图上,对于两条线段[si,ei],[sj,ej]满足交叉的条件是siej || si>sj&&ei<ej两条线段如果同起点或者同终点是不会相交的所以这样就转化为

2012-10-02 23:46:10 685

原创 POJ 2481 Cows 线段树

//POJ 2481 Cows 线段树/*题意:给n条线段(S,E),问每条线段中包含几条线段 线段i包含线段j的定义是Si Ej - Sj思路:将线段转化为点,这样问题就转化为问某点的左上方有多少个点就和POJ 2352 Stars相似了由于问的是左上方,所以点的排序应先按照y从大到小,再按x从小到大排照样按x轴建树,同样要注意这里的x从0开始,要处理下一个要注意的是

2012-10-02 23:45:55 1590

原创 POJ 2352 Stars 线段树 单点更新 成段求和

//POJ 2352 Stars 线段树 单点更新 成段求和/*题意:给一系列点(按y递增,y相同时按x递增排列),level指不超过当前点的高度且不在当前点右边的点的个数 求level值分别为0,1,2,..n-1的个数思路:由于题意已经是按顺序给的点,所以直接按x轴建树 注意x从0开始,线段树从1开始,所以x全部+1处理*/#include#include#inc

2012-10-02 23:45:16 757

原创 ZOJ 3465 The Hive 暴力模拟

//ZOJ 3465 The Hive//暴力模拟#include#include#includeusing namespace std;#define N 10int n;char s[N];stackS[N];int arr[N] = {0,7,8,9,10,11,10,9,8,7};void init(){ int i; for(i = 1; i <

2012-09-27 00:34:45 726

原创 ZOJ 3464 Rugby Football 水题

//ZOJ 3464 Rugby Football//水题#include#include#define N 10005int a[N];int n,t,l;int cmp(const void *a,const void *b){ return *(int *)b - *(int *)a;}int main(){ int T; int i;

2012-09-27 00:34:11 786

原创 ZOJ 3396 Conference Call 求经过特定3点的最小生成树

//ZOJ 3396 Conference Call//题意 求经过特定3点的最小生成树//思路:枚举任何一点作为支撑点 ,特定的3点要相连必须经过共同的一点 ,求这三点到所枚举点的最短路和,取最小值即为答案#include#include#include#includeusing namespace std;#define INF 50000000#define N 2000

2012-09-27 00:32:37 791

原创 HDOJ 4277 USACO ORZ 搜索 剪枝

//HDOJ 4277 USACO ORZ 搜索 剪枝/*题意:将n跟木棒分成3堆,3堆木棒的总和分别为a,b,c,满足能以a,b,c组成三角形,问有多少种不同的情况思路:暴搜+剪枝 先固定一根木棒在某一堆*/#include#include#include#includeusing namespace std;//#define int64 long long#def

2012-09-26 00:08:26 679

原创 HDOJ 4107 Gangster 线段树 成段更新变化

//HDOJ 4107 Gangster 线段树 成段更新变化/*题意:n个数,初始都是0,m次更新操作: 若元素a[i] < p,则a[i]+=c,否则a[i]+=2*c 最后输出所有的数字思路:当一个区间内的最大值mmax<p,则该区间内所有的数都+c,朴素的成段更新 当一个区间内的最小是mmax>=p,则该区间内的所有的数都+2*才,朴素的成段更新 不满足的话

2012-09-26 00:02:54 759

原创 HDOJ 3911 Black And White 线段树 区间合并 成段更新

//HDOJ 3911 Black And White 线段树 区间合并 成段更新/*题意:有一堆黑、白球排成一排,有两种操作: 1:将一段连续的球改变颜色,黑色变成白色,白色变成黑色 2:查询一段区间内连续的黑色的球的个数 思路:每个结点记录7个信息: lsum0:从左端开始的连续的白球个数 rsum0:从右端开始的连续的白球个数 msum0:区间内连续的

2012-09-26 00:02:19 979

原创 HDOJ 3874 Necklace 线段树 单点更新 成段查询

//HDOJ 3874 Necklace 线段树 单点更新 成段查询 /*题意:求某区间没所有值不同的数的总和思路:先对所有的询问按照区间末尾排序 然后从序列前面开始遍历,当遇到相同的元素的时候 将前面的元素删除,这样保证有重复的元素一定出现在距离区间末尾最近的 转化后就变成简单的单点更新 区间求和了 数据较大 要离散化处理*/#include#includ

2012-09-26 00:01:41 840

原创 HDOJ 4414 Finding crosses 搜索

//HDOJ 4414 Finding crosses 搜索/*题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4414题意:问一副图中的十字架个数有几个 十字架的定义是由'#'组成并且十字架的size大于等于3且不能有'#'出现在其相邻的位置(水平、竖直) 具体请看题目思路:枚举中点位置,然后找其四个方向能延伸出去多少个'#

2012-09-24 23:36:17 733

原创 HDOJ 4417 Super Mario 线段树 单点更新 成段查询

//HDOJ 4417 Super Mario 线段树 转化为单点更新 成段查询/*题意:查询区间内小于等于某数的数的总和思路:离线查询,先记录所有的询问并排序,然后一边删一边查,查之前把不满足的删掉 就转化为简单的单点更新,成段求和。*/#include#include#include#define lson rt<<1,l,mid#define rson rt<

2012-09-24 23:34:15 759

原创 HDOJ 3333 Turing Tree 线段树 单点更新 成段查询

//HDOJ 3333 Turing Tree 线段树 单点更新 成段查询/*题意:求某区间没所有值不同的数的总和思路:先对所有的询问按照区间末尾排序 然后从序列前面开始遍历,当遇到相同的元素的时候 将前面的元素删除,这样保证有重复的元素一定出现在距离区间末尾最近的 转化后就变成简单的单点更新 区间求和了 数据较大 要离散化处理*/#include#in

2012-09-24 23:33:32 752

原创 HDU 2871 Memory Control 线段树 区间合并 单点更新 容器的使用

//HDU 2871 Memory Control 线段树 : 区间合并 单点更新 容器的使用/*题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2871题目大意:现在有1到N(N <= 50000)个连续内存块,然后给出四种操作: 1. Reset 释放所有内存块,并且输出“Reset Now”。 2. New x 找到一块有连续x块

2012-09-23 23:54:44 843

原创 POJ 3667 Hotel 线段树 区间合并(成段更新)

//POJ 3667 Hotel 线段树 区间合并(成段更新)/*题目大意:有n间房子,有两种操作: 1 a:询问是不是有连续长度为a的空房间,有的话住进最左边 2 a b:将[a,a+b-1]的房间清空思路:记录区间中最长的空房间 ,线段树操作: update:区间替换 query:询问满足条件的最左端点 ,线段树每个节点记录 3个参数 : lsum :左端开始的空余量

2012-09-23 23:51:02 824

原创 HDOJ 1556 Color the ball 线段树 : 成段更新 单点查询

//HDOJ 1556 Color the ball 线段树 : 成段更新 单点查询/* 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1556题目大意:n(n<=100000)个气球从左到右排列,每次在[a,b]区间上涂一次颜色, m次操作后,问第i个气球一共被涂过几次颜色。思路:成段更新*/#include#include

2012-09-23 23:47:59 1015

原创 HDOJ 1754 I Hate It 线段树:单点替换 成求段最值

//HDOJ 1754 I Hate It 线段树:单点替换 成求段最值/*题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1754题目大意:有n(0<n<=200000)个学生,已知每个学生的初始成绩。 有m(0<m<5000)次操作: 1、将a学生的成绩改为b; 2、查询区间[a,b]中成绩最高的思路:线段树叶子结点记录每个

2012-09-22 23:59:54 1682

原创 HDOJ 1394 Minimum Inversion Number 线段树 : 单点更新 成段求和

//HDOJ 1394 Minimum Inversion Number 线段树 : 单点增加 成段求和/*题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1394题意:已知一个数列,数列个数n<=5000,数列中的数的范围在[0,n-1],并且数不重复。每次可以将数列的第一个数移动到最后面,这样可以构造出n个数列。求这这n个数列中的最小

2012-09-22 23:56:42 850

原创 HDOJ 4203 Doubloon Game 博弈 找规律

//HDOJ 4203 Doubloon Game 博弈 找规律/*题意:有n个硬币,两个人轮流取,每次只能取m个pow,(1,m,m^2...) 如果先手必败输出0,否则输出第一步最少取走的硬币数量思路:找规律 当n=2时: 0 1 2 |3 4 5 |6 7 8 9 ... P N N |P N N |P N N P ... 当n=3时: 0 1

2012-09-22 00:32:56 741

原创 HDOJ 4155 The Game of 31 博弈搜索

//HDOJ 4155 The Game of 31 博弈搜索/*题意:有编号为1、2、3、4、5、6的牌各4张,共24张,两个人轮流取牌, 取牌后要使所有取出的牌的总不超过31,不能取的输。 游戏从给定的局面开始。思路:从给定的局面开始dfs,当此状态能够到达p状态,则此状态有n状态 否则为p状态,然后判断此时是先手还是后手*/#include#include

2012-09-22 00:32:03 907

原创 HDOJ 1524 A Chess Game SG函数

//HDOJ 1524 A Chess Game SG函数/*题意:有一个有向无环图,在一些点有石子,这些石子每次可以往其后继结点移动。 两个人轮流移动,不能移动的为输思路:建图,算出每个点的SG值*/#include#include#include#define N 1005#define M 1000005int n,m;int num,head[N];in

2012-09-22 00:31:23 807

原创 HDOJ 3980 Paint Chain 博弈 SG函数

//HDOJ 3980 Paint Chain 博弈 SG函数/*题意:有n个石子围成一个环,每次从中取走m个连续的石子,无法取的输思路:第一步将取走之后环就变成了链,之后就可以用SG了 所以特判第一步之后 先手变后手 后手变先手就可以了*/#include#include#include#define N 1005int n,m;int sg[N];int

2012-09-20 23:55:12 803

原创 HDOJ 2999 Stone Game, Why are you always there? 博弈 SG函数

//HDOJ 2999 Stone Game, Why are you always there? 博弈 SG函数/*题意:有n个石子排成一行,每次只能取走连续的f个石子,f为给定的一个集合。 问先手 胜负态思路:局面不可能存在无法判断的情况 假设有4个石子 集合中只有一个数2 则后继状态有{0,2}{1,1},{2,0} 因为{0,2}和{2,0}表示一样的状态

2012-09-20 23:54:36 698

空空如也

空空如也

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

TA关注的人

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