8.11欢乐赛
A.AK的距离
AK的距离 | ||
|
问题描述
同学们总想AK。
于是何老板给出一个由大写字母构成的字符串,他想你帮忙找出其中距离最远的一对'A'和'K'。
比如下列字符串:
BKABGKWAXKA
距离最远一对'A'和'K'的间距为6,它们之间间隔了6个字符。
输入格式
一行,一个由大写字母构成的字符串
输出格式
一个整数,表示A和K最远的间距。要求A必须在K的左侧,如果不存在,输出-1
样例输入 1
BKABGKWAXKA
样例输出 1
6
样例输入 2
KKKKKKKKKKAAAAAAAAAAAAAAA
样例输出 2
-1
提示
1<=字符串的长度<=10000
正排找出第一个‘A’,再找出最后一个‘K’,再算距离
很水就不说了。。。。
1 // 2 #include<stdio.h> 3 #include<bits/stdc++.h> 4 using namespace std; 5 string s; 6 int sum,a,b; 7 int main() 8 { 9 cin>>s; 10 for(int i=1; i<=s.size(); i++)//第一个A 11 { 12 if(s[i]=='A') 13 { 14 a=i; 15 break; 16 } 17 } 18 for(int i=1; i<=s.size(); i++)//最后一个K 19 { 20 if(s[i]=='K') 21 { 22 b=i; 23 } 24 } 25 if(b-a<0) 26 { 27 cout<<"-1"; 28 return 0; 29 } 30 cout<<b-a-1; 31 return 0; 32 }
B.方块消消乐
B方块消消乐 | ||
|
问题描述
何老板在玩一款消消乐游戏,游戏虽然简单,何老板仍旧乐此不疲。
游戏一开始有n个边长为1的方块叠成一个高为n的柱子。
有红色和蓝色两种方块。
游戏操作:玩家选择两个相邻且不同色的方块,将它们消除。然后上方的方块会自动落下来,使得剩下的方块始终保持柱状。
玩家可以进行任意次上述操作,消除的方块越多,得分越高。何老板想知道:最多能消除掉多少方块?
输入格式
一个由0和1构成的字符串,表示游戏开始时的方块柱子。其中0表示蓝色方块,1表示红色方块。
输出格式
一个整数,表示最多能消除的方块数。
样例输入 1
0011
样例输出 1
4
样例输入 2
11011010001011
样例输出 2
12
样例输入 3
0
样例输出 3
0
提示
设字符串的长度为n
1<=n<=10^5
用字符数组存储数字(可直接cin>>s)
算出1和0中出现次数最少的个数再*2就是答案了(简单的贪心,不解释)
1 #include<stdio.h> 2 #include<bits/stdc++.h> 3 using namespace std; 4 char s[100005]; 5 int cnt1,cnt0,len; 6 int main() 7 { 8 cin>>s; 9 len=strlen(s); 10 for(int i=0;i<len;i++) 11 { 12 if(s[i]=='0')cnt0++; 13 if(s[i]=='1')cnt1++; 14 } 15 cout<<2*min(cnt1,cnt0); 16 }
C怪兽游戏
C怪兽游戏 | ||
|
问题描述
何老板在玩一款怪兽游戏。游戏虽然简单,何老板仍旧乐此不疲。
游戏一开始有N只怪兽,编号1到N。其中第i只怪兽的生命值为 Ai,如果一只怪兽的生命值>0,那么它还活着。
游戏中,玩家可以反复进行下列操作: 任选一只活着的怪兽X,操控它去攻击任意一只活着的怪兽Y,被攻击的怪兽Y损失的生命值为攻击者X的当前的生命值。
当还剩一只活着的怪兽时,游戏结束。剩余那只怪兽的生命值越小,玩家在此局游戏的得分就越高。
何老板想知道,最后活着那只怪兽的生命值,最小可能是多少,请你帮他算一算。
输入格式
第一行,一个整数N
第二行,N个空格间隔的整数A1 ,A2,A3......An
输出格式
一个整数,表示能够存活的怪兽的最小生命值
样例输入 1
4
2 10 8 40
样例输出 1
2
样例输入 2
4
5 13 8 1000000000
样例输出 2
1
样例输入 3
3
1000000000 1000000000 1000000000
样例输出 3
1000000000
提示
2<=n<=10^5
1<=Ai<=10^9
对消,求所有值的最大公因数
1 // 2 #include<stdio.h> 3 #include<bits/stdc++.h> 4 using namespace std; 5 int a[100005]; 6 int n,ans; 7 int main() 8 { 9 cin>>n; 10 for(int i=1;i<=n;i++) 11 cin>>a[i]; 12 ans=a[1]; 13 for(int i=2;i<=n;i++) 14 ans=__gcd(ans,a[i]); 15 cout<<ans<<endl; 16 }