zoukankan      html  css  js  c++  java
  • HDU5744:Keep On Movin(字符串)

    题意:

    给出t组测试数据,每组给出正整数n表示有n种字符,接下来给出n个数表示该种字符的数目,操作一下,使得可以构造的最小回文串字符数目最大且输出。


    分析:

    如果每个字符出现次数都是偶数, 那么答案显然就是所有数的和. 对于奇数部分, 显然需要把其他字符均匀分配给这写奇数字符. 随便计算下就好了。

    即统计所有的字符的数目,奇数则-1再加上去,并且计数器count++,完成之后就输出数目,公式为字符数目=(sum/2)/count*2+1,其实就是平均了一下。


    代码:

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int main(){
        int t;
        for(scanf("%d",&t);t--;){
            int sum1,sum2,n,num;
            sum1=sum2=0;scanf("%d",&n);    
            for(int i=0;i<n;i++){scanf("%d",&num);
            if(num&1) sum1++,sum2+=num-1; else sum2+=num;}
            printf("%d
    ",(!sum1)?(sum2):((sum2/2)/sum1*2+1)); 
        }
    } 
  • 相关阅读:
    Oracle分析函数
    oracle row_number的使用
    lru缓存测试类
    注解测试类
    lucene测试类
    SVN中检出(check out) 跟导出(export) 的区别
    Lucene原理与代码分析
    Lucene入门基础教程
    linux的less命令
    day4 大纲笔记
  • 原文地址:https://www.cnblogs.com/chendl111/p/5693586.html
Copyright © 2011-2022 走看看