1、C 小沙的杀球
- 如果你能够杀球但不杀球,虽然回复了体力,但你后续可能会没有机会继续杀球,并且杀球次数相同,那么回复的体力是相同的,所以在同等条件下,我们应该尽可能多的杀球。
- 不开long long 会爆炸
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main(){
LL x, a, b; cin>>x>>a>>b;
string s; cin>>s;
LL cnt = 0;
for(char ch : s){
if(ch=='1' && x>=a){
x -= a; cnt++;
}else{
x += b;
}
}
cout<<cnt<<"\n";
return 0;
}
2、K-小沙的步伐
- 依照题意,如果是5就不动,不是5的话对非5以外的点添加一次次数的同时对5添加一次即可。
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int a[200];
int main(){
string s; cin>>s;
for(char ch : s){
if(ch!='5')a[ch-'0']++, a[5]++;
}
for(int i = 1; i <= 9; i++){
printf("%d ", a[i]);
}
return 0;
}
3、E-小沙的长路
- 对于最长路的最小值,我们考虑,如果图上有环,那么我们肯定能尽可能多的走环,这样的话我一定会比我不走环更长,所以我们构造的图要尽可能的没环。在没环的情况下,我们只会经过每个点各一次,所以总长度是n-1。
- 对于最长路的最大值,我们考虑尽可能的将每一条路都走遍,我们可以理解为对一个完全图进行删边,我们需要删尽可能少的边,从而使他能够从头走到尾,也就是构造出一个欧拉回路。
又由欧拉回路的定义可知,我们需要将每个点的出入度控制为偶数即可组成欧拉回路,所以奇偶特判即可。
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main(){
LL n; cin>>n;
cout<<n-1<<" "<<(n%2==1? n*(n-1)/2 : n*(n-1)/2-n/2+1);
return 0;
}