果然对状压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. 开发设计模式(三)策略模式(Strategy Pattern)

    转自http://blog.sina.com.cn/s/blog_89d90b7c01017zrr.html 下面的环境是unity3d,用C#进行编码,当然有人会说这是在乱用模式,U3D不一定适合使 ...

  2. NPOI常用功能工具类

    public class NPOIHelper { /// <summary> /// DataTable导出到Excel文件 /// </summary> /// <p ...

  3. Seven Python Tools All Data Scientists Should Know How to Use

    Seven Python Tools All Data Scientists Should Know How to Use If you’re an aspiring data scientist, ...

  4. sqlite优化记录:建立索引加快查询速度

    凡是数据库中,索引的存在就是为了提高查询速度的,数据库的索引有点类似于书本上面的目录的概念,因为在英文中都是index,事实上也就是目录. 其算法应该叫做“倒排索引”,这个其实也类似于搜索引擎里面的基 ...

  5. POJ3714+最近点对

    特判标记即可 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h& ...

  6. linux,Centos,bash: service: command not found

    很简单,这个问题是这样的,su 或者 su root:的话只是将当前身份转为root,用户shell并没有改变.所以有些系统命令不能使用. su -或者su -l或者su -l root,可以完全的将 ...

  7. 利用if else判断是否及格

    static void Main(string[] args)        {            while (true)            {                string ...

  8. bzoj1054

    弱弱的搜索题, 我的做法是将矩阵看做二进制然后用位运算来做的,感觉比较舒服 ..] ,,,);       dy:..] ,,-,); type node=record        po,next: ...

  9. cogs_14_搭配飞行员_(二分图匹配+最大流,网络流24题#01)

    描述 http://cojs.tk/cogs/problem/problem.php?pid=14 有一些正飞行员和副飞行员,给出每个正飞行员可以和哪些副飞行员一起飞.一架飞机上必须一正一副,求最多多 ...

  10. phpMyAdmin import.php 跨站脚本漏洞

    漏洞名称: phpMyAdmin import.php 跨站脚本漏洞 CNNVD编号: CNNVD-201402-281 发布时间: 2014-02-21 更新时间: 2014-02-21 危害等级: ...