06 2015 档案
摘要:区间按左端点排序,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/xiaohongmao/p/3473599.html
阅读全文
摘要:f(i,j)=min{f(i,k)+f(k,j)+a[i]*a[k]*a[j]}(1#include#includeusing namespace std;int n,a[101],f[101][101];int main(){// freopen("codevs1966.in","r",stdin...
阅读全文
摘要:区间动态规划问题一般都是考虑,对于每段区间,他们的最优值都是由几段更小区间的最优值得到,是分治思想的一种应用,将一个区间问题不断划分为更小的区间直至一个元素组成的区间,枚举他们的组合 ,求合并后的最优值。设F[i,j](1n then break; // 这个if很关键。for k:= i to j...
阅读全文
摘要: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...
阅读全文
摘要:#include#include#include#includeusing namespace std;#define N 50001int v[N=n) return; T[x]+=op; if(!T[x]) --sumv[nu2[x]]; else if(o...
阅读全文
摘要:#include#include#includeusing namespace std;#define N 500001#define INF 2147483647#define KD 2//ά¶ÈÊýint qp[KD],disn;int n,root;bool dn;struct Node{ ...
阅读全文
摘要:#include#include#includeusing namespace std;#define N 500001#define INF 2147483647#define KD 2//ά¶ÈÊýint qp[KD],disn;int n,root;bool dn;struct Node{ ...
阅读全文
摘要:同p2626。由于K比较小,所以不必用堆。#include#include#include#includeusing namespace std;typedef double db;#define N 50001#define INF 2147483647.0#define KD 5//ά¶ÈÊý...
阅读全文
摘要:用堆记录答案。看看当前点是否比堆顶更优。#include#include#include#include#includeusing namespace std;typedef double db;#define N 100001#define EPS 0.0000001#define INF 999...
阅读全文
摘要:枚举每个点,计算离他最近的和最远的点。#include#include#includeusing namespace std;#define N 500001#define INF 2147483647#define KD 2//ά¶ÈÊýint qp[KD],disn,disx;int n,ro...
阅读全文
摘要:分四种情况讨论:a,b>=0a,b=0,b=0然后每次检验是否进入一个矩形框 或者 是否直接利用这个矩形框的答案 仅仅利用两个对角的坐标进行更新即可。#include#include#includeusing namespace std;typedef long long ll;#define N ...
阅读全文
摘要:Orz zyf教给蒟蒻做法 蒟蒻并不会这题正解……(可持久化树套树?。。。Orz 对于每个点,我们可以求出pre[i],nex[i],那么询问的答案就是:求max (a[i]),其中 i 满足(pre[i]qrandi∈[ql,qr]) 然后我们以(i,pre[i],nex[i])为坐标……将...
阅读全文
摘要:同p1176。#include#include#includeusing namespace std;#define N 200011#define KD 2//ά¶ÈÊýint qp[2][2];int n,root=1,m;bool dn;struct Node{ int minn[KD...
阅读全文
摘要:二维莫队,对n和m分别分块后,对块从上到下从左到右依次编号,询问以左上角所在块编号为第一关键字,以右下角标号为第二关键字排序,转移时非常厉害。O(q*n*sqrt(n))。#include#include#includeusing namespace std;#define N 201#define...
阅读全文
摘要:裸题不多说,注意在sqrt(n*log(n))次插入后重构树以保持深度。#include#include#includeusing namespace std;#define N 170011#define KD 2//ά¶ÈÊýint qp[2][2];int n,root=1,m;int Be...
阅读全文
摘要:离线所有操作,对所有可能存在的点建立kd-tree,add相当于权值+1,cancel相当于权值-1。修改操作要记录kd-tree上每个点的fa,从底向上地进行修改。优化:若一个矩形框的sumv==0,则不进入。记录矩形框的面积时只记录“有意义”的点的(权值为0的不管)。#include#inclu...
阅读全文
摘要:题意就是找0到n有多少个数中含有49。数据范围接近10^20DP的状态是2维的dp[len][3]dp[len][0] 代表长度为len不含49的方案数dp[len][1] 代表长度为len不含49但是以9开头的数字的方案数dp[len][2] 代表长度为len含有49的方案数状态转移如下dp[i]...
阅读全文