自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 【SPOJ】NPC2016C - Strange Waca

Waca loves maths,.. a lot. He always think that 1 is an unique number. After playing in hours, Waca suddenly realize that every integer can be represented by digit '1', plus operator and minus operato...

2020-03-23 21:24:27 273 1

原创 bzoj 1820: [JSOI2010]Express Service 快递服务

直接写状态的话,可以用dp[i][j][k][l]表示位置在j,k,l,当前完成的是第i个任务。发现j,k,l一定有一个和p[i]相同,可以再减掉一维。这样的话复杂度就是m^2n的。但是空间只有64M,所以还需要再滚动数组压掉一维。#include<bits/stdc++.h>#define N 1010#define M 210using namespace std;int ...

2018-04-26 19:19:10 253

原创 BZOJ 3158&3275

WA了无数次后,发现自己的板子挂了。。#include<bits/stdc++.h>#define N 3010#define M 1001000using namespace std;int beg[N],cop[N],dis[N];long long a[N],b[N];int to[M],ll[M],nex[M];int n,len=1,S,T;long long...

2018-04-26 19:16:34 198

原创 BZOJ 1819: [JSOI]Word Query电子字典

建出Trie树暴力扫一遍。#include<bits/stdc++.h>#define N 200100using namespace std;int s[N][26];int cx[N],en[N];char c[N];int n,m,cnt,l;void insert(int &p,int w){ if(!p) p=++cnt; if(w==l){ e...

2018-04-26 15:36:27 273

原创 BZOJ 1569: [JSOI2008]Blue Mary的职员分配

随便记一下状态,然后再随便转移一下,没了。Tips:1.第三天招来的人第四天才能工作2.当天赚的钱可以用来招人#include<bits/stdc++.h>using namespace std;int dp[41][101][41][4][2];int n,x,y,z,A,B;int bes=1008610086;int dfs(int rs,int jq,int sy,i...

2018-04-25 21:39:32 157

原创 BZOJ 1568: [JSOI2008]Blue Mary开公司

李超线段树裸题,每个区间维护覆盖当前区间中线的线段,发现答案必然在这些线段中。复杂度听说是两只log,但感觉实际上只有一只?#include<bits/stdc++.h>#define N 100100using namespace std;double s[N<<2],p[N<<2];int done[N<<2];int n;char ...

2018-04-25 20:16:09 116

原创 bzoj 1560: [JSOI2009]火星藏宝图

考虑DP,朴素的DP是N^2发现如果有路径A->B,B->C,A->C,那么一定是A->B,然后再B->C也就是说,对某个点有影响的点位于一个凸包上。由于坐标范围只有[1,M],所以复杂度应该是O(NM),实际上可以通过此题。似乎转移的斜率还有单调性,但是懒得再推了。#include<bits/stdc++.h>#define M 1010#defin...

2018-04-24 21:06:17 128

原创 bzoj 4421: [Cerc2015] Digit Division

水题#include<cstdio>char s[1<<20];int n,m,i,a=(1e9+8)/2,t;main(){ scanf("%d%d%s",&n,&m,s); for(;i++<n;){ t=(t*10+s[i-1]-'0')%m; if(!t)a=(a<<1)%int(1e9+7); } if(t)...

2018-04-24 21:01:10 113

原创 BZOJ 3182: [Coci2012]BLOKOVI

感性认识一下,发现方案必然是这样的:也有可能是从下往上一直往右的。这样我们就有了一种O(N^2)做法:枚举转折点,然后计算最右方块的坐标减去最下方块的坐标。考虑从上往下枚举转折点。发现一个方块只有两种放法:往能放的最右放,或者往能放的最左放,也就是说,两种方案坐标的差值为2。还有一个性质:一个方块放左还是放右,对其下的方块的整体形状没有影响。可以得到一个式子:从放在一边转到另一边,相当于其下所有方...

2018-04-22 18:49:16 208

原创 BZOJ 4349

最小树形图模板#include<bits/stdc++.h>#define N 550#define M 10100using namespace std;int n,m,f,len;int t[N],done[N];int rs[N],pla[N];int l[M],r[M];double va[M],zx[N],ans;inline void Add(int a,...

