ecnu 1244
SERCOI 近期设计了一种积木游戏。每一个游戏者有N块编号依次为1 ,2,…,N的长方体积木。
对于每块积木,它的三条不同的边分别称为”a边”、“b边”和”c边”。
游戏规则例如以下:
1. 从N块积木中选出若干块,并将它们分成M(l<=M<=N)堆,称为第1堆。第2
堆…。第M堆。
每堆至少有1块积木。而且第K堆中随意一块积木的编号要大于第K+1堆中随意一块积木的编号(2<=K<=M)。
2. 对于每一堆积木,游戏者要将它们垂直摞成一根柱子,并要求满足以下两个条件:
(a). 除最顶上的一块积木外。随意一块积木的上表面同且仅同还有一块积木的下表面接触,
而且要求以下的积木的上表面能包括上面的积木的下表面,
也就是说。要求以下的积木的上表面的两对边的长度分别大于等于上面的积木的两对边的长度。
(b). 对于随意两块上下表面相接触的积木,以下的积木的编号要小于上面的积木的编号。
最后。依据每人所摞成的M根柱子的高度之和来决出胜负。
请你编一程序,寻找一种摞积木的方案,使得你所摞成的M根柱子的高度之和最大。
思路:
顺序可略。多阶段决策
DP[col][used][top][face]代表在第 col 柱时。已经用了 used 个方块,第 col 上面是第 top 块的 face 面
1.当前木块放在第col上面。2.当前木块另起col。3.舍弃
#include <iostream>
#include <cstring>
using namespace std; struct Block{
int lens[3];
}; Block blocks[110];
int DP[110][110][110][3]; int M, N; int judge( int bellow, int f1, int up, int f2 ){ int bellow_a = blocks[bellow].lens[f1];
int bellow_b = blocks[bellow].lens[( f1 + 1 ) % 3];
int up_a = blocks[up].lens[f2];
int up_b = blocks[up].lens[( f2 + 1 ) % 3]; if( ( up_a <= bellow_a && up_b <= bellow_b ) ||
( up_a <= bellow_b && up_b <= bellow_a ) )
return blocks[up].lens[( f2 + 2 ) % 3]; return 0;
} int res_search( int col , int used, int top, int face ){ if( DP[col][used][top][face] )
return DP[col][used][top][face]; if( col == M && used == N )
return 0; if( col != M && used == N )
return -1; int res = 0; if( col ){
for( int f = 0; f <= 2; ++f ){ int ok = judge( top, face, used + 1, f ); if( ok )
res = max( res, res_search( col, used + 1, used + 1, f ) + ok ); }
} if( col < M ){
for( int f = 0; f <= 2; ++f ){
res = max( res, res_search( col + 1, used + 1, used + 1, f ) + blocks[used + 1].lens[( f + 2 ) % 3] );
}
} res = max( res, res_search( col, used + 1, top, face ) );
DP[col][used][top][face] = res; return res; } int main(){ while( cin >> N >> M ){ for( int i = 1; i <= N; ++i ){
cin >> blocks[i].lens[0] >> blocks[i].lens[1] >> blocks[i].lens[2];
} memset( DP, 0, sizeof( DP ) ); int res = res_search( 0, 0, 0, 0 ); cout << res << endl;
} return 0;
}
ecnu 1244的更多相关文章
- 【51Nod 1244】莫比乌斯函数之和
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1244 模板题... 杜教筛和基于质因子分解的筛法都写了一下模板. 杜教筛 ...
- 51nod 1244 莫比乌斯函数之和
题目链接:51nod 1244 莫比乌斯函数之和 题解参考syh学长的博客:http://www.cnblogs.com/AOQNRMGYXLMV/p/4932537.html %%% 关于这一类求积 ...
- DP URAL 1244 Gentlemen
题目传送门 /* 题意:已知丢失若干卡片后剩余的总体积,并知道原来所有卡片的各自的体积,问丢失的卡片的id DP递推:首先从丢失的卡片的总体积考虑,dp[i] 代表体积为i的方案数,从dp[0] = ...
- ural 1244. Gentlemen
1244. Gentlemen Time limit: 0.5 secondMemory limit: 64 MB Let's remember one old joke: Once a gentle ...
- 51nod 1244 莫比乌斯函数之和(杜教筛)
[题目链接] http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1244 [题目大意] 计算莫比乌斯函数的区段和 [题解] 利 ...
- ECNU 3260 - 袋鼠妈妈找孩子
题目链接:http://acm.ecnu.edu.cn/problem/3260/ Time limit per test: 1.5 seconds Time limit all tests: 10. ...
- ECNU 3263 - 丽娃河的狼人传说
一定要纪念一下第一道在比赛中自己做出来的贪心. 题目链接:http://acm.ecnu.edu.cn/problem/3263/ Time limit per test: 1.0 seconds T ...
- 【51nod-1239&1244】欧拉函数之和&莫比乌斯函数之和 杜教筛
题目链接: 1239:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1239 1244:http://www.51nod. ...
- LightOJ 1244 - Tiles 猜递推+矩阵快速幂
http://www.lightoj.com/volume_showproblem.php?problem=1244 题意:给出六种积木,不能旋转,翻转,问填充2XN的格子有几种方法.\(N < ...
随机推荐
- laravel 5.5 项目报错
报错内容: ErrorException (E_WARNING) Declaration of App\Observers\SiteObserver::updated($site) should be ...
- NuSOAP简介 php中使用webservice
许多机构已经采用了Apach和PHP作为他们的Web应用环境.在Web services模式中采用PHP可能看上去可能会比较难.但是事实上,搭配NuSoap,你可以轻松的应用PHP构建SOAP的客户端 ...
- AWS中国EC2 公网IP登录免pemKEY修改shh 配置文件
个人使用记录 1:KEY 授权 chmod 400 VPN.pem 2:连接 ssh -i "VPN.pem" ubuntu@ec2-54-183-119-93.us-west-1 ...
- Springboot+swagger2的接口文档开发
一.创建一个SpringBoot项目 1. 2. 3. 4. 把web里的web选中,SQL里选择自己需要的,点击next 二.创建各项所需的controller,configure等 1. 项目布局 ...
- Fastlane基础介绍
Fastlane是什么 Git地址: Fastlane 文档地址:Fastlane Document Fastlane是一整套的客户端CICD工具集合.Fastlane可以非常快速简单的搭建一个自动化 ...
- 【BZOJ 1588】 [HNOI2002]营业额统计
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 每天的最小波动值指的是和之前所有天的差值的绝对值中的最小值. 用set.的lower_bound函数. 每次找和他差值最小的数字就好 ...
- HDU 2222 Keywords Search AC自己主动机入门题
单词统计的题目,给出一些单词,统计有多少单词在一个文本中出现,最经典的入门题了. AC自己主动机的基础: 1 Trie. 以这个数据结构为基础的,只是添加一个fail指针和构造fail的函数 2 KM ...
- android 自己定义标签的使用,实现扁平化UI设计
2014年8月6日11:06:44 android对自己定义标签的使用.实现扁平化UI设计: 1.attrs.xml文件里自己定义标签 如: <?xml version="1.0&qu ...
- bzoj1003: [ZJOI2006]物流运输(DP+spfa)
1003: [ZJOI2006]物流运输 题目:传送门 题解: 可以用spfa处理出第i天到第j都走这条路的花费,记录为cost f[i]表示前i天的最小花费:f[i]=min(f[i],f[j-1] ...
- Getting Started with MongoDB (C# Edition)
https://docs.mongodb.com/getting-started/csharp/ 概览 Welcome to the Getting Started with MongoDB guid ...