UVALive 5111 Soccer Teams (动态规划)
题意:给指定数量的数字“1”,“2”,“3”……,“9”。用所有这些数字加上任意个0组成一个数,要求数能被11整除,且数的位数尽量小。
能被11整除的数有一个特点,奇数位数字之和与偶数位之和的差为11的倍数。
所以想到把所有数字分成两部分,即奇数位部分和偶数位部分,两部分的差相0即能被11整除(MOD 11)。
所求可以化为,其中一部分%11的余数为所有数字之和%11的余数的一半。
dp[k][r] := 能否找到 任意k个数之和 %11 == R
#include<bits/stdc++.h>
using namespace std; int dig[12];
bool dp[105][12]; int main()
{
int t;
scanf("%d", &t);
while (t--) {
int n = 0; //数字个数
int sum = 0; //所有数字之和
memset(dp, 0, sizeof dp);
for (int i = 1; i <= 9; ++i) {
scanf("%d", dig + i);
n += dig[i];
sum += dig[i] * i;
}
int m = sum % 11;
if (m & 1) m += 11;
m /= 2;
dp[0][0] = true; for (int i = 1; i <= 9; ++i) {
for (int j = 0; j < dig[i]; ++j) {
for (int k = n; k >= 1; --k) {
//for (int k = 1; k <= n; ++k) {
for (int r = 0; r < 11; ++r) {
dp[k][r] |= dp[k - 1][(r - i + 11) % 11];
}
}
}
}
int flag = 1;
for (int i = n / 2; i >= 0; --i) {
if (dp[i][m]) {
printf("%d\n", n + max(n - i - 1 - i, 0));
flag = 0;
break;
}
}
if (flag) {
printf("-1\n");
}
}
return 0;
}
UVALive 5111 Soccer Teams (动态规划)的更多相关文章
- Codeforces Round #598 (Div. 3)- E. Yet Another Division Into Teams - 动态规划
Codeforces Round #598 (Div. 3)- E. Yet Another Division Into Teams - 动态规划 [Problem Description] 给你\( ...
- UVALive 6486 Skyscrapers 简单动态规划
题意: 有N个格子排成一排,在每个格子里填上1到N的数(每个只能填一次),分别代表每个格子的高度.现在给你两个数left和right,分别表示从左往右看,和从右往左看,能看到的格子数.问有多少种情况. ...
- PHP的SPL标准库里面的堆(SplHeap)怎么使用
PHP的SPL标准库里面的堆(SplHeap)怎么使用 一.总结 1.因为SplHeap是抽象类,所以要先继承,实现里面的抽象方法compare后,才能new对象使用. 二.PHP的SPL标准库里面的 ...
- KDD2015,Accepted Papers
Accepted Papers by Session Research Session RT01: Social and Graphs 1Tuesday 10:20 am–12:00 pm | Lev ...
- POJ 3342 Party at Hali-Bula / HDU 2412 Party at Hali-Bula / UVAlive 3794 Party at Hali-Bula / UVA 1220 Party at Hali-Bula(树型动态规划)
POJ 3342 Party at Hali-Bula / HDU 2412 Party at Hali-Bula / UVAlive 3794 Party at Hali-Bula / UVA 12 ...
- 【CF1133E】K Balanced Teams(动态规划,单调队列)
[CF1133E]K Balanced Teams(动态规划,单调队列) 题面 CF 让你把一堆数选一些出来分成不超过\(K\)组,每一组里面的最大值和最小值之差不超过\(5\),求最多有多少个人元素 ...
- UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There Was One / POJ 3517 And Then There Was One / Aizu 1275 And Then There Was One (动态规划,思维题)
UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There W ...
- 【暑假】[深入动态规划]UVAlive 4794 Sharing Chocolate
UVAlive 4794 Sharing Chocolate 题目: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=12055 ...
- 【暑假】[深入动态规划]UVAlive 3983 Robotruck
UVAlive 3983 Robotruck 题目: Robotruck Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format ...
随机推荐
- 判断触摸的点在那个 View上
UIView *touched = [self.view hitTest:pt withEvent:event]; Uiview *touchView = [pt view];
- Git权威指南 读笔(3)
第九章 恢复进度: $ git stash list 显示存储的工作进度列表. $ git stash 保存当前的工作进度,分别对暂存区和工作区的状态进行保存. $ git stash pop [-- ...
- Collection和Collections的区别
Collection 是集合类的上级接口,继承它的接口主要有set和list.Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索,排序,线程安全化等操作.
- JSP页面之${fn:}内置函数
函数列表: 函数名 函数说明 使用举例 fn:contains 判断字符串是否包含另外一个字符串 <c:if test="${fn:contains(name, searchStrin ...
- java.io.IOException: Cannot run program "bash": error=12, Cannot allocate memory
java.io.IOException: Cannot run program , Cannot allocate memory 云服务器运行nutch报出的异常: 解决方案: http://daim ...
- Decision Boundaries for Deep Learning and other Machine Learning classifiers
Decision Boundaries for Deep Learning and other Machine Learning classifiers H2O, one of the leading ...
- Ubuntu14.04下如何开启Mysql远程访问
近来开发项目的需要,需要开启服务器下的Mysql远程访问权限(方法有很多),学习了一下,这里只演示个人觉得比较简单的一种方法. 对用户授权方法: 1. 在目录/etc/mysql下找到my.cnf,用 ...
- *[codility]GenomicRangeQuery
http://codility.com/demo/take-sample-test/genomicrangequery 这题有点意思.一开始以为是RMQ或者线段树,但这样要O(n*logn).考虑到只 ...
- jacob访问ocx控件方法和遇到的问题
最近在进行摄像机的二次开发,摄像机厂商提供了使用C++开发的ocx控件:所以尝试使用jacob来进行访问. 操作步骤如下: 1, 从官网(http://sourceforge.net/projects ...
- MySQL 5.6数据库配置主从同步
win7环境下mysql主从搭建 我下载的是压缩包,免安装的那种 1.简单安装 解压后把my-default.ini复制一份改为my.ini默认mysql会找这个文件,首先从system32下找,然后 ...