• Codeforces Round #191 (Div. 2)


    好久没写过CF的博客了,最近忙着考试,各种不顺,没想到这次CF却是很顺利。

    A题暴力,开始看错题了。。然后发现只需要转一次。。。B题也是暴力去构造的,C题一个组合问题,话说这次终于在比赛里把组合题给A了,这题不难,但也不是很水,当时就是觉得应该是这样,感觉题意也不是很清楚,按自己的理解过了样例,应该就没问题了,用到以前用过的等比数列求和取余的模版。D题也是构造问题,只要看出一个连通块,只要一个100塔其他都是200塔就行了。DIV2里,第一次做了4个题。。

    rating涨了181。。如果我之前的rating 是蓝色,而不是绿色的话,这次就可以变紫了把。。。以后还有机会,慢慢来把。

    A题

     1 #include <cstdio>
     2 #include <string>
     3 #include <algorithm>
     4 #include <cstring>
     5 #include <map>
     6 #include <vector>
     7 using namespace std;
     8 int p[1001],sum[1001];
     9 int main()
    10 {
    11     int n,i,ans,j;
    12     scanf("%d",&n);
    13     for(i = 1;i <= n;i ++)
    14     {
    15         scanf("%d",&p[i]);
    16         sum[i] = sum[i-1] + p[i];
    17     }
    18     ans = 0;
    19     for(i = 1;i <= n;i ++)
    20     {
    21         for(j = i;j <= n;j ++)
    22         {
    23             ans = max(ans,sum[i-1]+sum[n]-sum[j]+(j-i+1-(sum[j]-sum[i-1])));
    24         }
    25     }
    26     printf("%d
    ",ans);
    27     return 0;
    28 }

    B题

     1 #include <cstdio>
     2 #include <string>
     3 #include <algorithm>
     4 #include <cstring>
     5 #include <map>
     6 #include <vector>
     7 #include <cstdlib>
     8 #include <time.h>
     9 using namespace std;
    10 #define N 3000000
    11 int o[N+10];
    12 int main()
    13 {
    14     int n,j,num,i;
    15     scanf("%d",&n);
    16     for(i = 1,num = 2;i <= n;i ++)
    17     {
    18         while(o[num])
    19         num ++;
    20         if(i == 1)
    21         printf("%d",num);
    22         else
    23         printf(" %d",num);
    24         for(j = num;j <= N;j += num)
    25         {
    26             o[j] = 1;
    27         }
    28         num ++;
    29     }
    30     printf("
    ");
    31     return 0;
    32 }

    C题

     1 #include <cstdio>
     2 #include <string>
     3 #include <algorithm>
     4 #include <cstring>
     5 #include <map>
     6 #include <vector>
     7 #include <cstdlib>
     8 #include <time.h>
     9 using namespace std;
    10 #define N 3000000
    11 #define MOD 1000000007
    12 #define LL __int64
    13 char str[200001];
    14 LL bin[200001];
    15 LL fastmod(LL p,LL k)
    16 {
    17     LL sum = 1,tmp = p;
    18     while (k)
    19     {
    20         if (k%2 == 1) sum = (sum*tmp)%MOD;
    21         tmp = (tmp*tmp)%MOD;
    22         k = k/2;
    23     }
    24     return sum;
    25 }
    26 LL getnum(LL p,LL k)
    27 {
    28     if (k <= 0) return 1;
    29     if (k%2 == 0)
    30         return ((getnum(p,k/2 - 1)%MOD)*((1 + fastmod(p,k/2 + 1))%MOD) + fastmod(p,k/2)%MOD)%MOD;
    31     else
    32         return ((getnum(p,(k + 1)/2 - 1)%MOD)*((1 + fastmod(p,(k + 1)/2))%MOD))%MOD;
    33 }
    34 int main()
    35 {
    36     int n,i;
    37     LL ans = 0,temp,k;
    38     scanf("%s%I64d",str,&k);
    39     n = strlen(str);
    40     bin[0] = 1;
    41     for(i = 1;i <= n;i ++)
    42     {
    43         bin[i] = (bin[i-1]*2)%MOD;
    44     }
    45     temp = getnum(bin[n],k-1);
    46     for(i = n-1;i >= 0;i --)
    47     {
    48         if(str[i] == '0'||str[i] == '5')
    49         {
    50             ans = (ans + bin[i]*temp)%MOD;
    51         }
    52     }
    53     printf("%I64d
    ",ans);
    54     return 0;
    55 }

    D题

     1 #include <cstdio>
     2 #include <string>
     3 #include <algorithm>
     4 #include <cstring>
     5 #include <map>
     6 #include <vector>
     7 #include <cstdlib>
     8 #include <time.h>
     9 using namespace std;
    10 char p[501][501];
    11 int o[501][501];
    12 int a[4] = {0,0,1,-1};
    13 int b[4] = {1,-1,0,0};
    14 int q1[5000001],q2[5000001],q3[5000001];
    15 int z,n,m,num = 0;
    16 void dfs(int x,int y)
    17 {
    18     int i,f = 0;
    19     if(z)
    20     {
    21         z = 0;
    22         f = 1;
    23     }
    24     else
    25     {
    26         q1[num] = 1;
    27         q2[num] = x+1;
    28         q3[num] = y+1;
    29         num ++;
    30         //printf("B %d %d
    ",x+1,y+1);
    31     }
    32     for(i = 0; i < 4; i ++)
    33     {
    34         if(x+a[i] >= 0&&x+a[i] < n&&y+b[i] >= 0&&y+b[i] < m&&!o[x+a[i]][y+b[i]]&&p[x+a[i]][y+b[i]] == '.')
    35         {
    36             o[x+a[i]][y+b[i]] = 1;
    37             dfs(x+a[i],y+b[i]);
    38         }
    39     }
    40     if(f == 0)
    41     {
    42         q1[num] = 2;
    43         q2[num] = x+1;
    44         q3[num] = y+1;
    45         num ++;
    46         //printf("D %d %d
    ",x+1,y+1);
    47         q1[num] = 3;
    48         q2[num] = x+1;
    49         q3[num] = y+1;
    50         num ++;
    51         //printf("R %d %d
    ",x+1,y+1);
    52     }
    53 }
    54 int main()
    55 {
    56     int i,j;
    57     scanf("%d%d",&n,&m);
    58     for(i = 0; i < n; i ++)
    59         scanf("%s",p[i]);
    60     for(i = 0; i < n; i ++)
    61     {
    62         for(j = 0; j < m; j ++)
    63         {
    64             if(p[i][j] == '.'&&!o[i][j])
    65             {
    66                 o[i][j] = 1;
    67                 q1[num] = 1;
    68                 q2[num] = i+1;
    69                 q3[num] = j+1;
    70                 num ++;
    71                 //printf("B %d %d
    ",i+1,j+1);
    72                 z = 1;
    73                 dfs(i,j);
    74             }
    75         }
    76     }
    77     printf("%d
    ",num);
    78     for(i = 0; i < num; i ++)
    79     {
    80         if(q1[i] == 1)
    81             printf("B");
    82         else if(q1[i] == 2)
    83             printf("D");
    84         else
    85             printf("R");
    86         printf(" %d %d
    ",q2[i],q3[i]);
    87     }
    88     return 0;
    89 }
  • 相关阅读:
    java按照指定格式输出系统时间使用SimpleDateFormat方法
    java按照指定格式输出系统时间
    java打印系统时间
    java字符串截取指定下标位置的字符串
    java根据输入的字符串和字节数来截取,输出对应字节数的字符串
    java字符串根据正则表达式让单词首字母大写
    java根据#号截取字符串,使用Pattern的方法
    java数组冒泡排序
    Prometheus+Grafana监控平台搭建
    JMeter-setUp线程组实现用户先登录(跨线程中beanshell设置全局变量)
  • 原文地址:https://www.cnblogs.com/naix-x/p/3173079.html
Copyright © 2020-2023  润新知