zoukankan      html  css  js  c++  java
  • 喵哈哈村的魔法考试 Round #5 (Div.2) ABCC2

    官方题解:http://www.cnblogs.com/qscqesze/p/6516139.html

    喵哈哈村的狼人杀大战(1)

    喵哈哈村最近热衷于玩一个叫做狼人杀的游戏!

    张小田今天她抽到的是民的身份,按照她的一贯玩法,她不会考虑发言者的发言,她只考虑站队情况。

    现在是警上竞选的投票环节,现在只剩下还能当警长的两个真假预言家。

    张小田认为,如果在某一天,有连续坐在一起的k个人投票给同一个人的话,那么她就认为这一局可能比较危险。

    投给第一个预言家的,就记为0,投给第二个预言家的记为1,于是就可以得到一个01串。

    现在张小田就交给你来判断,如果按照张小田 的逻辑来看这一局是否危险!

    ----

    题目翻译:给你一个01串,你需要判断这个01串里面是否存在连续的相同字符的长度超过k个。

    假设当前k为3,那么010101001就不危险,11101010就危险。

    注意,该01串是串,而不是环。

    该题包含多组测试数据。
    第一行一个整数k。
    第二行一个01串,s。
    满足:1<=len(s)<=100,1<=k<=100

    如果危险的话,输出Lose,否则输出Win

     复制
    3
    010101001
    3
    11101010
    Win
    Lose
    解法:模拟
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cstdlib>
     5 #include<algorithm>
     6 #include<cmath>
     7 #include<map>
     8 #include<vector>
     9 #define ll long long
    10 using namespace std;
    11 inline int read()
    12 {
    13     int x=0,f=1;
    14     char ch=getchar();
    15     while(ch<'0'||ch>'9')
    16     {
    17         if(ch=='-')f=-1;
    18         ch=getchar();
    19     }
    20     while(ch>='0'&&ch<='9')
    21     {
    22         x=x*10+ch-'0';
    23         ch=getchar();
    24     }
    25     return x*f;
    26 }
    27 string s;
    28 int n,ans;
    29 int v[50005],a[50005];
    30 int best[50005];
    31 int main()
    32 {
    33     int k;
    34     while(cin>>k)
    35     {
    36         cin>>s;
    37         int sum0=1;
    38         int sum1=0;
    39         int Max=-1;
    40         char ans=s[0];
    41         for(int i=1; i<s.length(); i++)
    42         {
    43             if(s[i-1]==s[i])
    44             {
    45                 sum0++;
    46                 Max=max(Max,sum0);
    47             }
    48             else
    49             {
    50                 ans=s[i];
    51                 sum0=1;
    52             }
    53         }
    54        // cout<<max(Max,sum0)<<endl;
    55         if(k>max(Max,sum0))
    56         {
    57             cout<<"Win"<<endl;
    58         }
    59         else
    60         {
    61             cout<<"Lose"<<endl;
    62         }
    63     }
    64 
    65     return 0;
    66 }

    喵哈哈村的狼人杀大战(2)

    喵哈哈村最近热衷于玩一个叫做狼人杀的游戏!

    星星同学今天她抽到的是狼的身份,按照她的一贯玩法,她喜欢无情的屠杀掉所有的神。

    她现在已经很清楚了场上的预言家,女巫,猎人是谁。但是她唯一不知道的就是白痴这张神牌在谁的身上。于是她诈一诈她的下家——天行廖。

    星星同学的逻辑是这样的:她可以考一道题给天行廖,如果天行廖能够答上来的话,那么天行廖肯定不是白痴,因为白痴是答不上题的。

    这道题是这样的:

    如果一个数只包含4和7的话,那么这个串就是幸运数,比如4777,774就是幸运数,而467就不是幸运数。

    如果一个幸运数中包含的4和7的数量相同的话,那么这个数就是超级幸运数,比如4747就是超级幸运串,447就不是。

    现在给你一个n,你需要找到一个最小的超级幸运数,并且这个超级幸运数大于等于n。

    本题包含若干组测试数据。
    第一行一个整数n。

    满足 1<=n<=10^9

    输出最小的超级幸运数,。

     复制
    47
    4500
    47
    4747
    解法:暴力搜索,当然还是害怕超int,所以一次性打表出来查询
     1 #include<stdio.h>
     2 //#include<bits/stdc++.h>
     3 #include<string.h>
     4 #include<iostream>
     5 #include<math.h>
     6 #include<sstream>
     7 #include<set>
     8 #include<queue>
     9 #include<map>
    10 #include<vector>
    11 #include<algorithm>
    12 #include<limits.h>
    13 #define inf 0x7fffffff
    14 #define INFL 0x7fffffffffffffff
    15 #define lson l,m,rt<<1
    16 #define rson m+1,r,rt<<1|1
    17 #define LL long long
    18 #define ULL unsigned long long
    19 using namespace std;
    20 LL q[10000000];
    21 int cot;
    22 void dfs(LL x,LL y,LL sum)
    23 {
    24    if(x==y&&x)
    25    {
    26        q[++cot] = sum;
    27    }
    28    if(sum>=1e18)
    29    {
    30        return ;
    31    }
    32    else
    33    {
    34        dfs(x+1,y,sum*10+4);
    35        dfs(x,y+1,sum*10+7);
    36    }
    37 }
    38 int main()
    39 {
    40     dfs(0,0,0);
    41     sort(q+1,q+cot+1);
    42     int t;
    43     LL n;
    44    // cin>>t;
    45     while(cin>>n)
    46     {
    47 
    48         int x = lower_bound(q+1,q+cot+1,n) - q ;
    49         if(n > q[cot])
    50           cout<<"44444444447777777777"<<endl;
    51         else
    52           cout<<q[x]<<endl;
    53     }
    54     return 0;
    55 }

    喵哈哈村的狼人杀大战(3)

    喵哈哈村最近热衷于玩一个叫做狼人杀的游戏!

    昊昊同学今天他抽到的是平民的身份,按照他的一贯玩法,他喜欢挂机,就什么事儿都不干。

    于是他早早的就被推出去了。

    现在他很无聊,于是他想了一道题来给自己打发时间。

    定义f(x)=abs(ax^3+bx^2+cx+d),abs为绝对值符号。

    给你a,b,c,d,l,r。

    他想知道[l,r]这个范围内,f(x)的最大值。

    题目包含多组测试数据。
    第一行六个整数,a,b,c,d,l,r。
    满足-10<=a,b,c,d<=10,-100<=l<=r<=100

    对于每组测试诗句,输出最大值,需要保留两位小数。

     复制
    1 2 3 4 5 6
    310.00
    解法:数据量很小,遍历一次就好了
     1 #include<stdio.h>
     2 //#include<bits/stdc++.h>
     3 #include<string.h>
     4 #include<iostream>
     5 #include<math.h>
     6 #include<sstream>
     7 #include<set>
     8 #include<queue>
     9 #include<map>
    10 #include<vector>
    11 #include<algorithm>
    12 #include<limits.h>
    13 #define inf 0x7fffffff
    14 #define INFL 0x7fffffffffffffff
    15 #define lson l,m,rt<<1
    16 #define rson m+1,r,rt<<1|1
    17 #define LL long long
    18 #define ULL unsigned long long
    19 using namespace std;
    20 const int M = 3000500;
    21 int p[400010], pNum;
    22 bool f[M];
    23 void Prime()
    24 {
    25     int i, j;
    26     for(i = 2; i < M; i++) {
    27         if(!f[i]) { p[pNum++] = i; }
    28         for(j = 0; j < pNum && p[j] * i < M; j++ ) {
    29             f[p[j]*i] = 1;
    30             if(!(i%p[j]))
    31                 break;
    32         }
    33     }
    34 }
    35 int main()
    36 {
    37   //  Prime();
    38   //  cout<<p[0]<<endl;
    39 
    40     double a,b,c,d,l,r;
    41     while(cin>>a>>b>>c>>d>>l>>r)
    42     {
    43         double Max=-1.0;
    44         for(int i=l;i<=r;i++)
    45         {
    46             Max=max(abs(i*i*i*a+b*i*i+c*i+d),Max);
    47         }
    48         printf("%.2f
    ",Max);
    49     }
    50 
    51     return 0;
    52 }

    喵哈哈村的狼人杀大战(4)

    喵哈哈村最近热衷于玩一个叫做狼人杀的游戏!

    徐元帅同学今天他抽到的是女巫的身份,按照他的一贯玩法,他喜欢一开始就把自己毒死。

    于是他早早的就出去了。

    他很无聊,于是出了一道题给自己玩。

    他从怀里面掏出了一个数字n。

    他想知道有多少组三元组(a,b,c),满足a<=b<=c,且a,b,c都是素数,而且a+b+c=n。

    本题包含若干组测试数据。
    每组测试数据只含有一个整数n。
    1<=n<=10000

    输出三元组的数量。

     复制
    3
    9
    0
    2
    解法:先选出素数,然后化成a+b=n-c进行查询,不过要满足a<=b<=c,还需要保存比较一下
     1 #include<stdio.h>
     2 //#include<bits/stdc++.h>
     3 #include<string.h>
     4 #include<iostream>
     5 #include<math.h>
     6 #include<sstream>
     7 #include<set>
     8 #include<queue>
     9 #include<map>
    10 #include<vector>
    11 #include<algorithm>
    12 #include<limits.h>
    13 #define inf 0x7fffffff
    14 #define INFL 0x7fffffffffffffff
    15 #define lson l,m,rt<<1
    16 #define rson m+1,r,rt<<1|1
    17 #define LL long long
    18 #define ULL unsigned long long
    19 using namespace std;
    20 const int M = 200000;
    21 int p[M], pNum;
    22 bool f[M];
    23 int x[M];
    24 int y[M];
    25 void Prime()
    26 {
    27     int i, j;
    28     for(i = 2; i < M; i++) {
    29         if(!f[i]) { p[pNum++] = i; }
    30         for(j = 0; j < pNum && p[j] * i < M; j++ ) {
    31             f[p[j]*i] = 1;
    32             if(!(i%p[j]))
    33                 break;
    34         }
    35     }
    36 }
    37 int main()
    38 {
    39     Prime();
    40     int n;
    41     while(cin>>n)
    42     {
    43         //n=o;
    44         memset(x,0,sizeof(x));
    45         memset(y,0,sizeof(y));
    46         int num=0;
    47         for(int i=0;i<=2000;i++)
    48         {
    49             if(n>=p[i])
    50             {
    51                 x[n-p[i]]++;
    52                 y[n-p[i]]=p[i];
    53             }
    54             else
    55             {
    56                 break;
    57             }
    58         }
    59         for(int i=0;i<=2000;i++)
    60         {
    61             for(int j=i;j<=2000;j++)
    62             {
    63                 int ans=p[i]+p[j];
    64                 if(p[j]<=y[ans])
    65                 {
    66                     num+=x[ans];
    67                 }
    68                 else if(ans>n)
    69                 {
    70                     break;
    71                 }
    72             }
    73         }
    74         cout<<num<<endl;
    75     }
    76     return 0;
    77 }
  • 相关阅读:
    并发队列、线程池、锁
    JVM、垃圾收集器
    Socket网络编程
    Netty入门
    SpringCloud微服务负载均衡与网关
    Android监听耳机按键事件
    利用本地不同磁盘文件夹作为git远程仓库进行灾备
    chrome浏览器form中button每点击一次,form就会提交一次
    [企业路由器] 一对一NAT映射设置指导
    win7镜像自带IE9的卸载
  • 原文地址:https://www.cnblogs.com/yinghualuowu/p/6516823.html
Copyright © 2011-2022 走看看