常州day7,不知不觉中就到了最后一天,回顾这七天,真是感慨万千
T1,这七天中最最最简单的题,唯一一题直接暴力就能过的题,直接暴力枚举每种方案,能匹配的直接匹配
AC代码如下
#include<bits/stdc++.h>
using namespace std;
int A,C,G,T,ans=INT_MAX;
int main(){
freopen("gmo.in","r",stdin);
freopen("gmo.out","w",stdout);
string s1,s2;
cin>>s1>>s2;
cin>>A>>C>>G>>T;
for(int i=0;i<s1.size();i++){
int total=0,iq=i;
for(int j=0;j<s2.size();j++){
if(s1[iq]==s2[j]&&iq<s1.size()){
iq++;
continue;
}
if(s1[iq]!=s2[j]){
if(s2[j]=='A')total+=A;
if(s2[j]=='C')total+=C;
if(s2[j]=='G')total+=G;
if(s2[j]=='T')total+=T;
}
}
ans=min(total,ans);
}
cout<<ans;
return 0;
}
T2,直接暴力,先给数组排序,再从1枚举到最小的数,如果满足a[i]%j=0,说明G成立,直接输出即可 20分,代码如下
#include<bits/stdc++.h>
using namespace std;
int main(){
freopen("tsuki.in","r",stdin);
freopen("tsuki.out","w",stdout);
int t,a[50001];
cin>>t;
for(int i=1;i<=t;i++){
int n,k,f;
cin>>n>>k>>f;
memset(a,0,n);
for(int j=1;j<=n;j++){
cin>>a[j];
}
sort(a+1,a+n+1);
for(int j=1;j<=a[1];j++){
int w=f;
bool ry=0;
for(int f=1;f<=n;f++){
if(a[f]%j<=k){
continue;
}
if(w==0){
ry=1;
break;
}
w--;
}
if(ry==0){
cout<<j<<" ";
}
}
cout<<endl;
}
return 0;
}
T3,刚拿到题,看见p>=0,就感觉学长出的数据一定有p=0的数据,就打算骗分
经过15分钟以后的研究推出当p=0时,包围圈不受干扰
设t=min(h,w)-l;
总共的包围圈数就是(t+1)(h-l)(w-l)+t(t-1)(2t-1)/6+l(t-2)(2t+2)/2-(h+w)(t-2)(t+1)/2+1;
结果悲剧了,没有p=0的数据,0分,0分代码如下
#include<bits/stdc++.h>
using namespace std;
int h,w,l,p;
long long ans,t;
int main(){
freopen("besiege.in","r",stdin);
freopen("besiege.out","w",stdout);
cin>>h>>w>>l>>p;
t=min(h,w)-l;
ans+=(t+1)*(h-l)*(w-l)+t*(t-1)*(2*t-1)/6+l*(t-2)*(2*t+2)/2-(h+w)*(t-2)*(t+1)/2+1;
if(p<1){
cout<<ans;
return 0;
}
if(h<=5){
cout<<4;
return 0;
}
if(h>5){
cout<<1836459189;
return 0;
}
return 0;
}
T4 sad 全员爆0 果然像学长说的sad
刚看到题面,本来想深搜,但没有边界,跳不出循环,
也不好骗分,直接跳过