题目一:传送门

题意:有一个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,多重背包)的更多相关文章

  1. hdu 2844 多重背包coins

    http://acm.hdu.edu.cn/showproblem.php?pid=2844 题意: 有n个硬币,知道其价值A1.....An.数量C1...Cn.问在1到m价值之间,最多能组成多少种 ...

  2. hdu 2844 多重背包+单调队列优化

    思路:把价值看做体积,而价值的大小还是其本身,那么只需判断1-m中的每个状态最大是否为自己,是就+1: #include<iostream> #include<algorithm&g ...

  3. Coins(hdu 2844 多重背包)

    Coins Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  4. hdu 2844 多重背包二进制优化

    //http://www.cnblogs.com/devil-91/archive/2012/05/16/2502710.html #include<stdio.h> #define N ...

  5. hdu 2844 多重背包的转化问题 以及这个dp状态的确定

    在杭电上测试了下 这里的状态转移方程有两个.,. 现在有价值val[1],val[2],…val[n]的n种硬币, 它们的数量分别为num[i]个. 然后给你一个m, 问你区间[1,m]内的所有数目, ...

  6. hdu 5445 多重背包

    Food Problem Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)To ...

  7. POJ 2392 Space Elevator(贪心+多重背包)

    POJ 2392 Space Elevator(贪心+多重背包) http://poj.org/problem?id=2392 题意: 题意:给定n种积木.每种积木都有一个高度h[i],一个数量num ...

  8. POJ 3260 The Fewest Coins(多重背包+全然背包)

    POJ 3260 The Fewest Coins(多重背包+全然背包) http://poj.org/problem?id=3260 题意: John要去买价值为m的商品. 如今的货币系统有n种货币 ...

  9. hdu 2844 混合背包【背包dp】

    http://acm.hdu.edu.cn/showproblem.php?pid=2844 题意:有n种纸币面额(a1,a2,...an),每种面额对应有(c1,c2,...cn)张.问这些钱能拼成 ...

  10. hdu 2191 多重背包 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活

    http://acm.hdu.edu.cn/showproblem.php?pid=2191 New~ 欢迎“热爱编程”的高考少年——报考杭州电子科技大学计算机学院关于2015年杭电ACM暑期集训队的 ...

随机推荐

  1. Codeforces Beta Round #76 (Div. 2 Only)

    Codeforces Beta Round #76 (Div. 2 Only) http://codeforces.com/contest/94 A #include<bits/stdc++.h ...

  2. 总结函数open与fopen的区别

    转自:https://www.zybuluo.com/yiltoncent/note/87461 对于这两个名字很类似的函数,对于很多初学者来说,不容易搞清楚它们有什么不同,只知道按照函数用法使用.如 ...

  3. 【分布式架构】“spring cloud”与“dubbo”微服务的对比

      秉承站在巨人的肩膀上,同时我也不想重复制造轮子,我发现了一系列关于“分布式架构”方面,我需要,同时能够解决我的一些疑惑.问题的博客,转载过来,原文链接: http://blog.csdn.net/ ...

  4. js学习(初)

    一种弱数据类型语言  var 基础: 处理字符串的函数 数组基础操作 流程控制语句 选择,分支 循环for for in for(索引变量 in  对象){ 语句块 } 面向对象: js语言的对象就是 ...

  5. DOS下的安全空间

    我们需要直接向一段内存中写入内容: 这段内存空间不应存放系统或其他程序的数据或代码,否则写入操作很可能引发错误: DOS方式下,一般情况,0:200~0:2ff空间中没有系统或其他程序的数据或代码; ...

  6. CentOS 6、7 安装 Golang

    方法一:使用二进制文件安装 (推荐) 1.下载二进制文件: wget https://storage.googleapis.com/golang/go1.7.3.linux-amd64.tar.gz ...

  7. 比特币系列钱包的UTXO总结

    1.通过比特币钱包的WalletNotify配置来处理 本钱包内的交易信息的 推送.BlockNotify数据更多,不适合交易所的监听

  8. CentOS 7系统关闭yum自动下载更新

    安装CentOS 7后,系统yum自动更新状态默认为开启,若禁止系统自动更新需要手动关闭. 1.进入yum目录 [root@localhost ~]$ cd /etc/yum 2.编辑yum-cron ...

  9. BZOJ3191或洛谷2059 [JLOI2013]卡牌游戏

    BZOJ原题链接 洛谷原题链接 我们可以倒着来\(DP\). 设\(f[i][j]\)表示剩余\(i\)个人,从庄家数起第\(j\)个人的胜率,设当前枚举到第\(k\)张牌,该情况下这一轮淘汰的位置为 ...

  10. Delphi XE2有什么新功能

    具体内容见PDF Delphi XE2有什么新功能Delphi XE2提供(offers)了令人兴奋(exciting)的新功能,让您能够建立高度可视化的,在Windows,Mac和iOS上的业务应用 ...