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;
}
}