纪中Day6比赛总结

今天果然爆掉了。只有130分,排名掉了20多。T1直接眼睛瞎掉,硬生生地把一个01背包打成了暴力,30分。第三题没找着规律,果然我数论就是菜啊。T4还想拿一点部分分,结果一分没拿到。

T1

【总结】纪中Day6比赛总结_全排列

01背包,差不多是个模板题吧,只是要多判断一下重要度。

Code

#include<iostream>
#include<iomanip>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<string>
using namespace std;
int te[30010],p[30010],alltime,n,allp[30010],maxn=0;
void input()
{
cin>>alltime>>n;
for(int i=1;i<=n;i++)
{
cin>>p[i]>>te[i];
}
return;
}
int main()
{
freopen("happy.in","r",stdin);
freopen("happy.out","w",stdout);
input();
for(int i=1;i<=n;i++)
{
for(int j=alltime;j>=1;j--)
if(j>=p[i])
{
allp[j]=max(allp[j],allp[j-p[i]]+te[i]*p[i]);
}
if(allp[alltime]>maxn) maxn=allp[alltime];
}
cout<<maxn;
fclose(stdin);
fclose(stdout);
return 0;
}


T2

【总结】纪中Day6比赛总结_全排列_02

这道题其实和昨天做的火星人差不多,只不过是多了一个将字符串变为数字串的过程。然后再用全排列的方法求出后面的五个数。

Code

#include<iostream>
#include<iomanip>
#include<cstdio>
using namespace std;
int n,m,a,b[1005],d,t,k;
char s;
int main()
{
freopen("count.in","r",stdin);
freopen("count.out","w",stdout);
cin>>n>>m>>a;
for(int i=1;i<=a;i++)
{
cin>>s;
b[i]=s-'a'+1;
}
for(int i=1;i<=5;i++)
{
if(b[a]!=m)
{
b[a]++;
for(int j=1;j<=a-1;j++)
cout<<char(b[j]+'a'-1);
cout<<char(b[a]+'a'-1)<<endl;
continue;
}
d=0;
t=0;
for(k=a-1;k>=1;k--)
{
t++;
if(b[k]!=m-t){
t=1;break;
}
}
if(t==1)
{
b[k]++;
for(int j=k+1;j<=a;j++)
b[j]=b[j-1]+1;
for(int j=1;j<=a;j++)
cout<<char(b[j]+'a'-1);
cout<<endl;
}
}
fclose(stdin);
fclose(stdout);
return 0;
}


T3

【总结】纪中Day6比赛总结_ios_03

这道题需要我们去找规律。我们观察题目,发现每一个需要多个数相加的项,其实都是由在它之前并且离它最近的唯一幂(单纯的k的幂)与唯一幂前面的每一个数相加而成的。

例如题中给出数列的第五项(30+32),其实就是由在它前面并且最近的唯一幂32加上唯一幂前的第一项30得到的,以此类推,后面每一项都是如此(就等于k的幂)。

Code

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<iomanip>
using namespace std;
long long a[1000];
int main()
{
freopen("sequence.in","r",stdin);
freopen("sequence.out","w",stdout);
int n,k,m,j,i;
cin>>k>>n;
m=j=1;
i=2;
a[1]=1;
while(i<=n)
{
if(j==m)
{
a[i]=a[m]*k;
m=i;
j=1;
}
else
{
a[i]=a[m]+a[j];
j++;
}
i++;
}
cout<<a[n];
fclose(stdin);
fclose(stdout);
return 0;
}


T4

【总结】纪中Day6比赛总结_#include_04

【总结】纪中Day6比赛总结_i++_05

还未做出

总结

今天做得真的不行,题目看错了(主要是我dp没掌握好),而且T3比赛时的代码实现也出了问题,T4的快速幂不会打,而且也没想出思路。要尽快熟练掌握DFS和DP了

本人csdn博客


谢谢阅读



 作者:基德不基