这次分数普遍偏高,而且yu'ben'ao又AK了!
但是最后一题莫名爆0让我很感伤啊(搓了1个多小时的20分暴力)!
难度偏低,主要是T2没剪枝,炸了3个点。
T1 这种SB题恐怕是千年难遇了,PJ------------的难度
稍微观察一下就能发现ans=max{a[i]+i-1}
缅怀yekehe60分
CODE
#include<cstdio> using namespace std; int n,ans=-1,i,x; inline void read(int &x) { x=0; char ch=getchar(); while (ch<'0'||ch>'9') ch=getchar(); while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); } inline int max(int a,int b) { return a>b?a:b; } int main() { freopen("energy.in","r",stdin); freopen("energy.out","w",stdout); read(n); for (i=1;i<=n;++i) read(x),ans=max(ans,x+i-1); printf("%d",ans); return 0; }
T2 智障搜索题,我为了卡时间还加上了一堆诸如clock之类的东西,然后果然超时了
主要是要把两个数列同时开始搜,不能先搜一个再去判断另一个是否可行
CODE
#include<cstdio> using namespace std; const int N=45; int a[N],b[N],s[N],t,n,i; bool flag; inline void read(int &x) { x=0; char ch=getchar(); while (ch<'0'||ch>'9') ch=getchar(); while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); } inline void DFS(int k,int len1,int len2) { if (k>n) { flag=1; return; } if (len1>n/2||len2>n/2) return; if (s[k]==a[len2+1]) { b[len2+1]=s[k]; DFS(k+1,len1,len2+1); } a[len1+1]=s[k]; DFS(k+1,len1+1,len2); } int main() { freopen("split.in","r",stdin); freopen("split.out","w",stdout); read(t); while (t--) { read(n); for (i=1;i<=n;++i) read(s[i]); a[1]=s[1]; flag=0; DFS(2,1,0); if (flag) puts("Frederica Bernkastel"); else puts("Furude Rika"); } return 0; }
T3 标算太难,已超出能力范围(233333)
但是我们要有信仰的去——打爆力
循环更新原串直到得到只含有0~9的串,暴力枚举子串统计答案,20分到手
CODE
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int n,r,k,i,j,ans,add[30],tot; string s,now,a[30]; inline int calc(int x,int y) { if (x!=y&&s[x]=='0') return 0; int m=0; for (int i=x;i<=y;++i) m=(m*10+s[i]-'0')%n; if (!m) return 1; return 0; } int main() { freopen("message.in","r",stdin); freopen("message.out","w",stdout); cin>>n>>r>>k; for (i=1;i<=k;++i) cin>>a[i],a[i].erase(0,3); s=a[1]; for (i=2;i<=k;++i) { memset(add,0,sizeof(add)); tot=0; for (j=0;j<s.size();++j) if (s[j]=='A'+i-1) add[++tot]=j; for (j=1;j<=tot;++j) s.erase(add[j]+(j-1)*(a[i].size()-1),1),s.insert(add[j]+(j-1)*(a[i].size()-1),a[i]); } for (i=0;i<s.size();++i) for (j=i;j<s.size();++j) ans=ans+calc(i,j)==r?0:ans+calc(i,j); printf("%d",ans); }