poj1014:母函数+优化
题目大意:
有1~6六种宝石,价格分别为1~6 。。给定每种宝石的个数,问能否平分给两个人
分析:
一看显然是个多重背包问题,也可以用母函数做
不过母函数的复杂度是n*v*k,第一次tle了。。
后来发现一种优化方式
当个数大于 6的时候直接把个数设为 5(奇数),6(偶数)。。
discuss 里面有位神牛给出了这个优化的证明:
http://poj.org/showmessage?message_id=342382
我把个数设成60或者61也过了。。
#include <iostream>
#include <stdio.h>
#include<string.h>
#include<algorithm>
#include<string>
#include<ctype.h>
using namespace std;
#define MAXN 10000
int a[];
bool m[][];
int main()
{
int cas=;
while(scanf("%d",a+))
{
int t=;
for(int i=;i<=;i++)
{
scanf("%d",a+i);
}
for(int i=;i<=;i++)
{
if(a[i]>)
{
a[i]=a[i]%?:;
}
t+=a[i]*i;
}
if(!t)
break;
printf("Collection #%d:\n",cas++);
if(t%)
{
puts("Can't be divided.");
puts("");
continue;
}
memset(m,,sizeof(m));
m[][]=;
for(int i=;i<=;i++)
{
for(int j=;j<=t/;j++)
{
if(m[(i-)%][j]==)
continue;
for(int k=;k<=a[i];k++)
{
if(k*i+j>t/)
break;
m[i%][k*i+j]=;
}
}
}
if(m[][t/])
{
puts("Can be divided.");
}
else
{
puts("Can't be divided.");
}
puts("");
}
return ;
}
poj1014:母函数+优化的更多相关文章
- poj1014二进制优化多重背包
Dividing Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 53029 Accepted: 13506 Descri ...
- E比昨天更多的棒棒糖(Easy+Hrad)(华师网络赛)(DP||母函数||背包优化)
Time limit per test: 2.0 seconds Memory limit: 512 megabytes 唐纳德先生的某女性朋友最近与唐纳德先生同居.该女性朋友携带一 baby.该 b ...
- hdu1059&poj1014 Dividing (dp,多重背包的二分优化)
Problem Description Marsha and Bill own a collection of marbles. They want to split the collection a ...
- [POJ1014]Dividing(二进制优化多重背包)
#include <cstdio> #include <algorithm> #include <cstring> using namespace std; int ...
- Big Event in HDU(HDU1171)可用背包和母函数求解
Big Event in HDU HDU1171 就是求一个简单的背包: 题意:就是给出一系列数,求把他们尽可能分成均匀的两堆 如:2 10 1 20 1 结果是:20 10.才最均匀! 三 ...
- 算法优化:rgb向yuv的转化最优算法,快得让你吃惊!
朋友曾经给我推荐了一个有关代码优化的pdf文档<让你的软件飞起来>,看完之后,感受颇深.为了推广其,同时也为了自己加深印象,故将其总结为word文档.下面就是其的详细内容总结,希望能于己于 ...
- 【性能优化】优化笔记之一:图像RGB与YUV转换优化
本文主要介绍如何优化您自己的CODE,实现软件的加速.我们一个图象模式识别的项目,需要将RGB格式的彩色图像先转换成黑白图像.图像转换的公式如下: Y = 0.299 * R + 0.587 * G ...
- hdu1059 dp(多重背包二进制优化)
hdu1059 题意,现在有价值为1.2.3.4.5.6的石头若干块,块数已知,问能否将这些石头分成两堆,且两堆价值相等. 很显然,愚蠢的我一开始并想不到什么多重背包二进制优化```因为我连听都没有听 ...
- BZOJ 3771 母函数裸题
题目描述 我们讲一个悲伤的故事. 从前有一个贫穷的樵夫在河边砍柴. 这时候河里出现了一个水神,夺过了他的斧头,说: “这把斧头,是不是你的?” 樵夫一看:“是啊是啊!” 水神把斧头扔在一边,又拿起一个 ...
随机推荐
- js 获取10个不重复随机数
var arr1 = new Array(); var arr2 = new Array(); for(var i = 0; i<20; i++){ arr1.push(i); } for(va ...
- yii 分页 (ajax)
Controller:class MemberController extends Controller { public function actionmember_list() { ...
- 把本地建好的项目提交到git上
才开始用git来控制项目版本,刚开始时不是很会用,由于公司最近新开个项目,需要我把建好的项目放到git上去,慢慢的摸索,终于有点小小的结果,把一个项目成功提交到git上了,在这里记录下,以免下次忘记, ...
- leetcodequestion_56 Merge Intervals
Given a collection of intervals, merge all overlapping intervals. For example, Given [1,3],[2,6],[8, ...
- MongoDB每64位版本下载
MongoDB每64位版本下载: http://dl.mongodb.org/dl/win32/x86_64 版权声明:本文博主原创文章,博客,未经同意不得转载.
- (一)一个工作任务引起的乱战——c#中结构体与byte[]间相互转换
一个工作任务涉及到c#与c++系统间的udp通信,处理了蛮长时间没有完成任务,但是期间接触到不少小知识点.本人是初接触c#,c++语言没有接触过.可能写的东西都很小儿科,暂且记录下来当工作日记把. 先 ...
- bootstrap table使用小记
bootstrap table是一个非常不错的,基于bootstrap的插件,它扩展和丰富了bootstrap表格的操作,如格式化表格,表格选择器,表格工具栏,分页等等. 最近基于bootstrap开 ...
- SSAS数据集Cube不存在或者尚未处理
对Microsoft SQL Server(2008) Analysis Services(以下称SSAS) 多维数据集运行多维表达式 (MDX) 查询时,会返回这个错误消息:XXX Cube不存在, ...
- displaytag 添加超链接
方法1:在<display:column>中使用属性autolink="true",不过这条属性只对两种情况起作用:网址和邮箱,如果只是普通字符串,那么还是普通字符串, ...
- (一)chrome扩展 - API小记
browserAction 设置browser action的badge文字,badge 显示在图标上面 chrome.browserAction.setBadgeText({text:"i ...