自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(217)
  • 收藏
  • 关注

转载 【函数式Trie】51NOD 1295 XOR key

通道思路:每个数建个31位的树,处理好关系即可代码:#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N = 60007;const int BIT = 32;int n, m;...

2019-10-04 03:08:25 135

转载 【CDQ-整体二分】BZOJ 2738 矩阵乘法

题意:给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数思路:整体二分+二维树状数组二分询问的答案mid,将数值小等mid的全部插入二维树状数组然后查询每个矩阵内的元素个数,若数量>K-1则放左边,否则放右边继续向下分治,左边二分l-mid,右边mid-r代码:#include<iostream>#includ...

2019-10-04 03:08:24 164

转载 【CDQ】 HDU 4742 Pinball Game 3D

通道题意:给你n(1e5)个三元组、然后要你求这n个三元组的LIS。和这样LIS的方案数。一个三元祖a比另一个元祖b大的条件是ax>=bx,ay>=by,az>=bz思路:排序x去掉一维。然后我们要找到 y z。然后对于一个区间上,我们对y排序,但是在排序之前记录下此时的id排序之后,就能得到y的递增,但是此时可能打乱了x的顺序。所以我们就要利用之前记录的i...

2019-10-04 03:08:23 111

转载 【CDQ或并行二分】 SPOJ METEORS

通道题意:有m个空间站组成一个环形的轨道,每个空间站属于n个国家之一。一次流星雨可以给一段连续的空间站带来同样数量的陨石样本。给出每个国家需要的陨石数量和流星雨的出现情况,问每个国家最快在多少次流星雨前就能收集到需要数量的陨石思路:分别二分算出答案即可代码:#include <cstdio>#include <cstring>#in...

2019-10-04 03:08:23 147

转载 【CDQ】 BZOJ 1176 MOKIA

题意:维护一个W*W的矩阵,每次操作可以增加某格子的权值,或询问某子矩阵的总权值思路:CDQ模板题吧,点和矩形(4个点)都看成点,然后利用矩阵的前缀和可求出代码:#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>...

2019-10-04 03:08:22 74

转载 【CDQ】 BZOJ 2716 天使玩偶

