【比赛报告】2018.10.31牛客网线上赛[牛客OI周赛2-提高组] NOIP练习赛卷二十九
A.游戏 乱搞
#include<cstdio>
const int N=1e3+10;
char s[N][N];
int n,m,t;
int main()
{
//freopen("in.txt","r",stdin);
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)scanf("%s",s[i]);
if(s[0][0]=='B')puts("BLUESKY007");
else if(s[0][0]=='G')puts("fengxunling");
else puts("dreagonm");
}
return 0;
}
总结
神奇的收敛性,这NM是降维打击吧
B.水果蛋糕 乱搞
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
long long n,m;
scanf("%lld%lld",&n,&m);
if(n<m)swap(n,m);
if(m<=2)printf("%lld\n",m*n);
else if(m==3)printf("%lld\n",n+6*(n/6)+2*min(n%6,3ll));
else if(m==4)
{
if(n%6==0)printf("%lld\n",2*n);
else if(n%6==1||n%6==2)printf("%lld\n",12*(n/6)+4*(n%6));
else if(n%6==3||n%6==4)printf("%lld\n",12*(n/6)+4*2+2*((n%6)-2));
else printf("%lld\n",12*(n/6)+4*2+2*2);
}
else printf("%lld\n",(n*m+1)/2);
return 0;
}
总结
又是找规律……我药丸QAQ
C.好朋友 数位DP
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
template<typename tp>inline void read(tp&x)
{
x=0;int f=0;char ch=getchar();
while(ch<'0'||ch>'9')f|=ch=='-',ch=getchar();
while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
if(f)x=-x;
}
typedef long long ll;
ll l,r,ans,f[20][4],d[20];
int t,a[20],x,i,m;
inline ll work(ll n)
{
if(n<1000)return 0;//1000以下没有符合条件的
for(m=0;n;n/=10)a[m++]=n%10;
reverse(a,a+m);memset(f,0,sizeof(f));
f[1][0]=a[0]-1;x=0;
for(i=1;i<m;i++)
{
f[i+1][0]=f[i][0]*9;
f[i+1][1]=f[i][0]+f[i][1]*9;
f[i+1][2]=f[i][1]+f[i][2]*9;
f[i+1][3]=f[i][2]+f[i][3]*10;
f[i+1][x]+=a[i]-1;
f[i+1][x+(x<2&&a[i]||x==2&&a[i]>7)]++;
if(x<2&&!a[i]||x==2&&a[i]==7)x++;
}
return d[m-1]+f[m][3];
}
int main()
{
//freopen("in.txt","r",stdin);
for(i=0,l=1;i<=18;i++,l*=10)d[i]=work(l-1);
read(t);
while(t--)
{
read(l);read(r);ans^=work(r+1)-work(l);
}
printf("%lld\n",ans);
return 0;
}
总结
数位DP好题
赛后总结
这次题好多推结论找规律的,让我想起去年小学奥数的恐惧(其实是骗人的啦,我去年复赛都没进,嘻……呜呜o(╥﹏╥)o)
每次模拟赛都被虐QAQ,生无可恋.jpg