Luogu 考前模拟Round. 1
A.情书
题目:http://www.luogu.org/problem/show?pid=2264
赛中:sb题,直接暴力匹配就行了,注意一下读入和最后一句话的分句
赛后:卧槽 怎么只有40
B.小朋友的球
题目:http://www.luogu.org/problem/show?pid=1655
赛中:sb题,第二类斯特林数,加个高精度就行了,我还写了个暴力对拍
赛后:卧槽 怎么只有80 未知错误怎么回事儿啊
C.命运的彼方
题目:http://www.luogu.org/problem/show?pid=2263
赛中:sb题,poi2008砖块,splay维护中位数,加减数即可,数据范围有点大,算一下好像也能过?
赛后:卧槽 怎么CE了 又交了4、5遍 怎么还是CE bzoj还能A啊
1.5h交完3t,然后坐等AK。。。
最后知道真相的我眼泪掉下来。。。
我已无力吐槽luogu。。。
3道sb题,结果一半分都没有,是我太sb还是我太sb。。。
明信片再见。。。
UPD:t2 数据出错
t3 long long 的常数需要在后面加 ll 。。。
luogu为何连CE都不报,以后还能不能快乐地做比赛了T_T
UPD:还是贴上代码吧。。。
A
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cmath> 4 #include<cstring> 5 #include<algorithm> 6 #include<iostream> 7 #include<vector> 8 #include<map> 9 #include<set> 10 #include<queue> 11 #include<string> 12 #define inf 1000000000 13 #define maxn 500+100 14 #define maxm 500+100 15 #define eps 1e-10 16 #define ll long long 17 #define pa pair<int,int> 18 #define for0(i,n) for(int i=0;i<=(n);i++) 19 #define for1(i,n) for(int i=1;i<=(n);i++) 20 #define for2(i,x,y) for(int i=(x);i<=(y);i++) 21 #define for3(i,x,y) for(int i=(x);i>=(y);i--) 22 #define mod 1000000007 23 using namespace std; 24 inline int read() 25 { 26 int x=0,f=1;char ch=getchar(); 27 while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} 28 while(ch>='0'&&ch<='9'){x=10*x+ch-'0';ch=getchar();} 29 return x*f; 30 } 31 string a[200],b[200]; 32 inline bool find(int x,int y) 33 { 34 int l1=a[x].length(),l2=b[y].length(); 35 for0(i,l2-l1) 36 { 37 int j=i,k=0; 38 while(a[x][k]==b[y][j])k++,j++; 39 if(k<l1-1)continue; 40 return 1; 41 } 42 return 0; 43 } 44 int main() 45 { 46 freopen("input.txt","r",stdin); 47 freopen("output.txt","w",stdout); 48 int n=read(); 49 for1(i,n+1) 50 { 51 getline(cin,a[i]); 52 int l=a[i].length(); 53 for0(j,l-1)if(a[i][j]>='A'&&a[i][j]<='Z')a[i][j]+='a'-'A'; 54 } 55 int m=1; 56 for0(i,a[n+1].length()-1) 57 { 58 if(a[n+1][i]=='.')m++; 59 b[m]=b[m]+a[n+1][i]; 60 } 61 m--; 62 int ans=0; 63 for1(i,n) 64 for1(j,m) 65 if(find(i,j))ans++; 66 printf("%d\n",ans); 67 return 0; 68 }
B
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cmath> 4 #include<cstring> 5 #include<algorithm> 6 #include<iostream> 7 #include<vector> 8 #include<map> 9 #include<set> 10 #include<queue> 11 #include<string> 12 #define inf 1000000000 13 #define maxn 500 14 #define maxm 500+100 15 #define eps 1e-10 16 #define ll long long 17 #define pa pair<int,int> 18 #define for0(i,n) for(int i=0;i<=(n);i++) 19 #define for1(i,n) for(int i=1;i<=(n);i++) 20 #define for2(i,x,y) for(int i=(x);i<=(y);i++) 21 #define for3(i,x,y) for(int i=(x);i>=(y);i--) 22 #define mod 10000 23 using namespace std; 24 inline int read() 25 { 26 int x=0,f=1;char ch=getchar(); 27 while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} 28 while(ch>='0'&&ch<='9'){x=10*x+ch-'0';ch=getchar();} 29 return x*f; 30 } 31 class bigg 32 { 33 public: 34 int num[maxn],len; 35 bigg(){memset(num,0,sizeof(num));len=0;} 36 bigg operator =(const bigg &b) 37 { 38 memset(num,0,sizeof(num)); 39 len=b.len; 40 for1(i,len)num[i]=b.num[i]; 41 return (*this); 42 } 43 bigg operator =(int b) 44 { 45 memset(num,0,sizeof(num));len=0; 46 while(b)num[++len]=b%mod,b/=mod; 47 return (*this); 48 } 49 bigg operator *(int b) 50 { 51 bigg ans; 52 ans.len=len; 53 for1(i,len)ans.num[i]=num[i]; 54 int x=0; 55 for1(i,len) 56 { 57 x+=ans.num[i]*b; 58 ans.num[i]=x%mod; 59 x/=mod; 60 } 61 if(x)ans.num[++ans.len]=x; 62 return ans; 63 } 64 bigg operator +(const bigg &b) 65 { 66 bigg ans;ans=0; 67 ans.len=max(len,b.len); 68 for1(i,ans.len) 69 { 70 ans.num[i]+=num[i]+b.num[i]; 71 ans.num[i+1]=ans.num[i]/mod; 72 ans.num[i]%=mod; 73 } 74 if(ans.num[ans.len+1])ans.len++; 75 return ans; 76 } 77 void print() 78 { 79 printf("%d",num[len]); 80 for3(i,len-1,1)printf("%04d",num[i]);printf("\n"); 81 } 82 }; 83 bigg f[120][120]; 84 int main() 85 { 86 freopen("input.txt","r",stdin); 87 freopen("output.txt","w",stdout); 88 for1(i,100)f[i][1]=1; 89 for2(i,2,100) 90 for2(j,2,i) 91 f[i][j]=f[i-1][j]*j+f[i-1][j-1]; 92 int n,m; 93 while(cin>>n>>m)f[n][m].print(); 94 return 0; 95 }
C
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cmath> 4 #include<cstring> 5 #include<algorithm> 6 #include<iostream> 7 #include<vector> 8 #include<map> 9 #include<set> 10 #include<queue> 11 #include<string> 12 #define inf 1000000000000000ll 13 #define maxn 1500000 14 #define eps 1e-10 15 #define ll long long 16 #define pa pair<int,int> 17 #define for0(i,n) for(int i=0;i<=n;i++) 18 #define for1(i,n) for(int i=1;i<=n;i++) 19 #define for2(i,x,y) for(int i=x;i<=y;i++) 20 using namespace std; 21 inline ll read() 22 { 23 ll x=0,f=1;char ch=getchar(); 24 while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} 25 while(ch>='0'&&ch<='9'){x=10*x+ch-'0';ch=getchar();} 26 return x*f; 27 } 28 int fa[maxn],c[maxn][2],n,k,tot=0,rt=0; 29 ll sum[maxn],s[maxn],v[maxn],a[maxn]; 30 inline void pushup(int x) 31 { 32 int l=c[x][0],r=c[x][1]; 33 s[x]=s[l]+s[r]+1; 34 sum[x]=sum[l]+sum[r]+v[x]; 35 } 36 inline void rotate(int x,int &k) 37 { 38 int y=fa[x],z=fa[y],l=c[y][1]==x,r=l^1; 39 if(y==k)k=x;else c[z][c[z][1]==y]=x; 40 fa[x]=z;fa[y]=x;fa[c[x][r]]=y; 41 c[y][l]=c[x][r];c[x][r]=y; 42 pushup(y);pushup(x); 43 } 44 inline void splay(int x,int &k) 45 { 46 while(x!=k) 47 { 48 int y=fa[x],z=fa[y]; 49 if(y!=k) 50 { 51 if(c[z][0]==y^c[y][0]==x)rotate(x,k);else rotate(y,k); 52 } 53 rotate(x,k); 54 } 55 } 56 inline void ins(int &k,int kk,ll x) 57 { 58 if(!k) 59 { 60 k=++tot;s[tot]=1;fa[tot]=kk;v[tot]=sum[tot]=x;return; 61 } 62 s[k]++; 63 if(x<=v[k])ins(c[k][0],k,x);else ins(c[k][1],k,x); 64 pushup(k); 65 } 66 inline int find(int k,int x) 67 { 68 int l=c[k][0],r=c[k][1]; 69 if(s[l]+1==x)return k; 70 else if(s[l]>=x)return find(l,x); 71 else return find(r,x-s[l]-1); 72 } 73 inline int pos(int k,ll val) 74 { 75 if(v[k]==val)return k; 76 else if(val<v[k])return pos(c[k][0],val); 77 else return pos(c[k][1],val); 78 } 79 inline void del(ll val) 80 { 81 splay(pos(rt,val),rt); 82 int x=c[rt][0],y=c[rt][1]; 83 while(c[x][1])x=c[x][1]; 84 while(c[y][0])y=c[y][0]; 85 splay(x,rt);splay(y,c[x][1]); 86 fa[c[y][0]]=c[y][0]=0; 87 pushup(y);pushup(x); 88 } 89 int main() 90 { 91 freopen("input.txt","r",stdin); 92 freopen("output.txt","w",stdout); 93 n=read();k=read(); 94 for1(i,n)a[i]=read(); 95 ins(rt,0,-1);ins(rt,0,1000000000001ll); 96 for1(i,k-1)ins(rt,0,a[i]),splay(i+2,rt); 97 ll ans=inf,x,y; 98 for1(i,n-k+1) 99 { 100 ins(rt,0,a[i+k-1]);splay(i+k+1,rt); 101 x=find(rt,(s[rt]>>1)+1);y=v[x]; 102 splay(x,rt); 103 ans=min(ans,s[c[x][0]]*y-sum[c[x][0]]+sum[c[x][1]]-s[c[x][1]]*y); 104 del(a[i]); 105 if(ans==1000000000002ll)break; 106 } 107 cout<<ans-1000000000002ll<<endl; 108 return 0; 109 }