![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM
xiamiwage
这个作者很懒,什么都没留下…
展开
-
HDOJ 3911 Black And White 线段树 区间合并 成段更新
//HDOJ 3911 Black And White 线段树 区间合并 成段更新/*题意:有一堆黑、白球排成一排,有两种操作: 1:将一段连续的球改变颜色,黑色变成白色,白色变成黑色 2:查询一段区间内连续的黑色的球的个数 思路:每个结点记录7个信息: lsum0:从左端开始的连续的白球个数 rsum0:从右端开始的连续的白球个数 msum0:区间内连续的原创 2012-09-26 00:02:19 · 941 阅读 · 0 评论 -
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 · 665 阅读 · 0 评论 -
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 · 774 阅读 · 0 评论 -
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 · 714 阅读 · 0 评论 -
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 · 775 阅读 · 0 评论 -
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 · 1546 阅读 · 0 评论 -
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 · 1137 阅读 · 0 评论 -
ZOJ 1610 Count the Colors 线段树 成段更新 单点求值
//ZOJ 1610 Count the Colors 线段树 成段更新 单点求值/*题意:有一个0-8000的区间,每次将一个子区间染色,颜色用整数表示,如果一段区间被重复染色的话,它的颜色会被后面染上去的颜色覆盖问最后有几种颜色出现,每种颜色的区间有多少个思路:注意是对区间染色,不是对点染色。成段更新 单点求值由于不需要知道父节点的信息,所以不需要pushup。*/#原创 2012-10-03 00:26:25 · 1241 阅读 · 0 评论 -
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 · 720 阅读 · 0 评论 -
POJ 2155 Matrix 二维线段树 奇妙的成段更新 单点查询
//POJ 2155 Matrix 二维线段树 奇妙的成段更新 单点查询/*题意:有一个n*n的矩阵,初始化全部为0。有2中操作;1、给一个子矩阵,将这个子矩阵里面所有的0变成1,1变成02、询问某点的值思路:二维线段树,一维线段树的成段更新需要lazy。引申到二维线段树应该需要一个lazy,一个sublazy,可是这里什么都不用。奇妙之处在于这题的操作是异或,当某一段区间需要原创 2012-10-03 00:27:05 · 1777 阅读 · 0 评论 -
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 · 879 阅读 · 0 评论 -
HDOJ 3389 Game (博弈:Staircase Nim)
//3389 Game (Staircase Nim)/*题意:有n个盒子编号为1-n,每个盒子里面有若干物品 当编号满足a>b && (a+b)%3==0 && (a+b)%2==1时 可以从a盒子中拿>=1个物品到b盒子中思路:找规律后转换为Staircase Nim 满足此条件:(a+b)%3==0 && (a+b)%2==1的即是3个倍数并且是奇数:3、9、15、原创 2012-09-13 23:00:04 · 690 阅读 · 0 评论 -
宁波工程学院校赛解题报告
宁波校赛解题报告(by 「D.Ten)//OJ:http://acm.nbut.cn///NBUT2012校赛I(東方Project專題) 网络同步赛 (共9题 目前AC8题)PS: 剩1题 H题(1121):几何(没学)//A [1114] Alice's Puppets//邻接矩阵 125MS#include#include#includeusing namesp原创 2012-05-13 21:03:41 · 1855 阅读 · 0 评论 -
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 · 1030 阅读 · 0 评论 -
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 · 1199 阅读 · 1 评论 -
POJ 3067 Japan 线段树 转化
//POJ 3067 Japan 线段树 转化/*题意:有一幅图,左边m个结点,右边n个结点,给出k条边连接左边结点和右边结点 求这些边相互交叉的个数,一个点只会有两条边经过思路:同样将线段转化成点然后放在二维平面图上,对于两条线段[si,ei],[sj,ej]满足交叉的条件是siej || si>sj&&ei<ej两条线段如果同起点或者同终点是不会相交的所以这样就转化为原创 2012-10-02 23:46:10 · 649 阅读 · 0 评论 -
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 · 1091 阅读 · 0 评论 -
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 · 603 阅读 · 0 评论 -
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 · 820 阅读 · 0 评论 -
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 · 884 阅读 · 0 评论 -
HDOJ 2492 Ping pong 线段树+离散化
//2492 Ping pong 线段树+离散化/*题意:有一陀人从左到右排成一排,每个人有一个唯一的技能值,每个人都找其他人比赛,比赛前要再找一个人做裁判,裁判的技能值不能比这两个人都高,也不能比这两个人都低,并且这两个人到裁判的距离总和不能大于他们之间的距离,不同的人比赛或者比赛时候的裁判不同算不同的比赛,求一共能比几场思路:由题意知道裁判必须在这两个人中间枚举每一个人做裁原创 2012-10-05 00:48:58 · 811 阅读 · 0 评论 -
POJ 1704 Georgia and Bob (博弈:Staircase Nim)
//POJ 1704 Georgia and Bob (Staircase Nim)/*题意:有一排的格子从左到右编号为1、2、3...,有n个石子放在上面,每个格子最多只能放一个石子 两个人轮流取石子,每次可以把取的石子往左移。 约束条件:1、不能跨越其他石子 2、不能和其他石子放在同一个格子里面思路:转化为Staircase Nim 相邻两个石原创 2012-09-13 15:50:47 · 493 阅读 · 0 评论 -
HDOJ 1079 && POJ 1082 Calendar Game (博弈: 暴力枚举所有状态的P\N)
//1079 Calendar Game 博弈 暴力枚举所有状态的P\N,其实网上有非常简单的做法#include#include#include#include#includeusing namespace std;bool vis[105][15][35];int mon[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};struc原创 2012-09-13 23:11:56 · 1422 阅读 · 0 评论 -
HDOJ 3715 Go Deeper (2Sat: 二分答案判定)
//HDOJ 3715 Go Deeper (2Sat: 二分答案判定)/*题意:给定一个程序 ,求go(0, n, m)输出的值中的最大值 程序如下: go(int dep, int n, int m) begin output the value of dep. if dep < m and x[a[dep]] + x[b[dep]] != c[dep] then原创 2012-09-15 19:11:15 · 572 阅读 · 0 评论 -
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 · 1072 阅读 · 0 评论 -
CodeForces 91B Queue 线段树 单点更新 成段查询
//CodeForces 91B Queue 线段树 单点更新 成段查询/*题目地址:http://codeforces.com/problemset/problem/91/B题意:有n个数的失望值,失望值的定义是:离它最远的比它小的数 与 它本身之间 间隔的数的数量思路:线段树,结点保存区间最小值每次将当前的数更新为INF,然后查找整个区间内最右边的比它小的数的下标*/原创 2012-10-05 00:49:10 · 1317 阅读 · 0 评论 -
HDOJ 3714 Error Curves 三分搜索
//HDOJ 3714 Error Curves 三分搜索/*题意:给定一堆二元一次函数 现在定义一个函数F(x) = max(Si(x)),x is [0, 1000],S(i)表示给定的那些二元一次方程 现在求F(x)的最小值 先画图发现题目所定义的函数也是一个类似二元函数的图形 3分求极值*/#include#include#include#include原创 2012-09-15 18:59:16 · 403 阅读 · 0 评论 -
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 · 567 阅读 · 0 评论 -
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 · 717 阅读 · 0 评论 -
HDOJ 2897 邂逅明下 (博弈 : 找规律)
//HDOJ 2897 邂逅明下 博弈 找规律/*题意:(题目很操蛋) 有n个硬币,每次最少取p个,最多取q个,当剩余硬币少于p个时,要一次性取完思路:找规律 例如7 2 4 1 2 3 4 5 6 7 8 9... P P N N N N P P N... 结果很显然*/#include#include#includeint n,p,q,ans原创 2012-09-14 19:42:38 · 2530 阅读 · 0 评论 -
HDOJ 3032 Nim or not Nim? (博弈 :SG)
//HDOJ 3032 Nim or not Nim? (博弈 :SG)/*题意:有n堆石子,每次可以选择一堆,执行一下操作: 1、取走至少一个 2、如果这堆石子大于一个,可以将其分成2堆,每堆至少一个 取走最后一个的胜利思路:在Nim的基础上增加了一种操作,无法直接使用Nim的做法,尝试找规律 易得sg(0) = 0; sg(1) = 1; 当一堆原创 2012-09-14 20:55:57 · 388 阅读 · 0 评论 -
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 · 955 阅读 · 0 评论 -
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 · 647 阅读 · 0 评论 -
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 · 791 阅读 · 0 评论 -
UVA 10048 Audiophobia 最小生成树
//UVA 10048 - Audiophobia/*题意:n个点,m条无向路,每条路有一个噪音指数,从两点间的路径中选一条路,使这条路的最大噪音指数最小思路:排序+并查集 类似克鲁斯卡尔*/#include#include#include#includeusing namespace std;#define N 105int map[N][N];int c,s,q;原创 2012-09-16 10:43:33 · 690 阅读 · 0 评论 -
HDOJ 2177 取(2堆)石子游戏 博弈 威佐夫博奕变形(Wythoff Game)
//HDOJ 2177 取(2堆)石子游戏 威佐夫博奕变形(Wythoff Game)/*题意:在Wythoff Game游戏的基础上加一个限定:只有2堆石头 如果是必胜态,则需要输出所有可以走的第一步,如果可以同时取走相同的石子的情况要先输出思路:预处理记录奇异局势的左边位和右边位出现的是第几个奇异局势 正常的Wythoff Game规则判断胜负态 然后枚举所有可能出现原创 2012-09-17 23:01:35 · 1409 阅读 · 0 评论 -
HDOJ 3951 Coin Game 博弈
//HDOJ 3951 Coin Game 博弈/*题意:有n个硬币围成一圈,每次能取1-k个硬币,问先手胜还是后手胜思路:如果k>=n,那么一次就能取完了,先手胜 如果k==1,直接奇偶就可以判断胜负了 其他情况下,先手第一次取完后,硬币就展开成一条链,后手就在链中间取 将链分成均等的两份,然后根据对称性就必能取胜。*/#include#include#incl原创 2012-09-17 20:24:19 · 458 阅读 · 0 评论 -
HDOJ 1851 A Simple Game 博弈 SG函数中找规律
//HDOJ 1851 A Simple Game SG函数中找规律/*题意:有n堆石子,每堆分别有m1,m2,m3...个 每堆每次最多能取走最多l1,l2,l3...个,最少去一个 问后手的胜负态思路:用sg(n,k)表示剩余n个的一堆石子中 每次最多能取走k个 则有 sg(0,1)=0 sg(0,2)=0 sg(0.3)=0 ... sg原创 2012-09-18 23:45:28 · 866 阅读 · 0 评论 -
HDOJ 1536 S-Nim 博弈 SG函数
//HDOJ 1536 S-Nim SG函数/*题意:有n堆石子,每次只能取走 一个给定集合S中出现的元素 的石子,问先手胜负态思路:sg函数*/#include#include#include#define N 105#define M 10005int k,n,m;int op[N],sg[M];//op为给定集合int mex(int n){ int i原创 2012-09-18 23:49:53 · 1883 阅读 · 0 评论 -
HDOJ 1760 Fibonacci again and again 博弈 SG函数
//HDOJ 1760 Fibonacci again and again SG函数/*题意:有3堆石子,每次能从一堆中取走f个,f是Fib数列(1,2,3,5...) 给定3堆石子的数量,问先手的胜负态思路:SG函数*/#include#include#include#define N 20#define M 1005int op[N];int sg[M原创 2012-09-18 23:47:12 · 755 阅读 · 0 评论