第一题:牛牛铺地毯。
简单的dp
核心就一张图
#include<bits/stdc++.h>
using namespace std;
int main(){
int T;
cin>>T;
vector<int>N(T);
int Max=0;
for(int i=0;i<T;i++){
cin>>N[i];
Max=max(Max,N[i]);
}
int dp[100000];
//dp[0]=1;
dp[1]=1;
dp[2]=2;
dp[3]=4;
for(int i=4;i<100000;i++){
dp[i]=(dp[i-1]+dp[i-2]+dp[i-3])%10007;
}
for(int i=0;i<T;i++){
cout<<dp[N[i]]<<endl;
}
}
第二题,[编程题]出模拟赛 ,很简单,但它有个大坑点,数据范围来到了10的18次方,我没注意看。。用int只能过2/10.。。。。
#include<bits/stdc++.h>
using namespace std;
int main(){
long long E,EM,M,MH,H;
cin>>E>>EM>>M>>MH>>H;
long long avg=(E+EM+M+MH+H)/3;
long long First=E+EM;
long long Second=EM+M+MH;
long long Third=MH+H;
cout<<min(min(min(First,Second),Third),avg);
}
第三题:关键词
用map和一个辅助数组
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
map<string,int>res;
vector<string>a;
for(int i=0;i<n;i++){
string x;
cin>>x;
if(!res[x]){
res[x]=1;
a.push_back(x);
}
else res[x]++;
}
int count=0;
for(int i=0;i<a.size();i++){
if(res[a[i]]>=0.01*n)count++;
}
cout<<count;
}
第四题:
小易爱回文
字符串函数的运用。
#include<bits/stdc++.h>
#include<iostream>
//#include<algorithm>
using namespace std;
int main(){
string str;
cin>>str;
int l=str.size();
for(int i=0;i<l;i++){
string temp=str;
reverse(temp.begin(),temp.end());
if(temp==str)break;
str.insert(str.begin()+l,str[i]);
}
cout<<str;
}