P1282-多米诺骨牌【dp,背包】
正题
评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P1282
题目大意
n个多米诺骨牌,上下值不相同,可以交换一个多米诺上下的值,求最少的交换次数使上下之和的差值最小。
解题思路
用fi,j+Nfi,j+Nf_{i,j+N}表示只计算前i个多米诺,上下之差为j需要的最小次数,然后类似背包的想法正常用差值转移就好了。
code
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 5000
using namespace std;
int n,n1,n2,f[1001][N*3],a[1001],ans,mins;
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d%d",&n1,&n2);a[i]=n1-n2;//只保存差值}memset(f,127/3,sizeof(f));f[0][N]=0;//初始化for(int i=1;i<=n;i++){for(int j=-N;j<=N;j++){f[i][j+N]=min(f[i-1][j+N-a[i]],f[i-1][j+N+a[i]]+1);}}for(int i=0;i<=N;i++){mins=min(f[n][N+i],f[n][N-i]);//计算最小答案if(mins<=1000)break;}printf("%d",mins);
}
P1282-多米诺骨牌【dp,背包】相关推荐
- 【动态规划】洛谷 P1282 多米诺骨牌
[动态规划]洛谷 P1282 多米诺骨牌 时间限制: 1 Sec 内存限制: 128 MB 题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下 ...
- 洛谷P1282 多米诺骨牌 题解
洛谷P1282 多米诺骨牌 题解 题目链接:P1282 多米诺骨牌 题意: 多米诺骨牌由上下 222 个方块组成,每个方块中有 1∼61\sim61∼6 个点.现有排成行的上方块中点数之和记为 S1S ...
- P1282 多米诺骨牌 (差值DP+背包)
题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|.例如在图8-1中,S1=6+1+1+1=9, ...
- 【01背包】洛谷P1282多米诺骨牌
题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|.例如在图8-1中,S1=6+1+1+1=9, ...
- P1282 多米诺骨牌
题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|.例如在图8-1中,S1=6+1+1+1=9, ...
- 洛谷p1282多米诺骨牌
题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|.例如在图8-1中,S1=6+1+1+1=9, ...
- C++ P1282 多米诺骨牌
题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|.例如在图8-1中,S1=6+1+1+1=9, ...
- 洛谷 [P1282] 多米诺骨牌
这道题是一道背包问题,考虑一个背包, 显然如果我们直接设dp[i]表示前i个使差值最小所需的最少翻转次数,是具有后效性的. 所以我们将直接求最值,改为求某个值是否可行,这种求最值转变为求可行性的思想是 ...
- P1282 多米诺骨牌题解
[题目链接] P1282 [解题思路] 这道题我本来是想用贪心,用sort从大到小排序后,减去两张骨牌的差直到最小,结果却发现自己WA了. 很显然我的贪心是错误的,于是我后来就用了老师教的 dpdpd ...
最新文章
- 分享一个MD5加密的工具类
- 参数修饰符 params、in
- 使用docker部署一个直接可用的puppet服务端
- react生命周期函数_如何优雅的消灭掉react生命周期函数
- Android 平板中 自己定义键盘(popuwindow) 居于屏幕左下方 仿微信的password输入界面...
- 循环变量到底应该使用int还是unsigned int?
- android:layout_gravity和android:gravity属性的区别(转)
- Android 分享两个你学习android 平台开发必须碰到的几个知识点的组件【天气预报、日期】View 组件...
- 微服务架构与API网关
- 产品经理面试必问问题与答题模板
- Scala(1) -- Scala下载安装及idea环境配置
- 联想台式计算机 不启动u盘,联想电脑没有u盘启动项怎么办_联想电脑找不到u盘启动如何解决...
- 项目合同与劳务合同的区别
- code405是什么意思_HTTP返回reponse code 405
- 基于单片机的无线防盗报警系统设计(#0449)
- requireJS,rjs,gulp简易实现
- unity上传头像_Unity用户自定义圆角头像
- Speedoffice(PPT)怎么自定义设置幻灯片大小
- spark学习02天-scala读取文件,词频统计
- 直播卖货系统,使用数据库查询缓存
热门文章
- 软件测试基础知识bbst,摘自James Bach对软件测试新手的建议
- 排列组合思维导图_排列组合——排列数专题
- 云南河道 kml文件_处理能力提升 4 倍 ,大疆智图 4 天完成 5 公里河道建模
- windows如何添加本机dns记录_运维必看!超清晰的 DNS 原理入门指南
- 算法题目中经典问题(易错点)
- leetcote34. 在排序数组中查找元素的第一个和最后一个位置
- leetcode738. 单调递增的数字
- [设计模式]合成复用原则
- Fliptile POJ - 3279 (翻转)(二进制+对第一行暴力遍历翻转的位置)
- 6-7 求链表的倒数第m个元素 (25 分)