题目描述

输入

输出

样例输入

3
8 7 6
3 9 4
1 10 5

输出

18

数据范围

样例解释

解法

容易从n<=15得出可以使用状态压缩动态规划。
设f[i][j][k]表示01状态为i,最后一个放的是第j个积木,最后放的积木按第k种方式来摆放。摆放方式有3种,长 宽长 高宽 高
转移方程显然。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define ll long long
#define sqr(x) ((x)*(x))
#define ln(x,y) int(log(x)/log(y))
using namespace std;
const char* fin="aP2.in";
const char* fout="aP2.out";
const int inf=0x7fffffff;
const int maxn=17,maxk=1<<maxn;
const int w[3][3]={{0,1,2},{0,2,1},{1,2,0}};
int n,i,j,k,l,o;
int a[maxn][3];
ll f[maxk][maxn][3];
ll ans;
int main(){scanf("%d",&n);for (i=1;i<=n;i++){scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);sort(a[i],a[i]+3);}for (i=0;i<1<<n;i++)for (j=1;j<=n;j++)for (k=0;k<3;k++){if (i==((1<<n)-1)) continue;for (l=1;l<=n;l++){if (i&(1<<(l-1))) continue;for (o=0;o<3;o++){if (a[l][w[o][0]]<=a[j][w[k][0]] && a[l][w[o][1]]<=a[j][w[k][1]]){f[i|(1<<(l-1))][l][o]=max(f[i][j][k]+a[l][w[o][2]],f[i|(1<<(l-1))][l][o]);ans=max(ans,f[i|(1<<(l-1))][l][o]);}}}}printf("%lld",ans);return 0;
}

启发

n很小时考虑状态压缩动态规划。

转载于:https://www.cnblogs.com/hiweibolu/p/6714912.html

【JZOJ4743】【NOIP2016提高A组模拟9.2】积木相关推荐

  1. JZOJ 100024. 【NOIP2016提高A组模拟7.6】数球

    Description 小A有n个球,编号分别为1到n,小A每次都会从n个球中取出若干个球,至少取一个,至多取n个,每次取完再放回去,需要满足以下两个条件. 每次取出的球的个数两两不同. 每次取出的球 ...

  2. JZOJ4708. 【NOIP2016提高A组模拟8.20】奇洛金卡达 倒着做的思想+并查集维护

    题目大意 给定一个长度小于等于kk的字符串和qq,表示现在有qq个操作,每个操作给定两个参数li,ril_i,r_i表示把现在的字符串第lil_i到rir_i把其中编号为奇数的按顺序写下来,再在后面把 ...

  3. 【NOIP2016提高A组模拟9.9】闭门造车

    题目 自从htn体验了一把飙车的快感,他就下定决心要闭门造车!但是他两手空空怎么造得出车来呢?无奈的他只好来到了汽车零部件商店. 一走进商店,玲琅满目的各式零件看得htn眼花缭乱.但是他很快便反应过来 ...

  4. [JZOJ4788] 【NOIP2016提高A组模拟9.17】序列

    题目 描述 题目大意 一个序列,每次可以使一段区间内的所有数加一(模四). 问最少的操作次数. 思考历程 一看这题目,诶,这不就是那道叫密码锁的题目吗? 然后随便打一打,样例过了,就再也没有思考这一题 ...

  5. JZOJ 4726. 【NOIP2016提高A组模拟8.22】种花

    Description 经过三十多个小时的长途跋涉,小Z和小D终于到了NOI现场--南山南中学.一进校园,小D就被花所吸引了(不要问我为什么),遍和一旁的种花园丁交(J)流(L)了起来. 他发现花的摆 ...

  6. JZOJ 4676. 【NOIP2016提高A组模拟7.21】模板串

    Description 科学家温斯顿从数据库中找到了一串相当长的字符串. 他正试图用一个模板串来重构这个字符串. 他可以将模板串复制多份,通过合适的方式拼接起来,使得最终的串与原串一致. 如果两个模板 ...

  7. JZOJ 4675. 【NOIP2016提高A组模拟7.21】Double-row

    Description 科学家温斯顿在一张超长的白纸上写下了两行数,每一行数有N个. 但他写完后觉得看起来有点不和谐.他希望重新编排,使得每一行数中没有相同的数. 他每次可以调换同一列的两个数. 请帮 ...

  8. JZOJ 4786. 【NOIP2016提高A组模拟9.17】小a的强迫症

    Description Input Sample Input 3 2 2 1 Output Sample Output 3 样例解释: Data Constraint Solution 首先,我们设之 ...

  9. 【JZOJ4819】【NOIP2016提高A组模拟10.15】算循环

    题目描述 输入 输出 样例输入 167 198 样例输出 906462341 数据范围 解法 令f(n)=∑ni=1i,g(n)=∑ni=1i2 易得ans=∑ni=1∑mj=1f(n−i+1)∗f( ...

  10. 【NOIP2016提高A组模拟10.15】打膈膜

    题目 分析 贪心, 先将怪物按生命值从小到大排序(显然按这个顺序打是最优的) 枚举可以发对少次群体攻击, 首先将所有的群体攻击发出去, 然后一个一个怪物打,当当前怪物生命值大于2,如果还有魔法值就放重 ...

最新文章

  1. 关于mybatis的xml文件中使用 >= 或者 <= 号报错的解决方案
  2. Tungsten Fabric SDN — for Akraino Based Network Edges
  3. 多边形填充算法-有序边表法(扫描线算法) 计算机图形学
  4. 腾讯花85亿买岛;微信发原图或泄露位置信息?高通逼因特尔把Modem芯片业务卖给苹果?小米9官网正式下架……...
  5. 因更改注册表而导致无法打开QQ文件所在文件夹
  6. Layui导航树美化
  7. 怎么看台式计算机是几位的,怎么看电脑是32位还是64位?一目了然
  8. js自定义对象 (转)
  9. IDEA 中创建多级目录
  10. VMWare关闭beep声
  11. 聚类分析-K均值matlab(一)
  12. 小项目: low版本的 员工信息程序:
  13. 信息类产品检测培训讲义-EN55022
  14. python版武侠小说男女侠姓名生成器
  15. matlab里的dsolve,matlab_dsolve
  16. Android开发两年,我要跳槽去阿里巴巴了,做个阶段总结,flutterrow高度对齐
  17. 金典指纹考勤机安装及使用操作步骤
  18. MTCNN中的重叠度IOU和非极大值抑制NMS原理及Python实现
  19. 数据挖掘的过程是什么?通俗易懂
  20. 数学与计算机学院校友会,福州大学数学与计算机科学学院厦门校友会成立

热门文章

  1. 装箱问题 BPP first fit、best fit、first fit decreasing、best fit decreasing
  2. kubernetes视频教程笔记 (25)-集群调度-调度过程说明
  3. ubuntu命令行打开vscode-insider_系统小技巧:迁移Wubi安装的ubuntu到Windows 10
  4. php pdo insertid,php-在PDO准备好的语句内使用LAST_INSERT_ID插入...
  5. 惠普电脑怎么用access_学习如何使用access帮助系统
  6. 十九、Math和Random类
  7. Ubuntu /CentOS 设置开机启动,添加自定义系统服务,自定义开机启动
  8. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_06 Properties集合_1_使用Properties集合存储数据,遍历取出集合中的数据...
  9. Vue—实例成员computed和watch
  10. java基础学习及总结