果然对状压DP,我根本就不懂=。=

/**************************************************
Problem: 2923 User: G_lory
Memory: 720K Time: 157MS
Language: G++ Result: Accepted
**************************************************/
#include <iostream>
#include <cstring>
#include <cstdio> using namespace std; const int MAXN = 1 << 11;
const int INF = 0x5f5f5f5f; int n, c1, c2;
int w[12];
int dp[MAXN];
int vis[MAXN];
int bag[MAXN]; bool ok(int st)
{
memset(vis, 0, sizeof vis);
vis[0] = 1;
int sum = 0;
for (int i = 0; i < n; ++i)
{
if ((1 << i) & st)//if (i & n)
{
sum += w[i];
if (sum > c1 + c2) return false;// 很好理解,如果比两个车装的物体和还大,不可能一次装完
for (int j = c1; j >= w[i]; --j)
{
if (vis[j - w[i]]) // 对n这个状态含有的物体做01背包,
vis[j] = 1; // vis[j]=1表示物体可以刚好组成j,且j可以c1被装下
}
}
} for (int i = 0; i <= c1; ++i) // 就是看sum能否被两车一次装下
if (sum - i <= c2 && vis[i]) return true;
return false;
} int main()
{
int t;
scanf("%d", &t);
for (int cas = 1; cas <= t; ++cas)
{
scanf("%d%d%d", &n, &c1, &c2); for (int i = 0; i < n; ++i)
{
scanf("%d", &w[i]);
} int st = (1 << n) - 1;
int cnt = 0; for (int i = 1; i <= st; ++i)
{
if (ok(i))
{
bag[cnt++] = i;
}
} for (int i = 1; i <= st; ++i) dp[i] = INF;
dp[0] = 0; for (int i = 0; i < cnt; ++i)
{
for (int j = st; j >= 0; --j)
{
if (dp[j] != INF && (j & bag[i]) == 0)
{
dp[j | bag[i]] = min(dp[j | bag[i]], dp[j] + 1);
}
}
} printf("Scenario #%d:\n%d\n\n", cas, dp[st]); }
return 0;
}

  

POJ2923--Relocation(01背包+状压dp)的更多相关文章

  1. BZOJ1688 「USACO05OPEN」Disease Manangement 背包+状压DP

    问题描述 BZOJ1688 题解 背包,在转移过程中使用状压. \(\mathrm{Code}\) #include<bits/stdc++.h> using namespace std; ...

  2. HDU 2923 Relocation(状压dp+01背包)

    题目代号:HDU2923 题目链接:http://poj.org/problem?id=2923 Relocation Time Limit: 1000MS Memory Limit: 65536K ...

  3. 树形DP和状压DP和背包DP

    树形DP和状压DP和背包DP 树形\(DP\)和状压\(DP\)虽然在\(NOIp\)中考的不多,但是仍然是一个比较常用的算法,因此学好这两个\(DP\)也是很重要的.而背包\(DP\)虽然以前考的次 ...

  4. NOI 2015 寿司晚宴 (状压DP+分组背包)

    题目大意:两个人从2~n中随意取几个数(不取也算作一种方案),被一个人取过的数不能被另一个人再取.两个人合法的取法是,其中一个人取的任何数必须与另一个人取的每一个数都互质,求所有合法的方案数 (数据范 ...

  5. NOIP模拟 乘积 - 状压dp + 分组背包

    题目大意: 给出n和k,求从小于等于n的数中取出不超过k个,其乘积是无平方因子数的方案数.无平方因子数:不能被质数的平方整除. 题目分析: 10(枚举\(n\le8\)),40(简单状压\(n\le1 ...

  6. HDU - 6125: Free from square (状压DP+分组背包)

    problem:给定N,K.表示你有数1到N,让你最多选择K个数,问有多少种方案,使得选择的数的乘积无平方因子数.N,K<500: solution:显然可以状压DP做,但是500以内的素数还是 ...

  7. POJ 2923 Relocation(状压DP)题解

    题意:有2辆车运货,每次同时出发,n(<10),各自装货容量c1 c2,问最少运几次运完. 思路:n比较小,打表打出所有能运的组合方式,用背包求出是否能一次运走.然后状压DP运的顺序. 代码: ...

  8. 【POJ 2923】Relocation(状压DP+DP)

    题意是给你n个物品,每次两辆车运,容量分别是c1,c2,求最少运送次数.好像不是很好想,我看了网上的题解才做出来.先用状压DP计算i状态下,第一辆可以运送的重量,用该状态的重量总和-第一辆可以运送的, ...

  9. 2018.10.01 NOIP模拟 偷书(状压dp)

    传送门 状压dp经典题. 令f[i][j]f[i][j]f[i][j]表示到第i个,第i−k+1i-k+1i−k+1~iii个物品的状态是j时的最大总和. 然后简单维护一下转移就行了. 由于想皮一下果 ...

随机推荐

  1. 微软职位内部推荐-ATG Engineer II

    微软近期Open的职位: ATG Engineer - GeneralistReady to work on some of the most advanced hardware on the pla ...

  2. iOS开发 AFNetworking 3.0使用遇到的问题

    前段时间写了一个iOS开发之AFNetworking 3.0.4使用这篇文章,是基本的用法,昨天在使用的时候又出现了几个问题,特地俩记录下,希望能帮到大家! 问题一 我是做一个获取手机验证码的功能,进 ...

  3. 将 Photoshop CC 2015.5 英文界面换成中文, 英文与中文界面互换

    注:转载或引用请注明出处 在英文的win server 2012 r2 上安装PS CC 2015.5 时,安装程序自动按成了英文版的PS,那么如何将英文换成中文呢? 网上大多讲的都是将中文换成英文, ...

  4. What Can I Do With This Major?

    What Can I Do With This Major? Majors Don’t see your major? Accounting Advertising Africana Studies ...

  5. 南方数据企业0day

    漏洞影响版本 v10.0 v11.0 关键字:inurl:”HomeMarket.asp” 默认后台:/admin 直接爆用户密码: http://www.xxx.com/NewsType.asp?S ...

  6. Mybatis bug修正

    http://1358440610-qq-com.iteye.com/blog/1827391

  7. ZOJ 2110 Tempter of the Bone(DFS)

    点我看题目 题意 : 一个N×M的迷宫,D是门的位置,门会在第T秒开启,而开启时间小于1秒,问能否在T秒的时候到达门的位置,如果能输出YES,否则NO. 思路 :DFS一下就可以,不过要注意下一终止条 ...

  8. linux 访问windows共享

    1. windows端建立一个用户user用于共享访问 2. 共享一个目录,设置user可以访问,并在windows系统中确认可以访问 3. linux端创建一个用于挂载共享目录的目录    mkdi ...

  9. ANDROID_MARS学习笔记_S01原始版_002_实现计算乘积及menu应用

    一.代码 1.xml(1)activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk ...

  10. ANDROID_MARS学习笔记_S02_008_ANIMATION第二种使用方式:xml

    一.简介 二.代码1.res\anim下的xml(1)alpha.xml.xml <?xml version="1.0" encoding="utf-8" ...