- 博客(13)
- 收藏
- 关注
原创 Necklace 二分图加上排列组合(求下一个排列组合序列)
题目链接题意:有2*n个宝石,一半为阴、一半为阳的串在一起,阴阳宝石交错摆放,但是有一些阴宝石和阳宝石摆在一起会使阳宝石变得黯淡。阴阳宝石的编号都是从1~n。最后求阴阳宝石串在一起,阳宝石最少的黯淡数。其实就是一个阴阳宝石怎么交错摆放的问题,很容易想到通过DFS去搜索枚举,但是直接阴 阳交错搜索的话,时间复杂度太高,并且不容易通过估算估计代价去剪枝。 因此我们首先选取一种宝石(假设为阴),
2016-07-27 15:08:33 432
原创 SG函数 多校Chess
题目来源题意为:N*20的棋盘,刚开始有一些棋子在上面,棋子只能向前移动,不能向下或向上移动。如果该棋子前面有棋子,则可以跳过前面的棋子移动到下一个空位,但是并不能跳过空位,来移动到下一个空位。最后,谁不能移动棋子谁就输。sg函数介绍Nim游戏#include #include #include #include #include #define MAXN 200
2016-07-27 13:04:25 358
原创 多校 GCD
Give you a sequence of N(N≤100,000) integers : a1,...,an(0ai≤1000,000,000). There are Q(Q≤100,000) queries. For each query l,r you have to calculate gcd(al,,al+1,...,ar) and count the number
2016-07-27 11:54:12 455
原创 树状数组 改段求点
【1】修改操作:将A[l..r]之间的全部元素值加上c;【2】求和操作:求此时A[x]的值。操作【1】:updata(l-1, -c); updata(r, c);操作【2】:query(x)。#include #include#include#include #include #include #include #include #include
2016-07-25 08:34:49 388
原创 树状数组 改点求段
【1】修改操作:将A[x]的值加上val;【2】求和操作:求此时A[l..r]的和。#include #include#include#include #include #include #include #include #include #define LL long long#define MAXN 100000using namespace std;int su
2016-07-25 08:16:43 396
原创 二叉堆排序
#include #include #include #include #include #include #define MAXN 100010#define inf 0x3f3f3f3fusing namespace std;int a[MAXN];//大顶锥void HeapAdjust(int index,int n){ int l = index<<1;
2016-07-23 10:38:30 519
原创 并查集
#include #include #include #include #include #include #define MAXN 100010#define inf 0x3f3f3f3fusing namespace std;int uset[MAXN];int deep[MAXN];//深度void init(){ for(int i = 0; i < MAX
2016-07-23 09:59:00 321
原创 线段树 区间更新 区间求和以及最值
#include #include #include #include #include #include #define MAXN 100010#define inf 0x3f3f3f3fusing namespace std;struct node{ int l,r;//区间[l,r] int add;//区间的延时标记 int sum;//区间和
2016-07-23 09:36:55 3733
原创 线段树单点更新 区间求和,求最值
#include #include #include #include #include #include #define MAXN 100010#define inf 0x3f3f3f3fusing namespace std;struct node{ int l,r;//区间[l,r] int sum;//区间和 int mx; //区间最大值
2016-07-23 09:00:32 653
原创 POJ 2886 Who Gets the Most Candies?
题意:有N个人围成一圈,编号从1到N,每个人都有一个卡片,卡片上写了一个数字。若该数字小于0,则从他的从左边开始一直查到该数字的位置(不包括他自己),否则,从右边开始;然后他跳出该循环圈,下一个人是查到的那个人。某人是第m个跳出会得到F(m)个糖果,F(m)为么得因子个数。最后输出谁得到最多糖果的人的姓名和糖果数量。求F(m)用反素数求。对于任何正整数x,其约数的个数记做g(x).例如g(
2016-07-22 11:52:17 267
原创 POJ 2777 Count Color
题意:L的长度,从1~L,在区间上添加颜色(1~T),颜色初始全为1。输入P A B :查询A~B区间不同颜色的数目;输入C A B C:更新A~B区间的颜色为C;运用线段树的延时标记。#include #include #include #include #include #define MAXN 100010using namespace std;struct node
2016-07-20 19:34:59 275
原创 POJ 2828 Buy Tickets
Sample Input40 771 511 332 6940 205231 192431 38900 31492Sample Output77 33 69 5131492 20523 3890 19243HintThe figure below shows how the Little Cat found out the f
2016-07-18 22:02:48 280
原创 POJ 2528 Mayor's posters
大概意思:在一个墙上贴海报,每一个海报在墙上占据x~y的位置,按照输入顺序贴海报,问最后墙上能看见几张海报。Sample Input151 42 68 103 47 10Sample Output4#include #include #include #include #include #define MAXN 10000010using namesp
2016-07-18 13:48:41 334
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人