【动态规划】洛谷 P1282 多米诺骨牌

【动态规划】洛谷 P1282 多米诺骨牌

时间限制: 1 Sec  内存限制: 128 MB

题目描述

多米诺骨牌有上下2个方块组成,每个方块中有1~6个点。现有排成行的

上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|。例如在图8-1中,S1=6+1+1+1=9,S2=1+5+3+2=11,|S1-S2|=2。每个多米诺骨牌可以旋转180°,使得上下两个方块互换位置。 编程用最少的旋转次数使多米诺骨牌上下2行点数之差达到最小。

 

 

对于图中的例子,只要将最后一个多米诺骨牌旋转180°,可使上下2行点数之差为0。

输入格式

输入文件的第一行是一个正整数n(1≤n≤1000),表示多米诺骨牌数。接下来的n行表示n个多米诺骨牌的点数。每行有两个用空格隔开的正整数,表示多米诺骨牌上下方块中的点数a和b,且1≤a,b≤6。

输出格式

输出文件仅一行,包含一个整数。表示求得的最小旋转次数。

输入输出样例

输入 #1
4
6 1
1 5
1 3
1 2
输出 #1
1

思路

  看到题目之后我们分析一下,对于每个骨牌,因为不能改变骨牌上的数字,所以每个骨牌都可以看做是一个零和他们之间的差,当和最小时,是一个很明显的背包问题。

  以为每个骨牌只有上下两数之差是有意义的,所以我们只用a[i]保存他们两数的差就可以了,不翻即a[i],翻即-a[i]。

  我们设f[i][j]为对于前i个骨牌和为j的最小翻动次数,所以很明显f[i][j]=min{f[i-1][j-a[i]],f[i-1][j+a[i]]+1}。

  但是计算过程中不免会遇到负数,为了防止RE,我们计算一下它的最小值,即-5*1000,所以我们给所有的j都加上一个5000,这样就避免了负数下标的问题。

  最后扫一遍dp[n][j]就可以找到最佳解啦!

  话不多说,上代码

#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int f[1010][10020];
int a[1010];
int n;
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){int x,y;scanf("%d%d",&x,&y);a[i]=x-y;}for(int i=0;i<=n;i++)for(int j=1;j<=10015;j++)f[i][j]=0x3f3f3f3f;f[0][0+5010]=0;for(int i=1;i<=n;i++)for(int j=10;j<=10010;j++)f[i][j]=min(f[i-1][j-a[i]],f[i-1][j+a[i]]+1);int temp=0x3f3f3f3f,ans=0x3f3f3f3f;for(int i=10;i<=10010;i++)if(f[n][i]!=0x3f3f3f3f){if(fabs(i-5010)<=temp){if(fabs(i-5010)==temp)ans=min(ans,f[n][i]);temp=fabs(i-5010);ans=f[n][i];}}printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/dawn-whisper/p/11256911.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习在工业推荐如何work?Netflix这篇论文「深度学习推荐系统Netflix案例分析」阐述DL在RS的优劣与经验教训...

来源&#xff1a;专知深度学习在推荐系统中如何发挥作用是一个重要的问题。最近来自Netflix的文章详细阐述了这一点指出&#xff1a;在建模用户物品交互方面&#xff0c;深度学习相比传统基线方法并无太大优势&#xff0c;而对于异质特征的表示融入深度学习则具有很好建模性能。…

5.3.4 TCP流量控制

5.3.4 TCP流量控制 文章目录tcp流量控制tcp流量控制

Nature封面,硅量子计算达到99%的准确率

来源&#xff1a;ScienceAI编辑&#xff1a;萝卜皮在 2022 年 1 月 20 日发布的《Nature》上&#xff0c;有三篇论文独立介绍了基于硅的量子计算平台&#xff0c;它们使用了多量子比特纠缠&#xff1a;一篇来自新南威尔士大学&#xff08;UNSW&#xff09; Andrea Morello 团队…

[poj3261]Milk Patterns

求出后缀数组和height数组&#xff0c;然后二分答案后分组查询&#xff0c;一个块内如果有超过k个那么这个答案就可以。 1 #include<bits/stdc.h>2 using namespace std;3 #define N 500054 int n,m,ans,a[N],b[N],h[N],sum[N],ra[N<<1],sa[N];5 char s[N],s1[N];6…

5.3.5 TCP拥塞控制

5.3.5 TCP拥塞控制 文章目录流量控制与拥塞控制区别

一文读懂2022年国家自然科学基金限项新旧政策对比

