zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    js上移、下移排序 效果
    如何为平板打造完美的网站页面?
    [BUUOJ]刮开有奖reverse
    [0CTF 2016]piapiapia
    [TSCTFJ 2019]bypass
    [安洵杯 2019]easy_serialize_php
    [TSCTFJ] relax
    c#访问网页
    DNN 数据访问
    c#访问数据库
  • 原文地址:https://www.cnblogs.com/CXYscxy/p/11335670.html
Copyright © 2011-2022 走看看