人生如此复杂,机会多得像稠密图,我们没理由认输。尽管我们走不了最短路,但图仍是连通图。TLE之前,没有一个节点叫失败。(You know what's cooking? BOOM~~)!

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 }

 

      D翻骰子

D翻骰子
时间限制 : - MS   空间限制 : - KB 
评测说明 : 1s,128m
问题描述

何老板有一个骰子,骰子是一个正方体,六个面上的点数分别是1到6,其中相对两面的点数之和总是7。

何老板把骰子摆放在桌子上,他可以任选一面朝上。接下来他将进行如下操作:
将骰子翻动90度,翻动后新的一面将朝上。如下图所示,原本1点朝上的骰子,将骰子翻动后,可能是2、3、4、5朝上。新朝上那一面的点数,将是这一次翻动所得到的分数。

现在给出一个指定分数X,何老板想知道,最少翻动几次就能使总得分数>=X。

输入格式

一个整数X

输出格式

一个整数,表示最少需要翻动的次数

样例输入 1

7

样例输出 1

2
样例说明:
一开始可以使2点朝上。
翻转,使得3点朝上,得分3
翻转,使得5点朝上,得分5
总得分8,翻转次数2

样例输入 2

149696127901

样例输出 2

27217477801

样例输入 3

65

样例输出 3

12

样例输入 4

1

样例输出 4

1

提示
1<=x<=10^15
 
显然6,5对翻最快,这样一轮能得11分,再分别·讨论
 1 #include<stdio.h> 
 2 #include<bits/stdc++.h> 
 3 using namespace std; 
 4 long long n,ans; 
 5 #pragma GCC optimize(2) 
 6 #pragma GCC optimize(3) 
 7 #pragma GCC optimize("Ofast") 
 8 #pragma GCC optimize("inline") 
 9 #pragma GCC optimize("-fgcse") 
10 #pragma GCC optimize("-fgcse-lm") 
11 #pragma GCC optimize("-fwhole-program") 
12 #pragma GCC optimize("-freorder-blocks") 
13 #pragma GCC optimize("-fschedule-insns") 
14 #pragma GCC optimize("inline-functions") 
15 #pragma GCC optimize("-ftree-tail-merge") 
16 int main() 
17 { 
18     cin>>n; 
19     ans+=n/11; 
20     if(n%11==0) 
21     { 
22         cout<<2*ans; 
23         return 0; 
24     } 
25     if(n%11-6<=0) 
26     { 
27         cout<<2*ans+1; 
28         return 0; 
29     } 
30     if(n%11-6>0) 
31     { 
32         cout<<2*ans+2; 
33         return 0; 
34     } 
35 }

 

posted @ 2019-08-11 17:17  CXYscxy  阅读(373)  评论(1编辑  收藏  举报
Live2D