[HDOJ5744]Keep On Movin(水题)

题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5744

题意:给你n个字符的数量,要求组合成多个回文串,问如何组合使得这个回文串集合里最短的那一条回文串最长。

分情况讨论,所给的n个字符数量都是偶数或仅有一个奇数,那么这个串可以是全部字符组合成的,长度为∑ai。

如果有两个以上的奇数量(k)字符,那么最好的方法就是平均分成k个回文串。把这些奇数量的字符数量-1,则剩下的都是偶数的了。之后平均分配给所有串,每个串的长度为(sum/2)/odd*2+1

 1 /*
 2 ━━━━━┒ギリギリ♂ eye!
 3 ┓┏┓┏┓┃キリキリ♂ mind!
 4 ┛┗┛┗┛┃\○/
 5 ┓┏┓┏┓┃ /
 6 ┛┗┛┗┛┃ノ)
 7 ┓┏┓┏┓┃
 8 ┛┗┛┗┛┃
 9 ┓┏┓┏┓┃
10 ┛┗┛┗┛┃
11 ┓┏┓┏┓┃
12 ┛┗┛┗┛┃
13 ┓┏┓┏┓┃
14 ┃┃┃┃┃┃
15 ┻┻┻┻┻┻
16 */
17 #include <algorithm>
18 #include <iostream>
19 #include <iomanip>
20 #include <cstring>
21 #include <climits>
22 #include <complex>
23 #include <fstream>
24 #include <cassert>
25 #include <cstdio>
26 #include <bitset>
27 #include <vector>
28 #include <deque>
29 #include <queue>
30 #include <stack>
31 #include <ctime>
32 #include <set>
33 #include <map>
34 #include <cmath>
35 using namespace std;
36 #define fr first
37 #define sc second
38 #define cl clear
39 #define BUG puts("here!!!")
40 #define W(a) while(a--)
41 #define pb(a) push_back(a)
42 #define Rint(a) scanf("%d", &a)
43 #define Rs(a) scanf("%s", a)
44 #define Cin(a) cin >> a
45 #define FRead() freopen("in", "r", stdin)
46 #define FWrite() freopen("out", "w", stdout)
47 #define Rep(i, len) for(int i = 0; i < (len); i++)
48 #define For(i, a, len) for(int i = (a); i < (len); i++)
49 #define Cls(a) memset((a), 0, sizeof(a))
50 #define Clr(a, x) memset((a), (x), sizeof(a))
51 #define Full(a) memset((a), 0x7f7f7f, sizeof(a))
52 #define lrt rt << 1
53 #define rrt rt << 1 | 1
54 #define pi 3.14159265359
55 #define RT return
56 #define lowbit(x) x & (-x)
57 #define onecnt(x) __builtin_popcount(x)
58 typedef long long LL;
59 typedef long double LD;
60 typedef unsigned long long ULL;
61 typedef pair<int, int> pii;
62 typedef pair<string, int> psi;
63 typedef pair<LL, LL> pll;
64 typedef map<string, int> msi;
65 typedef vector<int> vi;
66 typedef vector<LL> vl;
67 typedef vector<vl> vvl;
68 typedef vector<bool> vb;
69
70 const int maxn = 100100;
71 int n;
72 int a[maxn];
73 int s1, s2, odd;
74
75 int main() {
76     // FRead();
77     int T;
78     Rint(T);
79     W(T) {
80         s1 = s2 = odd = 0;
81         Rint(n);
82         Rep(i, n) {
83             Rint(a[i]);
84             if(a[i] & 1) {
85                 odd++;
86                 s2 += a[i] - 1;
87             }
88             else s2 += a[i];
89             s1 += a[i];
90         }
91         if(odd < 2) {
92             printf("%d\n", s1);
93             continue;
94         }
95         printf("%d\n", s2/2/odd*2+1);
96     }
97     RT 0;
98 }
时间: 2024-10-05 09:56:47

[HDOJ5744]Keep On Movin(水题)的相关文章

2015南阳CCPC L - Huatuo&#39;s Medicine 水题

L - Huatuo's Medicine Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 无 Description Huatuo was a famous doctor. He use identical bottles to carry the medicine. There are different types of medicine. Huatuo put medicines into the bottles and chain these b

sdut 2841 Bit Problem (水题)

题目 贴这个题是因为看题解有更简单的方法, 我做的时候是直接算的, 也很简单. 贴一下题解吧: 如果一个整数不等于 0,那么该整数的二进制表示中至少有一位是 1. 这个题结果可以直接输出 x - (x&(x-1)); 因为x-1 之后二进制下,就是最右边的1变成了0, 最右边的1的 右边所有的0变成了1, 不影响最左边. 我的代码: 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4

sdut 2413:n a^o7 !(第三届山东省省赛原题,水题,字符串处理)

n a^o7 ! Time Limit: 1000MS Memory limit: 65536K 题目描述 All brave and intelligent fighters, next you will step into a distinctive battleground which is full of sweet and happiness. If you want to win the battle, you must do warm-up according to my inst

杭电(hdu)2053 Switch Game 水题

Switch Game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 13113    Accepted Submission(s): 7970 Problem Description There are many lamps in a line. All of them are off at first. A series of o

4.7-4.9补题+水题+高维前缀和

题目链接:51nod 1718 Cos的多项式  [数学] 题解: 2cosx=2cosx 2cos2x=(2cosx)^2-2 2cos3x=(2cosx)^3-3*(2cosx) 数归证明2cos(nx)能表示成关于2cosx的多项式,设为f(n) f(1)=x,f(2)=x^2-2(其中的x就是2cosx) 假设n=1~k时均成立(k>=3) 当n=k+1时 由cos((k+1)x)=cos(kx)cos(x)-sin(kx)sin(x) cos((k-1)x)=cos(kx)cos(x)

历年NOIP水题泛做

快noip了就乱做一下历年的noip题目咯.. noip2014 飞扬的小鸟 其实这道题并不是很难,但是就有点难搞 听说男神错了一个小时.. 就是$f_{i,j}$表示在第$i$个位置高度为$j$的时候最小点击次数 递推的话对于上升的情况只做一次,后面几次在后面再做.. #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> using namespace st

[ZPG TEST 114] 阿狸的英文名【水题】

1.      阿狸的英文名 阿狸最近想起一个英文名,于是他在网上查了很多个名字.他发现一些名字可以由两个不同的名字各取一部分得来,例如John(约翰)的前缀 "John"和Robinson(鲁滨逊)的后缀 "son" 连在一起就是Johnson. 现在他找到了两个喜欢的名字(名字可看作字符串),用A和B表示,他想知道取A的一个非空前缀和B的一个非空后缀,连接在一起能组成多少不同的字符串. 输入格式 输入两行,分别表示字符串A和B:字符串只包含小写英文字母. 输出格

G - Brain Network (easy)(并查集水题)

G - Brain Network (easy) Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u CodeForces 690C1 Description One particularly well-known fact about zombies is that they move and think terribly slowly. While we still don't know

UVaLive 6591 &amp;&amp; Gym 100299L Bus (水题)

题意:略. 析:不解释,水题. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #include <cmath> #include <iostream> #include <cstring> #include <set>

codeforces 710A A. King Moves(水题)

题目链接: A. King Moves 题意: 给出king的位置,问有几个可移动的位置; 思路: 水题,没有思路; AC代码: #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <bits/stdc++.h> #include <stack> #include &l