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 ...
随机推荐
- C# 匿名类型
c#3.0引入匿名类型,其由编译器动态生成而非显式定义. using System;using System.Collections.Generic;using System.Linq;using S ...
- Where does Windows store MSI files for uninstallation?
Original link: Where does Windows store MSI files for uninstallation? Following content are only use ...
- MailOtto 实现完美预加载以及源码解读
背景: 最近项目组需要一个小课题分享,小白刚好从微博里看到一个这样有趣的开源工具MailOtto,是阿里巴巴员工 Drakeet 维护的一个专注懒事件的事件总线,gitHub地址为:https://g ...
- CenOS6.4 系统升级内核
获取要升级的内核版本的包 #wget -c https://www.kernel.org/pub/linux/kernel/v3.x/内核版本 若得到的内核的压缩格式为tar.xz,则需要两步解压 # ...
- 无线WEP入侵注意事项
1.工具bt3/bt4+spoonwep2(dep安装包)+U盘/VMwmare+无线网卡(可以笔记本内置)+UltraISO+unetbootin-windows-latest.exe+2.内置网卡 ...
- android hander 线程用法
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanc ...
- java集合——进度1
集合类的由来: 对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定. 就使用集合容器进行存储. 集合特点:1,用于存储对象的容器.2,集合的长度是可变的.3,集合中不可以存 ...
- javascripct流程语句
1.条件选择 if 语句:只有当指定条件为true时,使用该语句来执行代码 if...else语句:当条件为true时执行代码,当条件为 false 时执行其他代码 if...else i ...
- Android Studio API 文档_下载与使用
如何下载API 说明: 时间: 2016/7/9 根据百度经验步骤改编(百度经验), 但是比它更好, 亲测可用 1.1 下载API文档: 1.1.1 SDK Manager 1.1.2 1.1.3 ( ...
- 网页clientWidth等相关
javascript代码: function getInfo() { var s = ""; s += & ...