zoukankan      html  css  js  c++  java
  • Codeforces 301A. Yaroslav

    Codeforces Tutorial

    A. Yaroslav and Sequence

    Problem Analysis

    1、当n为奇数的时候,变换n个可以一次增加或减少1个负数,这样可以直到有n个负数,然后全变为整数ok
    2、当n为偶数的时候,变换n个可以一次增加或减少2个负数,所以当有偶数个负数时都可以变为正数,当有奇数个负数时,最大和为(绝对值最小的那个为负数,其余的都为正数)。

    用例子解释一下上面的内容。

    • n为奇数
      不妨设n=5,有序列-1,-1,-1,-1,-1,-1,-1,-1,-1。可以发现,始终可以做到使得负数的个数小于n/2。序列变为1,1,1,1,1,-1,-1,-1,-1。然后选取n/2+1个正数,n/2个负数,就可以增加一个负数。上例就是是选择312-1。序列变为1,1,1,1,-1,-1,-1,-1,-1。然后一步变为全正。
    • n为偶数
      思路与奇数一样,不同的是对n的划分,n只能划分为n/2-1n/2+1

    Acepted Code

    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<string>
    #include<vector>
    #include<cmath>
    #include<map>
    #include<istream>
    #include<cassert>
    #include<set>
    #define DEBUG(x) cout<<#x<<" = "<<x<<endl
    #define DEBUG2(x,y) cout<<#x<<" = "<<x<<" , "
    <<#y<<" = "<<y<<endl
    using namespace std;
    typedef long long ll;
    const int MAXN=300;
    int n;
    int a[MAXN];
    int main()
    {
    //    freopen("in.txt","r",stdin);
        scanf("%d",&n);
        for(int ii=0;ii<2*n-1 ;ii++ ){
            scanf("%d",&a[ii]);
        }
        int ans=0;
        if(n%2){
            for(int ii=0;ii<2*n-1 ;ii++ ){
                ans+=abs(a[ii]);
            }
        }
        else {
            int cnt=0;
            int absmin=1e9;
            for(int ii=0;ii<2*n-1 ;ii++ ){
                if(a[ii]<0)cnt++;
                absmin=min(absmin,abs(a[ii]));
                ans+=abs(a[ii]);
            }
            if(cnt%2)ans-=2*absmin;
        }
        printf("%d
    ",ans);
    }
    

    Wrong Answer Cases

    What I Learn

    • 奇偶性遇到的比较多

    Reference

    https://blog.csdn.net/xh_reventon/article/details/8892546

  • 相关阅读:
    mac安装搜狗
    idea的阿里代码规范检查
    记录windows10闪屏
    github访问不了
    线程安全问题例子
    简单负载均衡工具类
    git将远程分支回归到指定版本
    minio的使用
    php禁止浏览器使用缓存页面的方法
    百度seo
  • 原文地址:https://www.cnblogs.com/MalcolmMeng/p/10945531.html
Copyright © 2011-2022 走看看