https://blog.csdn.net/qq_45530271/article/details/109957130#E_123
E.
字符串拼接
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include<vector>
#include<iomanip>
#include<functional>
//#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
//const int N=
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n;
string ans,s[105];
cin>>n;
for(int i=0; i<n; i++) {
cin>>s[i];
}
ans=s[0];
int i,j,k;
for(i=1; i<n; i++) {
int l1=ans.length(),l2=s[i].length(),k=0;
for(j=l2; j>=0; j--) {
if(l1-j<0) continue;
if(s[i].substr(0,j)==ans.substr(l1-j,l1)) {
k=j;
break;
}
}
for(k; k<l2; k++) {
ans+=s[i][k];
}
cout<<ans<<endl;
}
cout<<ans<<endl;
return 0;
}
D. 魔法少女:承
题意:给定每颗高、低纯度结晶的回复理性值和纯粹度,找一种使用高、低纯度结晶的个数,使得理性值回满>=100,平均纯粹度≥ 60 % \geq60%≥60%,尽可能节约高纯度结晶,其次节约低纯度结晶。
//魔法少女:承 Standard Code [C++]
#include<bits/stdc++.h>
using namespace std;
int T,a1,b1,a2,b2;
int main(){
cin>>T;
while(T--){
cin>>a1>>b1>>a2>>b2;
int ans1=INT_MAX,ans2=INT_MAX;
for(int i=0;i<=100;i++)
for(int j=0;j<=100;j++)
if(i*a1+j*a2>=100&&(i*b1+j*b2)/(i+j)>=60){
if(i<ans1||(i==ans1&&j<ans2)){
ans1=i;
ans2=j;
}
}
printf("%d %d\n",ans1,ans2);
}
}
!!!
未来看的重点
I打怪兽
五个导弹3个怪兽,怎么分配。
运用dfs。
//ħ·¨ÉÙÅ®£º×ª Standard Code [C++]
#include<bits/stdc++.h>
using namespace std;
int T,hp[4],a[6],ans[6],flag;
void dfs(int k,int damage) {
if(flag) return;
if(k>3) {
for(int i=1; i<=5; i++)printf("%d%c",ans[i]," \n"[i==5]);
flag=1;
return;
}
if(damage>=hp[k]) {
dfs(k+1,0);
return;
}
for(int i=1; i<=5; i++)
if(!ans[i]) {
ans[i]=k;
dfs(k,damage+a[i]);
ans[i]=0;
}
}
int main() {
cin>>T;
while(T--) {
// memset(ans,0,sizeof(ans));
flag=0;
for(int i=1; i<=3; i++)cin>>hp[i];
for(int i=1; i<=5; i++)cin>>a[i];
dfs(1,0);
}
}