来源&#xff1a;国家自然科学基金委员会、微信公众号“锐动源”近日&#xff0c;《2022年度国家自然科学基金项目指南》正式发布&#xff0c;相较于2021年的项目指南&#xff0c;从对比来看&#xff0c;2022年度项目指南变动不大&#xff0c;最重要的几项改革在指南发布前均已…

神经网络通过研究任意单个星系,揭示整个宇宙的组成

来源&#xff1a;ScienceAI编译&#xff1a;绿萝科学家可能偶然发现了一种全新的宇宙学研究方法。宇宙学家通常通过尽可能多地观察宇宙来确定宇宙的组成。但这些研究人员发现&#xff0c;机器学习算法可以检查单个模拟星系&#xff0c;并预测其存在的数字宇宙的整体构成——这一…

手把手教你实现Java发送邮件(1)-发送简单的文本

说明&#xff1a;本博客已经收藏至我的gitee中的code_demo仓库&#xff08;点击此链接跳转&#xff09;中&#xff0c;且gitee中有相应的代码~ 欢迎访问~~ 不仅仅是code&#xff0c;还有一些通俗的讲解哦~ 文章目录一、Java实现邮件发送二、Java发送邮件Java实现纯文本邮件发送…

量化涌现:信息论方法识别多变量数据中的因果涌现

来源&#xff1a;集智俱乐部作者:Fernando E. Rosas, Pedro A. M. Mediano, Henrik J. Jensen等译者:潘佳栋审校:梁金编辑&#xff1a;邓一雪导语大量个体聚集起来&#xff0c;常常涌现出新的复杂结构。鸟儿聚集起来形成兼具灵活性与秩序的鸟群&#xff0c;大量神经元聚集产生强…

4.1_ 1_ 初识文件管理

4.1_ 1_ 初识文件管理

case函数,replace函数

&#xff08;case 字段 when 数据1 then 输出1 when 数据2 then 输出2 when 数据3 then 输出3 else 其他数据输出一致 end&#xff09; as 字段 replace(字段,原子字符串,新子字符串) as 字段 select username,(case rolewhen 0 then 班长when 1 then 课代表when 2 then 组长wh…

阿斯麦CEO:中国不太可能独立造出顶尖光刻机 但也别那么绝对

来源&#xff1a;世界先进制造技术论坛“中国不太可能独立复制&#xff08;replicate&#xff09;出顶尖的光刻技术&#xff0c;因为阿斯麦依赖于不懈的创新&#xff0c;以及整合只有从非中国供应商处才能获得的零部件。但我的意思并不是绝对不可能&#xff0c;因为中国的物理定…

2.42死锁的处理策略一预防死锁

2.42死锁的处理策略一预防死锁

《科学》:中国科学家揭示,人脑中间神经元多样性从何而来?

来源&#xff1a;学术经纬编辑&#xff1a;药明康德内容团队编辑 在我们的大脑皮层中&#xff0c;有两类神经元源自发育的端脑结构。除了兴奋性神经元&#xff0c;中间神经元是另一类重要的神经元&#xff0c;它们可以通过释放γ&#xff0d;氨基丁酸&#xff08;GABA&#xf…

快速入门虚拟机+linux安装(附带视频)

配合视频食用更佳哦~ 01_虚拟机Linux 快速入门 02_手把手教你安装centos7&#xff08;不会你来打我&#xff09; 这是bai du yun 群链接&#xff0c;存放UP主视频中的那个“开箱即用”虚拟机文件压缩包 https://pan.baidu.com/s/4hwvNmIS 文章目录下载地址概念介绍关于虚拟机&a…

03_linux 常用命令(上)

声明&#xff1a;此文档中的部分内容来自于培训班笔记&#xff0c;如有侵权&#xff0c;请联系UP主&#xff0c;即刻删除视频。03_linux 常用命令&#xff08;上&#xff09; 配合视频食用更佳哦~&#xff08;点击蓝色字样&#xff0c;查看up主录制的视频&#xff09; 内容要…

多模态AI崛起,2022年人工智能5大发展趋势

来源&#xff1a;CSDNnews转自&#xff1a;中国机器人网前言国外一家专注于开源和堆栈技术新闻网站 TheNewStark 盘点出 2022 年值得人们期待的五个人工智能发展趋势。随着深度学习的开放&#xff0c;人工智能在几年中快速发展&#xff0c;尖端技术慢慢向普及应用到各行各业。以…

OpenStack组件——Keystone身份认证

1.keystone介绍 keystone 是OpenStack的组件之一&#xff0c;用于为OpenStack家族中的其它组件成员提供统一的认证服务&#xff0c;包括身份验证、令牌的发放和校验、服务列表、用户权限的定义等等。云环境中所有的服务之间的授权和认证都需要经过 keystone. 因此 keystone 是云…