题意:先给出n个点, 然后有m个操作, (1, x, y) 表示查询离(x, y)最近点的曼哈顿距离, (2, x, y) 表示插入点 (x, y).思路:. 距离点(x, y)最近的点和x的方位有四种, 左下左上右下右上, 然后只考虑一个方位, 另外的改变坐标即可. dis({x, y}, {x', y'}) = |x-x'| + |y-y'|. 在只考虑(x', y')在(x, ...

2019-10-04 03:08:21 1891

转载 【动态规划】 51nod 1084 矩阵来回取数

通道思路:dp[i][j][k]:k步时,A到i行,B到j行的最大值代码:#include <cstdio>#include <vector>using namespace std;int maxPath(vector<vector<int> > &num) { const int m ...

2019-10-04 03:08:20 94

转载 【LCM从1-n】 HDU 5407 CRB and Candies

通道题意:计算C(n,0)+...C(n,n)思路:转化为LCM(1...n)/ n代码:#include <cstdio>#include <bitset>using namespace std;typedef long long ll;const int N = 1000000+2;const ll MOD ...

2019-10-04 03:08:19 94

转载 【贪心】 51nod 1053 最大M字段和 V2

通道思路:可以发现这序列是一段上升一段下降的锯齿形。先考虑拿到所有正数,此时如果段数大于m,考虑怎么最小代价减少段的数量,从 负数和最小的开始合并?而且要考虑负数和超过正数和的情形,注意特殊情况是这段和为0时,并不需要合并,直接跳过。减小个数的方案是,要么这段大于0,去掉这个及左右2边,并合并,这样可能会给后面的答案贡献更小的答案;要么这段小于0,就是将左右2边大于0的合并减少了1个...

2019-10-04 03:08:18 88

转载 【贪心】 51nod 1115 最大M字段和 V3

通道思路:连续上升,连续下降的值放到set里面,然后对于大于m的集合双向链表进行合并,合并肯定是找绝对值最小的合并。代码:#include <cstdio>#include <cstring>#include <set>#include <algorithm>using namespace std;...

2019-10-04 03:08:18 91

转载 【瞎搞】 51nod 1065 最小正子段和

通道思路:先求一下从第一位开始的到第i位的累加,4,-1,5,-2,-1,2,6,-2=>4386571311对这个累加的数列排个序,然后只要判断邻近的两个数是否可以组成序列,比如4和3就不可以,因为4>3而4对应下标为0,3对应为1。4和5就可以,然后相同的前缀和取id最小,一开始丢个(0,0)进去。代码:#include <...

2019-10-04 03:08:16 93

转载 【树状数组】51nod 1376 最长递增子序列的数量

通道思路:dp[i]由dp[i-1]而来,统计小于a[i]的位置k,且dp[k]+1=dp[i]的所有个数即可。代码:#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;...

2019-10-04 03:08:16 134

转载 【搜索剪枝】HDU 5469 Antonidas

通道题意:给出1字母树,询问一字符串是否出现在该树中思路:直接搜索剪枝,有人点分治?写了几发都T了。。有人会了教我?代码:#include <cstdio>#include <cstring>#include <algorithm>using namespace std;struct Edge { ...

2019-10-04 03:08:15 97

转载 【后缀自动机】51nod 淋漓尽致子串

通道题意:最大周期串有多少个,子串不算。思路:建好SAM后,fail和next跳,删除前缀相同和后缀相同即可代码:#include <cstdio>#include <cstring>#include <vector>#include <map>#include <string>#in...

2019-10-04 03:08:14 77

转载 【BFS】 hihocoder 1233 Boxes

通道题意:给n(n < 8)个不同大小的盒子,小盒子可以叠在大盒子上,每次可向左或右相邻的位置移动,求使所有盒子从小到大有序所需最少移动次数思路:v[n][n][n]...[n]表示第i大的数在那个位置,然后从最终状态暴力搜出所有状态即可。代码:#include <cstdio>#include <queue>#include...

2019-10-04 03:08:13 77

转载 【线段树+HASH】CODEFORCES 580E Kefa and Watch

通道题意:0-9字符串,区间修改,区间询问是否d周期思路:直接暴力线段树,然后HASH修改和查询,卡HASH的话就双HASH。代码:#include<cstdio>#include<cstring>typedef long long ll;const int N = 100007;int n, m, k, lens;...

2019-10-04 03:08:12 88

转载 【矩阵快速幂+循环节】HDU 5451 Best Solver

通道题意:计算(5+26√)1+2^x.思路:循环节是(p+1)*(p-1),然后就是裸的矩阵快速幂啦。代码:#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>usi...

2019-10-04 03:08:11 69

转载 【后缀自动机或二分】 HDU 5431 AB String

通道题意:给出只有AB组成的字符串S,求第k个不在S中出现的串T。思路:我们可以把原串中logK左右的串都拿出来排序。然后直接二分答案求解即可代码:#include <cstdio>#include <string>#include <cstring>#include <vector>#include...

2019-10-04 03:08:10 123

转载 【树套树】 BZOJ 3110 K大数

通道题意:有N个位置,M个操作。操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c,如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少思路:先开一颗权值线段树。对于当前结点K,它表示了权值范围为a~b的所有结点的信息。但是有人要问:这样怎么控制位置范围是l~r这个要求呢?我们可以在这个点上再开一棵表示位置的信...

2019-10-04 03:08:09 70

转载 【回文自动机】 HDU 5421 Victor and String

通道题意:首尾加字符,询问多少个本质不同的回文串和多少个不同回文串思路:标记即可,分别维护左右last指针代码:#include <cstdio>#include <cstring>typedef long long ll;template <class T>inline bool rd(T &ret) ...

2019-10-04 03:08:08 74

转载 【CDQ】HDU 3842 Machine Works

通道题意:一个公司获得了一个厂房n(10^5)天的使用权和一笔启动资金C(10^9),准备在n天里租借机器生产来获得收益可以租借的机器有M(10^5)个,每个机器有四个值,D,P,R,G (D<=n, P,R,G都是10^9)表明你可以再第D天花费P费用(首先手里必须有那么多钱)租借这个机器,从D+1天开始该机器每天产生G的收益,在你不需要机器时可以卖掉这个机器,一次获得R...

2019-10-04 03:08:07 72

转载 【静态区间K大-权值线段树】POJ 2104 K-th Number

通道题意:区间K大代码:#include<cstdio>#include<algorithm>using namespace std;int n,m,sz,tot;int root[100001],a[100001],ls[8000001],rs[8000001],s[8000001];int num[100001],has...

2019-10-04 03:08:07 91

转载 【费用流】HDU 5406 CRB and Apple

通道题意:选2条不相交的路径,使得包含的点最多,一条路径的定义是h[u] >= h[v] && d[u]<= d[v],则u->v可走思路:太高深的doubility!转自:i和j之间,大于等于a[i]并且小于等于a[j]的数如果超过一定的值的时候,i就不向j连边,因为选2条路径,如果两个点之间夹在他们之间的点很多的话,费用流就不会走那条边了。...

2019-10-04 03:08:05 89

转载 【区间k大】HDU 54512 CRB and Queries

通道题意:区间k大,单点修改思路:裸,复杂度n(lgn)^2代码:#include <cstdio>#include <cstring>#include <cstdlib>#include <iostream>#include <algorithm>using namespace ...

2019-10-04 03:08:05 47

转载 【容斥+java】 HDU 3208 Integer’s Power

通道题意:给两个数a和b,然后在[a,b]内的每一个数y都可以表示成x^k=y,要求x尽量最小,k尽量最大,然后求所有的k之和思路:很容易知道[1,n]中有多少个数可以表示成k次方的形式,即n^(1/k)个,但是,一个数的平方包含了4 6 8 10……次方.如果知道至多只能表示成k次方的数有多少个,那么就能得到答案了代码:import java.util.*;...

2019-10-04 03:08:04 86

转载 【容斥+java】SGU 476 Coach's Trouble

通道题意:有3*n个人,分成n组,每组三个人。给出k个三元组,这三个人不可组队,问最后可以组队的总方案数思路:当k=0时,有(C[3*n][3]*C[3*n-3][3]*……*C[3][3])/n!种方案,展开以后可以得到dp[n]=(3*n)!/n!/6^n。显然可以写成递推式:dp[n]=dp[n-1]*(3*n-1)*(3*n-2)/2。那么容斥一下,答案=总方...

2019-10-04 03:08:04 47

转载 【区间DP】 HDU 5396 Expression

通道题意:给出n个数,n-1个操作方法,求(n-1)!的操作顺序得到的和是多少思路:代码:#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;tem...

2019-10-04 03:08:02 84

转载 【容斥】 HDU 2204 Eddy's爱好

通道题意:给你一个正整数N,确定在1到N之间有多少个可以表示成M^K(K>1)的数。思路:我们可以由n^(1/p),知道指数为p的有多少个数。通过观察,可以发现若一个数可以表示成x^(k*t),则可以表示成(x^k)^t。因此指数必然为素数。枚举素数便可以得到指数为p的个数,但是可能出现重复,例如:x^3=y^5,其中x=t^5,y=t^3。运用容斥原理,设a[...

2019-10-04 03:08:02 66

转载 【莫比乌斯】 BZOJ 2005 能量采集

通道思路:可以证明点(x,y)与(0,0)所连线段上不包含原点有的点为gcd(x,y)于是问题就变成了求gcd(x,y)(1 <= x <= n,1 <= y <= m)的和;可以设f[i]表示gcd为i的点对数有多少首先公因数里面有i的点对数显然是(n / i) * ( m / i)然后再减去f[i的倍数]就得到了f[i]代码:#incl...

2019-10-04 03:08:00 63

转载 【莫比乌斯】 BZOJ 2301 Problem b

通道题意:对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数思路:ans = cal(b, d) - cal(a - 1, d) - cal(b, c - 1) + cal(a - 1, c- 1),加上分块处理代码:#include <cstdio>#...

2019-10-04 03:08:00 59

转载 【组合数学】 HDU 4675 GCD of Sequence

通道题意:有三个数N, M, K, 然后N个特定序列。 从这特定的序列里必须改变K个数字, 取值范围为 [1,M]。 然后求出各序列的最大公约数为1~M分别多少个思路:代码:#include <cstdio>#include <cstring>#include <algorithm>using namespac...

2019-10-04 03:07:59 91

转载 【莫比乌斯】 HDU 4746 Mophues

通道题意:给出n, m, p,求有多少对a, b满足gcd(a, b)的素因子个数<=p(1<=a<=n, 1<=b<=m)思路:转自http://blog.csdn.net/acdreamers/article/details/12871643设A(d):gcd(a, b)=d的有多少种 设B(j): gcd(a, b)是j的倍数的...

2019-10-04 03:07:58 53

转载 【莫比乌斯】 HDU 1695 GCD

通道题意:这题求[1,n],[1,m]gcd为k的对数。而且没有顺序思路:设f(k)为gcd(x,y)=k的数对(x,y)的对数,我们要求的是f(1)设F(k)为gcd(x,y)为k的倍数的数对(x,y)的对数,可以想到F(k)=floor(b/k)*floor(d/k),由莫比乌斯反演得:令lim=min(b/k,d/k)f(1)=mu[1]*F(1) + mu[2]*F[...

2019-10-04 03:07:57 50

转载 【莫比乌斯】 SPOJ VLATTICE

通道题意:求gcd(a,b,c) = 1 a,b,c <=N 的对数代码:#include <cstdio>typedef long long ll;template <class T>inline bool rd(T &ret) { char c; int sgn; if(c = g...

2019-10-04 03:07:56 42

转载 【分块】 HDU 4638 Group

通道题意:区间[L, R] 之间排序后有多少段连续的数思路:一个一个的向里面添加,只需要判断a[i]-1 和 a[i]+1是否已经添加在内,如果两个都在,则总段数减1,如果两个都不在,总段数加1,其他情况总段数不变代码:分块、#include <cstdio>#include <cmath>#include <cstrin...

2019-10-04 03:07:55 73

转载 【分块】CODEFORCES 384C Subset Sums

通道题意:给出n个数,m组序列,然后每次可以选择一个序列给对应的每个数加定值,及询问该组对应数之和思路:可以知道修改某一组后,肯定对应和其他组有相交部分也要对应修改,每次去修改肯定不现实,然后对于sqrt(n)以内的数可以O(n)修改,其他的只要计算对应的增量即可,然后维护对于大于sqrt(n)的序列会影响到哪些小于sqrt(n)的序列即可。代码:#include...

2019-10-04 03:07:55 87

转载 【分块】 HDU 4336 Successor

通道题意:给一个树,树上每个节点都有两个属性:忠诚度和能力,给出若干查询,求每个子树中能力 > 树根能力的点中,忠诚度最高的那个思路:子树dfs序即可,然后忠诚度排个序,取能力值大于u且忠诚度最高的,虽然线段树也可以搞,练练分块。代码:#pragma comment(linker, "/STACK:102400000,102400000")#includ...

2019-10-04 03:07:53 56

转载 【分块】Codeforces 86d Powerful array

通道题意:询问[l,r]区间的权和,权定义为sum(k^2*a[i]),k表示a[i]出现的次数思路:区间每增加一个a[i],增量是(2*x+1)*a[i],因为(x+1)^2*a[i] = (x^2 +2*x + 1)*a[i]分块排序即可,块内按r排序代码:#include <cstdio>#include <algorithm&gt...

2019-10-04 03:07:53 70

转载 【分块】 HDU 4391 Paint The Wall

通道题意:区间涂色,询问区间内颜色相同的个数思路:将原区间划分乘sqrt(n)个区间,每次暴力查询和跟新两边的区间,中间的区间直接用hash存每种颜色的节点的数量。这里用到了类似线段树的lazy思想,区间成段修改直接打个标记,等到要划分这个区间的时候先把标记传下去,然后更新代码:#include <stdio.h>#include <math...

2019-10-04 03:07:52 86

转载 【期望DP+高斯消元】 UVA 10828 Back to Kernighan-Ritchie

通道题意:从1开始 每次等概率从一个点到和他相邻的点 有向 走到不能走停止 求停止时每个点的期望思路:白书P156代码:#include <cstdio> #include <cstring> #include <cmath> #include <vector> using namespace...

2019-10-04 03:07:51 71

空空如也

空空如也

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

TA关注的人

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