2018-04-19 20:36:28 176

原创 BZOJ 3522&4543

题意:求一棵树上有多少个三元组{x,y,z}满足x<y<z且两两距离相同。解法1:启发式合并,每个点继承最大的孩子的信息,用指针O(1)转移,其余孩子O(size)加入,这样可以维护子树中所有节点的深度信息和所有二元组{x,y},x,y深度相同且在同一棵子树中的个数。然后就可以算了,复杂度是O(nlogn)#include<bits/stdc++.h>#define N ...

2018-04-18 22:02:34 224

原创 BZOJ 1302 ZOJ 2271

简单概率题,新加SPJ,注意n可能是偶数=。=#include<bits/stdc++.h>#define N 110using namespace std;int n;double dp[N][N][N];int main(){ while(scanf("%d",&n)!=-1){ for(int i=0;i<=n;i++) ...

2018-04-17 15:04:04 169

原创 HNOI2018题解(转盘暂缺)

道路简单的难以置信的树上dp,一度以为自己看错题了#include<bits/stdc++.h>#define N 20010using namespace std;int a[N],b[N],c[N];int gl[N],tl[N];long long dp[N][42][42];int n,tot;long long dfs(int p,int x,int y){ ...

2018-04-17 14:51:59 286 1

原创 bzoj 1468

点分模板,答案随便加加减减(为啥计划里留了一题最简单的没写)#include<cstdio>#include<algorithm>#include<cstring>#define N 16384using namespace std;inline void read(int &a){ int f=a=0;char ch=getchar();...

2018-04-08 23:31:47 143

原创 AtCoder Grand Contest 017 D - Game on Tree

#include#define N 200100using namespace std;int beg[N],to[N],nex[N];int sg[N];int len,n;inline void Add(int a,int b){ nex[++len]=beg[a],beg[a]=len,to[len]=b; nex[++len]=beg[b],beg[b]=len,to[le

2018-01-13 21:05:07 219

原创 AtCoder Regular Contest 077 E - guruguru

#include#define N 100100using namespace std;typedef long long LL;inline void read(int &a){ a=0;char ch=getchar(); while(ch'9') ch=getchar(); while(ch='0') a=a*10+ch-'0',ch=getchar();}int a[N]

2018-01-13 20:58:53 206

原创 AtCoder Grand Contest 003 D - Anticube

#include#define N 100100using namespace std;typedef long long LL;int prime[2200],len;int n,m,ans;LL l[N],r[N];map ma;int main(){ for(int i=2;i<2200;i++){ int fla=1; for(int j=2;j<i;j++)

2018-01-13 14:56:30 431

原创 wannafly 挑战赛 7

A整个矩阵被划分成4个子矩阵,分别计算这4个子矩阵能不能被覆盖,需要几次即可。#includeusing namespace std;long long t,n,m,r,c,k;inline long long w(long long a,long long b){ if(!a||!b) return 0; if(a<k||b<k) return -1e18; return

2018-01-06 21:14:59 817

原创 AtCoder Grand Contest 002 E - Candy Piles

#include#define N 100100using namespace std;int a[N],n,sg=1;int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); sort(a+1,a+n+1); reverse(a+1,a+n+1); for(int i=1;i<=n;i++){

2018-01-04 20:55:03 410

原创 AtCoder Grand Contest 002 D - Stamp Rally

道理我都懂,可是看了一眼其他题解为什么那么长啊。。。#include#define N 100100using namespace std;struct Node{int x,y,z,l,r,las,ord;}q[N];int n,m,Q;int fa[N],siz[N],ans[N];int a[N],b[N];int find_fa(int a){ return fa[a]

2018-01-04 19:53:12 273

原创 agc001E

#includeusing namespace std;inline void read(int &a){ a=0;char ch=getchar(); while(ch'9') ch=getchar(); while(ch='0') a=a*10+ch-'0',ch=getchar();}const int MOD=1e9+7;int dp[4010][4010],fac[801

2018-01-02 10:15:08 287

