假期训练六(poj-1753,递归+hdu-2844,多重背包)
题目一:传送门
题意:有一个4*4的棋盘,每次翻转一个棋子和它的上下左右的四个棋子,判断翻转多少次之后可以变为纯色的棋盘。
思路:总共有C(0,16)+C(1,16)+C(2,16)+……+C(16,16)=2^16次,所以最多有16个棋子被翻动,然后从(0,0)个棋子开始,依次翻转其他棋子,
判断最少要翻转多少个棋子,记着要回溯。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int INF = ;
char str[][];
int a[][],mi,zz[][]={,, ,, ,-, ,, -,};
void turn(int x,int y)
{
for(int i=;i<;i++)
{
int x1=x+zz[i][];
int y1=y+zz[i][];
if(x1>=&&x1<&&y1>=&&y1<)
{
a[x1][y1]=!a[x1][y1];
}
}
}
bool pd()
{
for(int i=;i<;i++)
{
for(int j=;j<;j++)
if(a[][]!=a[i][j]) return false;
}
return true;
}
void dfs(int x,int y,int num)
{
if(pd())
{
mi=mi>num?num:mi;
return ;
}
if(x==) return ;
turn(x,y);
if(y==) dfs(x+,,num+);
else dfs(x,y+,num+);
turn(x,y);
if(y==) dfs(x+,,num);
else dfs(x,y+,num);
}
int main(void)
{
int i,j,n,m;
for(i=;i<;i++) scanf("%s",str[i]);
for(i=;i<;i++)
{
for(j=;j<;j++)
a[i][j]=str[i][j]=='b'?:;
}
mi=INF;
dfs(,,);
if(mi<=) printf("%d\n",mi);
else printf("Impossible\n");
return ;
}
题目二:传送门
题意:有n个种硬币,最大不超过m,给出每种硬币的价值和数量,求不超过m的情况下能组成多少种价格。
思路:多重背包;
(注意:当时因为审题不清,没理解多少种价格的意思,其实就是dp[i]==i的情况)。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = ;
int val[maxn],num[maxn],dp[maxn],a[maxn*];
int MAX(int x,int y)
{
return x>y?x:y;
}
int main(void)
{
int n,m,i,j,pt,cnt;
while(scanf("%d%d",&n,&m)&&(n+m))
{
memset(dp,,sizeof(dp));
memset(a,,sizeof(a));
for(i=;i<=n;i++) scanf("%d",&val[i]);
for(pt=,i=;i<=n;i++)
{
scanf("%d",&cnt);
for(j=;j<=cnt;j*=)
{
a[pt++]=j*val[i];
cnt-=j;
}
if(cnt>) a[pt++]=cnt*val[i];
}
for(i=;i<pt;i++)
{
for(j=m;j>=a[i];j--)
dp[j]=MAX(dp[j],dp[j-a[i]]+a[i]);
}
int ans=;
for(i=;i<=m;i++)
if(i==dp[i]) ans++;
printf("%d\n",ans);
}
return ;
}
假期训练六(poj-1753,递归+hdu-2844,多重背包)的更多相关文章
- hdu 2844 多重背包coins
http://acm.hdu.edu.cn/showproblem.php?pid=2844 题意: 有n个硬币,知道其价值A1.....An.数量C1...Cn.问在1到m价值之间,最多能组成多少种 ...
- hdu 2844 多重背包+单调队列优化
思路:把价值看做体积,而价值的大小还是其本身,那么只需判断1-m中的每个状态最大是否为自己,是就+1: #include<iostream> #include<algorithm&g ...
- Coins(hdu 2844 多重背包)
Coins Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- hdu 2844 多重背包二进制优化
//http://www.cnblogs.com/devil-91/archive/2012/05/16/2502710.html #include<stdio.h> #define N ...
- hdu 2844 多重背包的转化问题 以及这个dp状态的确定
在杭电上测试了下 这里的状态转移方程有两个.,. 现在有价值val[1],val[2],…val[n]的n种硬币, 它们的数量分别为num[i]个. 然后给你一个m, 问你区间[1,m]内的所有数目, ...
- hdu 5445 多重背包
Food Problem Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)To ...
- POJ 2392 Space Elevator(贪心+多重背包)
POJ 2392 Space Elevator(贪心+多重背包) http://poj.org/problem?id=2392 题意: 题意:给定n种积木.每种积木都有一个高度h[i],一个数量num ...
- POJ 3260 The Fewest Coins(多重背包+全然背包)
POJ 3260 The Fewest Coins(多重背包+全然背包) http://poj.org/problem?id=3260 题意: John要去买价值为m的商品. 如今的货币系统有n种货币 ...
- hdu 2844 混合背包【背包dp】
http://acm.hdu.edu.cn/showproblem.php?pid=2844 题意:有n种纸币面额(a1,a2,...an),每种面额对应有(c1,c2,...cn)张.问这些钱能拼成 ...
- hdu 2191 多重背包 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
http://acm.hdu.edu.cn/showproblem.php?pid=2191 New~ 欢迎“热爱编程”的高考少年——报考杭州电子科技大学计算机学院关于2015年杭电ACM暑期集训队的 ...
随机推荐
- Stealth潜行风格游戏源码(Unity5x)
官方的Stealth画质看起来不错.Unity 官方说Stealth样例属于中等难度,通过学习Stealth,可以获得: Create a fully functioning level of a ...
- IIS挂起网站配置文件地址
“C/用户/Administrator/我的文档/IISExpress/Config/applicationhost”
- ubuntu 安装Pangolin 过程
Pangolin 是一款开源的OPENGL显示库,可以用来视频显示.而且开发容易. 代码我们可以从Github 进行下载:https://github.com/zzx2GH/Pangolin.git ...
- Mysql数据备份与还原
一.数据备份 1.使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中. mysqldump命令的工作原理很简单.它先 ...
- node.js中事件触发器events的使用
node.js是基于事件驱动的,通过events,我们可以方便的创建事件,并通过触发事件来调用我们自定义的监听函数. 所有能触发事件的对象都应该是 EventEmitter 类的实例,一般我们自定义一 ...
- YII2中日志的配置与使用
YII2中给我们提供了非常方便的日志组件,只需要简单配置一下就可以使用. 我们在config/web.php中配置如下: return [ //log必须在bootstrap期间就被加载,便于及时调度 ...
- C#实现发送给QQ邮件
最近在做一个通过点击忘记密码往用户邮箱中发邮件(邮件内容是一个超链接)点击进行修改的功能,发送原理,我们只是把邮件发送给smtp服务器,然后再由smtp服务器发送到邮箱,发送之前要校验一下. 1.微软 ...
- Ubuntu1.6安装Go【小白版】
[安装golang,并配置环境变量]1.将go下载到Home目录并解压 一键解压会 自动会解压到 Home/go目录. 2.设置环境变量 nano是一种文本编辑器,也可以用其他的编辑器. 输入以下命令 ...
- Web.config Transformation Syntax for Web Application Project Deployment
Web.config Transformation Syntax for Web Application Project Deployment Other Versions Updated: Ma ...
- 字典的增删改查 daty 5
字典:python中非常重要的数据类型,在python中唯一一个映射的数据类型数据类型分类 按照数据可变与不可变: # 不可变数据类型: int str bool tuple # 可变数据类型: li ...