8.11欢乐赛

                                             8.11欢乐赛

                                                                                                                                           

A.AK的距离

AK的距离
时间限制 : - MS   空间限制 : - KB 
评测说明 : 1s,128m
问题描述

同学们总想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方块消消乐
时间限制 : - MS   空间限制 : - KB 
评测说明 : 1s,128m
问题描述

何老板在玩一款消消乐游戏,游戏虽然简单,何老板仍旧乐此不疲。
游戏一开始有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怪兽游戏
时间限制 : - MS   空间限制 : - KB 
评测说明 : 1s,256m
问题描述

何老板在玩一款怪兽游戏。游戏虽然简单,何老板仍旧乐此不疲。
游戏一开始有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 }

 

猜你喜欢

转载自www.cnblogs.com/CXYscxy/p/11335670.html