原创 agc001D

#include#define N 1010using namespace std;int n,m;int a[N];vector s,w;int main(){ scanf("%d%d",&n,&m); for(int i=0;i<m;i++){ scanf("%d",&a[i]); if(a[i]&1) s.push_back(a[i]); else w.push_

2018-01-02 09:19:17 258

原创 51nod 特殊表示法

#includeusing namespace std;#define N 1001000inline void read(int &a){ char ch=getchar(); while(ch'9') ch=getchar(); a=ch-'0';}int n,m,ne;int a[N],b[N];char ans[N*2];int fib[10]={1,2,3,5,8,

2017-12-30 18:55:10 308

原创 洛谷P2899 [USACO08JAN]手机网络Cell Phone Network

#include#define N 100100using namespace std;const int INF=1008610086;int A[N],B[N],C[N];int beg[N],to[N],nex[N];int n,len;inline void Add(int a,int b){ nex[++len]=beg[a],beg[a]=len,to[len]=

2017-10-17 19:05:14 633

原创 noip 2014 提高组试题(答案+简单分析)

1.Bc++,java,python等常用于开发的语言都是高级语言。2.D1TB=2^10GB=2^20MB=2^30KB=2^40B3.D可以转化成十进制加减,也可以直接搞,自己算吧。4.BTCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。(来源度

2017-10-14 08:34:44 330

原创 codeforces 555C - Case of Chocolate

#include#define N 1000100using namespace std;struct Seg{ int a[N<<2],lt[N<<2]; inline void push_down(int k){ a[k<<1]=max(a[k<<1],lt[k]); a[k<<1|1]=max(a[k<<1|1],lt[k]); lt[k<<1]=max(lt[k<<1

2017-10-06 15:41:19 384

原创 Codeforces Round #124 (Div. 1) D. The Next Good String

#include#define N 400100using namespace std;typedef unsigned long long ULL;const ULL MOD=29;ULL cf[N],a[N];int n,m;char s[N];inline void ex(){ puts("Impossible"); exit(0);}ULL h[N];void d

2017-10-04 14:22:17 276

原创 Atcoder Grand Contest 013D piling Up

题目大意:初始时有i个红球(i∈[0,n])和n-i个蓝球。进行m次操作,每次先任意选出一个球,然后再放入一个蓝球和一个红球,再任意选出一个球。问选出的球的序列有多少种可能?n,m∈[1,3000]首先,我们用i表示当前红球的数量:不难发现,如果我们将两次取球合并,那么每次操作必然是以下四种:1、i>=1时,可以取出两个红球,i-=12、i>=1时,可以先取出一个红球,再取出一

2017-10-03 18:54:16 210

原创 codeforces 293B

#include#define N 55#define K 11using namespace std;const int MOD=1e9+7;int jc[K],a[N][N];int cu[N][N][K];int cx[K];int n,m,k,ans,zy;inline int A(int n,int m){ long long tmp=1; for(int i=n;

2017-10-02 20:15:11 275

原创 NWERC 2015B/bzoj 4426 Better Productivity

#include#define N 210using namespace std;struct Node{int x,y;}a[N],b[N],c[N];int dp[N][N];int n,p,B,C;inline bool cmp1(Node a,Node b){ if(a.x!=b.x) return a.x<b.x; return a.y<b.y;}inline boo

2017-10-02 18:47:32 313

原创 4428: [Nwerc2015]Debugging调试

#include#define N 1000100using namespace std;long long f[N],x,y;int n;long long dfs(int p){ if(f[p]!=-1) return f[p]; if(p==1) return f[p]=0; f[p]=x+y*(p-1); for(int i=2;i<p;i=(p-

2017-10-01 20:05:42 274

原创 codeforces 163D

#include#define N 127#define eps 1e-6using namespace std;typedef long long LL;LL t,w[N];int n,c[N];long long v=1,s=3e18;long long A,B,C;long long alpha(long long a){return 2*sqrt(a)*sqrt(v)+v

2017-10-01 20:03:16 721

原创 codeforces 84E

#include#define N 55using namespace std;struct Node{ int x,y,bs,mas; string s;};operator < (Node a,Node b){ if(a.bs!=b.bs) return a.bs>b.bs; return a.s>b.s;}int dt[N][N];int fx[4]={0,0,1,-

2017-10-01 20:01:28 282

原创 codeforces 571B

#include#define N 300100using namespace std;inline int read(){ int f=0,a=0;char ch=getchar(); while(ch'9'){if(ch=='-') f=1;ch=getchar();} while(ch='0') a=a*10+ch-'0',ch=getchar(); if(f) return

2017-10-01 20:00:01 219

原创 codeforces 115D

#include#define N 2010using namespace std;const int MOD=1e6+3;int n;string s;int dp[N][N];int sum[N][N];int w[N];int z[N];int main(){ cin>>s; int siz=s.size(); int len=0; if(s[0]=='/'||s

2017-10-01 19:58:26 334

原创 Codeforces Round #423 (Div. 1, rated, based on VK Cup Finals) A 题目忘了

题目大意:反正就是字符串覆盖,但是已经被覆盖了就不会再被覆盖了,问最终的字符串。非常显然可以用链表/并查集/线段树做。这是比较显然的做法。这里我用优先队列做了一发,效果还不错。首先需要了解堆的删除操作和离线区间加。那么我就用离线区间加的思想,开一个vector,在开始位置加入插入节点,在结束位置加入删除节点。由于修改是有顺序的,那么可以通过调用优先队列的队头来用最早的字符串覆盖。做法非

2017-07-13 11:20:56 338

原创 Codeforces Round #423 (Div. 1, rated, based on VK Cup Finals) B HIGH ROAD

构造题。题目大意:构造一棵有N个节点,其中K个是孩子节点的树,让它的直径最小,并输出这棵树的所有边和直径。不难发现,孩子节点越多,这棵树的直径就越小。那么我们考虑删去K个孩子节点后的树。这棵树的孩子节点数肯定不能超过K,所以就让它的孩子节点数为K。一直进行下去,我们就得到了一棵每片花瓣长度为K或K-1的菊花树。那么这样构造出来的树就能满足直径最小。那么直径是多少呢?你可以跑出来,当然也可以

2017-07-12 14:13:37 392 1

原创 codeforces 442D - Adam and Tree

题目大意:给一棵树上的每条边染色,每种颜色只能用一次,一次染色树上的一条链。问(从根到所有节点经过的颜色的最大值)的最小值是多少。树是通过每次加一个点得到的,问每次加点之后的最小值是多少。点数不难发现,答案肯定是小于等于直接树剖的答案,也就是log当前点数。显然能想到dp:用f[i]表示处理i的所有子树和i所需的最小颜色。如果正常染色的话,我们会尝试把f值最小的两棵子树和i

2017-07-12 11:45:51 1015

原创 Codeforces Round #423 (Div. 1, rated, based on VK Cup Finals) C DNA Evolution

题目大意:给出一个字符串S(|S|先将E的开头和S中的第l个对齐,然后一个一个匹配。如果到了E的结尾,那么将E转到开头,继续匹配。如果S中的位置超过r,则退出。一道比较简单的C题(然而我并没有打这场)不难发现,由于字符集很小,我们可以分开考虑每个字符。而询问的位置,显然是只和l和|E|有关。那么我们可以再分开考虑|E|中的每一位。这里可以建立10*10*4个树状数组来解决,线段

2017-07-12 10:50:42 311 1

原创 UVA 1093 Castles

题目大意:太长不想说,自己看吧。发现留守和死亡是没有区别的,那么把它们一起考虑。考虑只有一个点的情况,那么这个点需要的人数就是max(a,b+c),但是死亡的人数是b+c那么我们先把需要的人数和死亡的人数做一个pair。然后考虑枚举起点,算总的需要人数。每个点的死亡人数就是它的死亡人数加上所有子树的死亡人数。但是这个点的需要人数并不是这个。不难发现,当完成一个子树后,多余的

2017-07-11 10:54:23 533 1

空空如也

空空如也

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

TA关注的人

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