欢乐SSL初二组周六赛【2019.5.11】
前言
難度差異極大
成績
只放前101010,JJJ表示初中,HHH表示高中
| 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
endendend
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的欢乐SSL初二组周六赛【2019.5.11】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑经常死机怎么办电脑老是死机咋办
- 下一篇: P2842-LJJ算数【数论,快速幂】