A. Yet Another String Game
分析: 贪心, A l i c e Alice Alice行动时,只要字符串不是 a a a,就改为 a a a,如果是 a a a就改为 b b b; B o b Bob Bob行动时,只要字符串不是 z z z,就改为 z z z,否则就改为 y y y。
代码:
#include<bits/stdc++.h>
using namespace std;
int t;
char s[105];
int main(){
cin>>t;
while(t--){
cin>>s;
for(int i=0;s[i];i++){
if(i%2==0){
if(s[i]=='a') s[i]='b';
else s[i]='a';
}
else{
if(s[i]=='z') s[i]='y';
else s[i]='z';
}
}
cout<<s<<endl;
}
}
B. The Great Hero
分析: 英雄要杀死第 i i i只怪,必须要战斗 ⌈ h e a l t h [ i ] A ⌉ \left \lceil \frac{health[i]}{A} \right \rceil ⌈Ahealth[i]⌉个回合,战斗结束后需要掉 ⌈ h e a l t h [ i ] A ⌉ ∗ a t t a c k [ i ] \left \lceil \frac{health[i]}{A} \right \rceil *attack[i] ⌈Ahealth[i]⌉∗attack[i]滴血。英雄想要杀死所有怪,必须承受 ∑ i = 1 n ⌈ h e a l t h [ i ] A ⌉ ∗ a t t a c k [ i ] \sum_{i=1}^{n} \left \lceil \frac{health[i]}{A} \right \rceil *attack[i] ∑i=1n⌈Ahealth[i]⌉∗attack[i]点伤害,所以先累加起来表示总掉血量。攻击力最高的怪肯定要最后攻击,因此只要最后血量加上攻击力最高的怪的攻击 ≥ 0 \ge0 ≥0,就可以获胜,否则战败。
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int t,A,B,att[N],hea,n;
int main(){
cin>>t;
while(t--){
int maxn=-1e9;
cin>>A>>B>>n;
for(int i=0;i<n;i++){
cin>>att[i];
maxn=max(maxn,att[i]);
}
for(int i=0;i<n;i++){
cin>>hea;
B-=ceil(1.0*hea/A)*att[i];
}
if(B+maxn>=0) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}