URAL1244. Gentlemen(背包)
以前做的题 VJ太水了 数组里面的数可能会小于0 当时没判断
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
using namespace std;
int dp[],w[],path[],o,f[],n,ff[];
int flag,tw;
void dfs(int sw,int v,int u)
{
int j,i;
if(flag) return ;
path[v] = u;
if(sw==)
{
flag =;
for(i = ; i <= v ; i++)
ff[path[i]] = ;
return ;
}
if(sw<) return ;
for(j = ; j <= n ; j++)
{
if(sw-w[j]<)
continue;
if(!f[j]&&dp[sw-w[j]])
{
f[j] = ;
dfs(sw-w[j],v+,j);
f[j] = ;
}
}
}
int main()
{
int i,j;
cin>>tw;
cin>>n;
for(i = ; i <= n ; i++)
cin>>w[i];
dp[] = ;
for(i = ; i <= n ;i++)
for(j = tw ; j>=w[i] ; j--)
{
dp[j] += dp[j-w[i]];
}
int sw = tw;
if(dp[tw]==)
cout<<"0\n";
else if(dp[tw]>)
cout<<"-1\n"<<endl;
else
{
for(i = ; i <= n ; i++)
{
if(sw-w[i]<)
continue;
if(dp[sw-w[i]])
{
f[i] = ;
dfs(sw-w[i],,i);
f[i] = ;
}
if(flag) break;
}
int kk=;
for(i = ; i <= n ; i++)
{
if(!ff[i])
{
if(kk)
printf(" ");
printf("%d",i);
kk++;
}
}
puts("");
}
return ;
}
URAL1244. Gentlemen(背包)的更多相关文章
- DP URAL 1244 Gentlemen
题目传送门 /* 题意:已知丢失若干卡片后剩余的总体积,并知道原来所有卡片的各自的体积,问丢失的卡片的id DP递推:首先从丢失的卡片的总体积考虑,dp[i] 代表体积为i的方案数,从dp[0] = ...
- ural 1244. Gentlemen
1244. Gentlemen Time limit: 0.5 secondMemory limit: 64 MB Let's remember one old joke: Once a gentle ...
- 【USACO 3.1】Stamps (完全背包)
题意:给你n种价值不同的邮票,最大的不超过10000元,一次最多贴k张,求1到多少都能被表示出来?n≤50,k≤200. 题解:dp[i]表示i元最少可以用几张邮票表示,那么对于价值a的邮票,可以推出 ...
- HDU 3535 AreYouBusy (混合背包)
题意:给你n组物品和自己有的价值s,每组有l个物品和有一种类型: 0:此组中最少选择一个 1:此组中最多选择一个 2:此组随便选 每种物品有两个值:是需要价值ci,可获得乐趣gi 问在满足条件的情况下 ...
- HDU2159 二维完全背包
FATE Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- CF2.D 并查集+背包
D. Arpa's weak amphitheater and Mehrdad's valuable Hoses time limit per test 1 second memory limit p ...
- UVALive 4870 Roller Coaster --01背包
题意:过山车有n个区域,一个人有两个值F,D,在每个区域有两种选择: 1.睁眼: F += f[i], D += d[i] 2.闭眼: F = F , D -= K 问在D小于等于一定限度的时 ...
- 洛谷P1782 旅行商的背包[多重背包]
题目描述 小S坚信任何问题都可以在多项式时间内解决,于是他准备亲自去当一回旅行商.在出发之前,他购进了一些物品.这些物品共有n种,第i种体积为Vi,价值为Wi,共有Di件.他的背包体积是C.怎样装才能 ...
- POJ1717 Dominoes[背包DP]
Dominoes Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6731 Accepted: 2234 Descript ...
随机推荐
- JavaScript 学习笔记: 扩充类型的功能
JavaScript 是允许给基本类型扩充功能的.例如,可以通过对Object.prototype增加方法,可以让该方法对所有的对象都可用. 这样的方式对函数,数组,字符串,数字,正则表达式和布尔值同 ...
- windows下vs2013使用C++访问redis
刚开始在windows下使用c++访问reids各种报错,经过网上到处搜方案,终于可以在windows下访问redis了,特将注意事项记录下来: 1.获取redis Window下的开发库源码,从gi ...
- CentOS 7 install LNMP
CentOS 7 install LNMP 关于 Nginx (发音 “engine x”)这是一款免费.开源.高效的 HTTP 服务器,Nginx是以稳定著称,丰富的功能,结构简单,低资源消耗.本教 ...
- Linux C 程序 空语句-gcc编译命令(SIX)
C语言语句1.空语句:当一个if或者while判断部分能完成工作,空语句可以用来表示if或者while内的空循环体 if(a == b ); 2.gcc编译器 //程序的编译过程: // 预处理:pr ...
- npm:Node.js的软件包管理器
npm https://www.npmjs.com/ 2016-08-03
- yii2 用gii生成后台模块 view path描述
view path 格式: @backend/views/refund , 注意@和/
- 为什么要有binary-to-text encoding?
在wikipedia上看MIME的介绍的时候,有一节是关于Content-Transfer-Encoding的,里面提到了binary-to-text encoding,我就想,既然计算机中的信息使用 ...
- 百度地图API应用实践(一) —— 栅格图(草稿)
概述 运用百度地图JS API,实现了在百度地图上绘制栅格并按统计值渲染栅格颜色.实现的过程是不断补习的过程,其中用到一些技术,是个人首次尝试.包括:(1)简单的jQuery语法,并实现Ajax:(2 ...
- listview滚动时背景闪烁,背景黑或白问题解决
android在使用listview时出现滚动时背景闪烁,变成背景黑或白的问题这样处理: 1:在布局文件中listview标签中加入: android:cacheColorHint="#00 ...
- C# zip/unzip with DotNet framework 4.5
add reference System.IO.Compression.FileSystem public class ZipHelper { public static string UnZip(s ...