前言
难度差异极大
成绩
只放前101010,JJJ表示初中,HHH表示高中
RankRankRank | PersonPersonPerson | ScoreScoreScore | AAA | BBB | CCC | DDD |
---|---|---|---|---|---|---|
111 | (J)2017WYC(J)2017WYC(J)2017WYC | 296296296 | 100100100 | 100100100 | 767676 | 202020 |
222 | (J)2017ZYC(J)2017ZYC(J)2017ZYC | 254254254 | 100100100 | 100100100 | 242424 | 303030 |
333 | (J)2017XXY(J)2017XXY(J)2017XXY | 240240240 | 100100100 | 100100100 | 404040 | 000 |
444 | (J)2017HZB(J)2017HZB(J)2017HZB | 240240240 | 100100100 | 100100100 | 404040 | 000 |
555 | (J)2017LRZ(J)2017LRZ(J)2017LRZ | 236236236 | 100100100 | 100100100 | 363636 | 000 |
666 | (H)2018YJY(H)2018YJY(H)2018YJY | 222222222 | 100100100 | 909090 | 323232 | 000 |
777 | (J)2017XJQ(J)2017XJQ(J)2017XJQ | 220220220 | 100100100 | 100100100 | 000 | 202020 |
888 | (J)2018LYF(J)2018LYF(J)2018LYF | 210210210 | 100100100 | 100100100 | 101010 | 000 |
999 | (J)2017LW(J)2017LW(J)2017LW | 200200200 | 100100100 | 100100100 | 000 | 000 |
101010 | (J)2017HJQ(J)2017HJQ(J)2017HJQ | 200200200 | 100100100 | 100100100 | 000 | 000 |
LYFLYFLYF这个dalaodalaodalao做完自己的题来刷水
正题
T1:nssl1320,jzoj(T1:nssl1320,jzoj(T1:nssl1320,jzoj(初中)2108−)2108-)2108−买装备【dfs,dfs,dfs,水题】
链接:
https://blog.csdn.net/Mr_wuyongcong/article/details/90108839
T2:nssl1321,jzoj(T2:nssl1321,jzoj(T2:nssl1321,jzoj(初中)2106−)2106-)2106−买门票【dfs,dfs,dfs,暴力,,,字符串】
链接:
https://blog.csdn.net/Mr_wuyongcong/article/details/90108885
T3:nssl1322,jzoj(T3:nssl1322,jzoj(T3:nssl1322,jzoj(初中)2109−)2109-)2109−清兵线【dpdpdp】
链接:
https://blog.csdn.net/Mr_wuyongcong/article/details/90109009
T4:nssl1323,jzoj(T4:nssl1323,jzoj(T4:nssl1323,jzoj(初中)2107−)2107-)2107−交流【dfs,dfs,dfs,容斥,,,组合数】
链接:
https://blog.csdn.net/Mr_wuyongcong/article/details/90110160
someofcodessome\ of\ codessome of codes
T3 76分code
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=320;
int n,m,a[N],ans;
int f[N][N][2],t[N][N][2];
void dfs(int l,int r,bool k,int v,int w){if(v>m||l<1||r>n) return;w+=m-v;if(f[l][r][k]>=w||f[l][r][k]==w&&t[l][r][k]<=v) return;f[l][r][k]=w;t[l][r][k]=v;ans=max(ans,f[l][r][k]);if(k){dfs(l,r+1,1,v+a[r+1]-a[r],w);dfs(l-1,r,0,v+a[r]-a[l-1],w);}else{dfs(l-1,r,0,v+a[l]-a[l-1],w);dfs(l,r+1,1,v+a[r+1]-a[l],w);}
}
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)scanf("%d",&a[i]);a[++n]=0;sort(a+1,a+1+n);int mid=lower_bound(a+1,a+1+n,0)-a;memset(f,0xcf,sizeof(f));memset(t,0x3f,sizeof(t));dfs(mid,mid,0,0,0);dfs(mid,mid,1,0,0);printf("%d",ans-m);
}
T4 20分code
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<iostream>
using namespace std;
const int L=55,XJQ=1000003;
int m,K,l,ans,num[L],cnt;
char k[L],y[20][L];
bool v[L][26];
string z[32780];
void dfs(int dep,int c)
{if(!c){++cnt;for(int i=1;i<=l;i++)z[cnt]+=k[i];return;}if(dep>m) return;char b[L];bool flag=1;for(int i=1;i<=l;i++){if(k[i]!='?'&&y[dep][i]!='?'&&k[i]!=y[dep][i]){flag=0;break;}b[i]=k[i];k[i]=(y[dep][i]=='?'?k[i]:y[dep][i]);}if(flag) dfs(dep+1,c-1);for(int i=1;i<=l;i++)k[i]=b[i];dfs(dep+1,c);
}
bool cmp(string x,string y)
{for(int i=0;i<l;i++){if(x[i]=='?'||y[i]=='?') continue;if(x[i]>y[i])return 1;else if(x[i]<y[i]) return 0;}return 1;
}
int main()
{scanf("%d%d",&m,&K);for(int i=1;i<=m;i++)scanf("%s",y[i]+1);l=strlen(y[1]+1);for(int i=1;i<=l;i++)k[i]='?';dfs(1,K);sort(z+1,z+1+cnt,cmp);for(int j=0;j<l;j++){k[j]=z[1][j];if(k[j]=='?') num[j]=26;else num[j]=1,v[j][k[j]-'a']=1;}//cout<<z[1]<<endl;for(int i=2;i<=cnt;i++){bool flag=0;//cout<<z[i]<<endl;for(int j=0;j<l;j++){if(k[j]!='?'&&z[i][j]!='?'&&k[j]!=z[i][j]){flag=1;break;}k[j]=(z[i][j]=='?'?k[j]:z[i][j]);}if(flag){memset(v,0,sizeof(v));int w=1;for(int j=0;j<l;j++){w=w*num[j]%XJQ;k[j]=z[i][j];if(k[j]=='?') num[j]=26;else num[j]=1,v[j][k[j]-'a']=1;}ans=(ans+w)%XJQ;}else{for(int j=0;j<l;j++){if(num[j]==26) continue;if(z[i][j]=='?') num[j]=26;else num[j]+=!v[j][z[i][j]-'a'],v[j][z[i][j]-'a']=1;}}}int w=1;for(int j=0;j<l;j++)w=w*num[j]%XJQ;ans=(ans+w)%XJQ;printf("%d",ans);
}
总结
T1T1T1和T2T2T2水题直接切
然后T3T3T3和T4T4T4想了半天,然后T3T3T3想到了可以dpdpdp的性质,但是不知道一种状态如何快速表示就只好不理那个状态。就在错误的贪心的基础上加了个dpdpdp,然后T4XJBT4XJBT4XJB乱写。
看题期望分100+100+40+0=240100+100+40+0=240100+100+40+0=240
做题期望分100+100+60+0=260100+100+60+0=260100+100+60+0=260
实际の分数100+100+76+20=296100+100+76+20=296100+100+76+20=296