EZ 2018 1 21 2018noip第五次膜你赛

  这次分数普遍偏高,而且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=-,i,x;
inline void read(int &x)
{
x=; char ch=getchar();
while (ch<''||ch>'') ch=getchar();
while (ch>=''&&ch<='') x=x*+ch-'',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=;i<=n;++i)
read(x),ans=max(ans,x+i-);
printf("%d",ans);
return ;
}

  T2 智障搜索题,我为了卡时间还加上了一堆诸如clock之类的东西,然后果然超时了

  主要是要把两个数列同时开始搜,不能先搜一个再去判断另一个是否可行

  CODE

#include<cstdio>
using namespace std;
const int N=;
int a[N],b[N],s[N],t,n,i;
bool flag;
inline void read(int &x)
{
x=; char ch=getchar();
while (ch<''||ch>'') ch=getchar();
while (ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
}
inline void DFS(int k,int len1,int len2)
{
if (k>n) { flag=; return; }
if (len1>n/||len2>n/) return;
if (s[k]==a[len2+])
{
b[len2+]=s[k];
DFS(k+,len1,len2+);
}
a[len1+]=s[k];
DFS(k+,len1+,len2);
}
int main()
{
freopen("split.in","r",stdin); freopen("split.out","w",stdout);
read(t);
while (t--)
{
read(n);
for (i=;i<=n;++i)
read(s[i]);
a[]=s[]; flag=;
DFS(,,);
if (flag) puts("Frederica Bernkastel"); else puts("Furude Rika");
}
return ;
}

  T3 标算太难,已超出能力范围(233333)

  但是我们要有信仰的去——打爆力

  循环更新原串直到得到只含有0~9的串,暴力枚举子串统计答案,20分到手

  CODE

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,r,k,i,j,ans,add[],tot;
string s,now,a[];
inline int calc(int x,int y)
{
if (x!=y&&s[x]=='') return ;
int m=;
for (int i=x;i<=y;++i)
m=(m*+s[i]-'')%n;
if (!m) return ;
return ;
}
int main()
{
freopen("message.in","r",stdin); freopen("message.out","w",stdout);
cin>>n>>r>>k;
for (i=;i<=k;++i)
cin>>a[i],a[i].erase(,);
s=a[];
for (i=;i<=k;++i)
{
memset(add,,sizeof(add)); tot=;
for (j=;j<s.size();++j)
if (s[j]=='A'+i-) add[++tot]=j;
for (j=;j<=tot;++j)
s.erase(add[j]+(j-)*(a[i].size()-),),s.insert(add[j]+(j-)*(a[i].size()-),a[i]);
}
for (i=;i<s.size();++i)
for (j=i;j<s.size();++j)
ans=ans+calc(i,j)==r?:ans+calc(i,j);
printf("%d",ans);
}
上一篇:sqli-labs学习笔记 DAY6


下一篇:前端神器Sublime Text3 常用插件&常用快捷键