CZYZ 2023 暑假常规训练模拟赛
A.聂赫柳朵夫之变(gmo)
- 枚举开始位置,贪心匹配即可。
- 能匹配就匹配一定是最优的。
- 附代码:
#include<bits/stdc++.h>
using namespace std;
string s1,s2;
string s;
map<char,int> mp;
char c[50001];
char qwq[5]= {'0','A','C','G','T'};
int n,m;
long long now,minn;
int main() {
freopen("gmo.in","r",stdin);
freopen("gmo.out","w",stdout);
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin>>s1>>s2;
n=s1.size();
m=s2.size();
for(int i=1; i<=4; i++)
cin>>mp[qwq[i]];
for(int i=0; i<m; i++) {
c[i]=s2[i];
minn+=mp[s2[i]];
}
for(int i=0; i<n; i++) {
now=0;
int j=i,k=0;
while(k<m) {
if(s1[j]==s2[k])
j++;
else
now+=mp[s2[k]];
k++;
}
minn=min(now,minn);
}
cout<<minn;
return 0;
}
B.夏目漱石之月(tsuki)
- 直接枚举 g ,对于每个 g ,合法的 a[i] 大小范围是 [g, g + k] ∪ [2g, 2g + k]。
- 开一个桶,表示有多少个 a[i] ,将其前缀和。
- 直接统计有多少个合法的 a[i] 即可。
C.儒夫上校之算(besiege)
- 树状数组,枚举。
D.铁英之游(sad)
- ~NO~
你的NO删除符号没啦