本文主要是介绍2022ICPC(南京站),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
I题
思路:这是一个签到题比较简单,只要判断出字符串中出现最多的字符,然后再让字符总数减去就行了
代码如下
//I
#include<iostream>
#include<algorithm>
#include<string>
#include<map>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;
int t;
signed main()
{IOScin>>t;while(t--){map<int,int>m;string s;cin>>s;for(int i=0;i<s.size();i++){m[s[i]-'a']++;}int ma=-1e9,t;for(int i=0;i<=25;i++){if(m[i]>ma){ma=m[i];t=i;}}cout<<s.size()-m[t]<<endl;}return 0;}
G题
思路:这个题是个贪心题,就是但你遇见0时最好把它变成-1,可以使最后攻击力最大,我们可以当数量大于1时,遇见0就把0变成-1,当数量等于1时遇见-1可以吧0变成-1的反悔成0变成1的就行了
代码如下
//G
#include<iostream>
#include<algorithm>
#include<string>
#include<map>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;
int t,a,b,c,n,x,f;
signed main()
{IOScin>>t;while(t--){a=1,b=1,c=0,f=0;cin>>n;for(int i=1;i<=n;i++){cin>>x;if(x==1){a++,b++;}else if(x==-1){if(a>1)a--;else if(c>=1)c--,b++,a++;else f=1;}else{if(a>1)a--,c++;elsea++,b++;}}if(f){cout<<-1<<endl;continue;}cout<<b/__gcd(a,b)<<" "<<a/__gcd(a,b)<<endl;}return 0;}
这篇关于2022ICPC(南京站)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!