zoukankan      html  css  js  c++  java
  • Codeforces Round #277 (Div. 2) 解题报告

    题目地址http://codeforces.com/contest/486

    A题.Calculating Function

    奇偶性判断,简单推导公式。

     1 #include<cstdio>
     2 #include<iostream>
     3 
     4 using namespace std;
     5 
     6 int main()
     7 {
     8     long long  n;
     9    cin>>n;
    10     if(n%2==0) {
    11         cout<<(-1)*((n-2)/2+1)+n<<endl;
    12     } else
    13         cout<<((n-1)/2+1)*(-1)<<endl;
    14     
    15     return 0;
    16 }

    B题.OR in Matrix

    把必须为0的先填上,然后判断1的是否符合条件。若符合,让剩下的全为1输出,不符合就输出no。

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<string.h>
     4 #include<stdlib.h>
     5 
     6 using namespace std;
     7 
     8 int n,m,
     9      a[110][110],b[110][110];
    10 
    11 void change(int x,int y)
    12 {
    13     for(int i=1;i<=n;i++) {
    14         a[x][i]=0;
    15     }
    16     for(int j=1;j<=m;j++) {
    17         a[j][y]=0;
    18     }
    19        
    20 }
    21 
    22 int check(int x,int y)
    23 {
    24     for(int i=1;i<=n;i++) {
    25      if(a[x][i]) return 1;
    26     }
    27     
    28     for(int i=1;i<=m;i++) {
    29         if(a[i][y]) return 1;
    30     }
    31     
    32     return 0;
    33 }
    34 
    35 int main()
    36 {
    37         memset(a,-1,sizeof(a));
    38         
    39         scanf("%d%d",&m,&n);
    40         for(int i=1;i<=m;i++)
    41             for(int j=1;j<=n;j++) {
    42                 scanf("%d",&b[i][j]);
    43                 if(!b[i][j]) {
    44                     change(i,j);
    45                 }
    46             }
    47         
    48         for(int i=1;i<=m;i++)
    49             for(int j=1;j<=n;j++) {
    50                 if(b[i][j]) {
    51                     if(check(i,j)) continue;
    52                     printf("NO
    ");
    53                     exit(0);
    54                 }
    55             }
    56         
    57         printf("YES
    ");
    58         for(int i=1;i<=m;i++){
    59             for(int j=1;j<=n;j++){
    60             if(a[i][j]<0) printf("%d ",a[i][j]+2);
    61                 else printf("%d ",a[i][j]);
    62             }
    63             printf("
    ");
    64         }
    65         
    66     return 0;
    67 }

    C题.Palindrome Transformation

    转化为回文串需要改动的最小步骤数。

    只在P所在的那半侧改变。然后求出较小的移动的步数。累加。

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<string.h>
     4 #include<algorithm>
     5 
     6 const int N=1e5+3511;
     7 using namespace std;
     8 
     9 int main()
    10 {
    11     int i,n,p,len,ret=0,l,r;
    12     char a[N];
    13     
    14     scanf("%d%d",&n,&p);
    15     scanf("%s",a);
    16     
    17     p--;
    18     if(p>=n/2) p=n-1-p; 
    19     
    20     l=n;r=-1;
    21     for(int i=0;i<n/2;i++) {
    22         if(a[i]!=a[n-1-i]) {
    23             ret+=min(abs(a[i]-a[n-1-i]),26-abs(a[i]-a[n-1-i])); 
    24             l=min(l,i);
    25             r=max(r,i);
    26         }    
    27     } 
    28    
    29     if(l==n) {
    30         printf("0
    ");
    31         return 0;
    32     }
    33     
    34     ret+=(r-l)+min(abs(l-p),abs(r-p));
    35        
    36     printf("%d
    ",ret);
    37         
    38     return 0;
    39 }
  • 相关阅读:
    fluentValidation集成到autofac
    javascript中的this
    Android环境配置Sencha Touch
    PHP上传图片如何防止图片木马?
    mysql 修改字段长度
    mysql 截取字符
    php 获取文件后缀名
    mysql 导入导出数据库、数据表
    Nginx下修改php.ini后重新加载配置文件命令
    ubuntu 12.04 LTS(64位)安装apache2
  • 原文地址:https://www.cnblogs.com/sxiszero/p/4135968.html
Copyright © 2011-2022 走看看