随笔分类 - bzoj
摘要:#includeusing namespace std;#define BN 380000const int table[]={0,79595,158824,202174,246052,316791,359819,411663,482117,517179,574651,649803,674577,7...
阅读全文
摘要:块大小为10^5。#includeusing namespace std;const int table[] = {0, 4784, 8978, 12981, 16901, 20732, 24523, 28249, 31916, 35585, 39176, 42818, 46430, 49962, ...
阅读全文
摘要:验证一个数是不是优美的:设数位之和为sum,若sum mod 2 != 0,则不优美。否则考虑枚举这个数的每一位,将之前所有位任意相加产生的所有 数字和 和 当前位 的和塞到集合里,最终判断集合中是否存在sum/2即可,若暴力,复杂度是1+2+4+...,无法承受,所以可以压位。然后对10^9分块,...
阅读全文
摘要:线段树每个结点维护5个域:整个区间的MST。将两个左端点连通,两个右端点不连通,整个区间内选择2*(r-l+1)-2条边的最小生成森林,有两个连通块。将两个右端点连通,两个左端点不连通,整个区间内选择2*(r-l+1)-2条边的最小生成森林,有两个连通块。两个左端点不连通,两个右端点也不连通,整个区...
阅读全文
摘要:线段树的每个叶子节点存一列。每个节点维护六个域,分别是左上左下、左上右上、左上右下、左下右上、左下右下、右上右下在区间内部的连通性,不考虑绕出去的情况。初始每个叶子的左上左下、右上右下是连通的。每次修改纵列时,直接去线段树里修改。每次修改横行时,将其左右两列全都pushup一遍。具体怎么维护,并不难...
阅读全文
摘要:我们知道,求一段序列的最大子段和是O(n)的,但是这样是显然会超时的。我们需要一个数据结构来支持修改和计算的操作,对于这种修改一个而查询区间的问题,考虑使用线段树。在线段树中,除了左端点,右端点,左儿子指针,右儿子指针之外,新开4个域——max,maxl,maxr,sum,其中sum为该区间的和,m...
阅读全文
摘要:区间按左端点排序,dp。#include#includeusing namespace std;#define N 1001struct Point{int l,r,w;}a[N];bool operator < (const Point &a,const Point &b){return a.l<...
阅读全文
摘要:跟某NOIP的《矩阵取数游戏》很像。f(i,j)表示从左边取i个,从右边取j个的答案。f[x][y]=max(dp(x-1,y)+a[x]*(x+y),dp(x,y-1)+a[n-y+1]*(x+y))。ans=max{f(i,n-i)}。#include#include#includeusing ...
阅读全文
摘要:http://blog.csdn.net/u011265346/article/details/44906469#include#includeusing namespace std;#define N 401struct Point{int p,v;}a[N];bool operator < (c...
阅读全文
摘要:#include#include#includeusing namespace std;typedef double db;struct Point{int x,y,p;}p[101],path[101];int n,m,ans,apa[101];int sqr(int x){return x*x;...
阅读全文
摘要:将区间按左端点排序。f(i)=max{f(j)+1}(p[j].x+p[j].y#includeusing namespace std;int n,f[10001];struct Point{int x,y;}p[10001];bool operator < (const Point &a,cons...
阅读全文
摘要:#include#includeusing namespace std;int n,a[5001],b[5001],en;int main(){ scanf("%d",&n); for(int i=1;i<=n;++i) scanf("%d",&a[i]); for(in...
阅读全文
摘要:vs(i)表示患i这种疾病的牛的集合。f(S)表示S集合的病被多少头牛患了。枚举不在S中的疾病i,把除了i和S之外的所有病的牛集合记作St。f(S|i)=max{f(S)+((St|vs(i))^St)中牛的数量}#include#include#includeusing namespace std...
阅读全文
摘要:区间修改的kd-tree,打标记,下传。每次询问的时候,从询问点向上找到根,然后依次下传下来,再回答询问。#include#include#includeusing namespace std;#define N 100001#define KD 2int n,root,m,q,qp[2][KD],...
阅读全文
摘要:http://www.cnblogs.com/mmlz/p/4497118.html#include#includeusing namespace std;int n,K,nn,a[1000001],sumv[1000002];bool check(int x){ int cnt=0,i; ...
阅读全文
摘要:http://www.cnblogs.com/rausen/p/4138233.html#include#includeusing namespace std;#define MOD 1000000007int n;bool Not[1000001];int pr[1000001],e,ci[100...
阅读全文
摘要:http://blog.csdn.net/zhb1997/article/details/38474795#include#include#includeusing namespace std;typedef long long ll;int n,m;ll ans;int main(){// fr...
阅读全文
摘要:#includeusing namespace std;#define N 10001int n;int v[N(n>>1)) return 0; for(int i=first[U];i;i=next[i]) if(v[i]!=fa[U]&&size[v[i]]>(n>>...
阅读全文
摘要:#include#include#includeusing namespace std;#define EPS 0.0000001#define N 511typedef double db;const db PI=acos(-1.0);struct Point{db x,y;};typedef P...
阅读全文
摘要:http://m.blog.csdn.net/blog/qpswwww/44105605#include#include#includeusing namespace std;#define EPS 0.0000001#define N 311typedef double db;const db P...
阅读全文

浙公网安备 33010602011771号
