第九章例题 B - The Tower of Babylon UVA - 437

ChangeMamba训练调试 此仓库的代码是在 Linux 系统下运行的。我们尚未测试是否能在其他操作系统下运行。 首先需要安装VMama仓库。以下安装顺序取自VMama仓库。克隆该版本库并导航至项目目录: 建议设置 conda 环境并通过 pip 安装依赖项。使用以下命令设置环境: 创建并激活新的 conda 环境 安装依赖项 检测和分割任务的依赖库(在 VMamba 中为可选项) 二、下载预训练权重 另外,请下载VMamba-Tiny, VMamba-Small, and VMamba-Base在ImageNet上的预训练权重并把它 阅读详情

/*SE:wn------王宁*/

刘汝佳大神源码 && 我的AC代码(可能更简洁易懂)+ 我的前期思路、解说和总结 &&我前期的失败代码

 

// Rujia Liu
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

#define REP(i,n) for(int i = 0; i < (n); i++)

const int maxn = 30 + 5;
int n, blocks[maxn][3], d[maxn][3];

void get_dimensions(int* v, int b, int dim) {
  int idx = 0;
  REP(i,3) if(i != dim) v[idx++] = blocks[b][i];
}

int dp(int i, int j) {
  int& ans = d[i][j];
  if(ans > 0) return ans;
  ans = 0;
  int v[2], v2[2];
  get_dimensions(v, i, j);
  REP(a,n) REP(b,3) {
    get_dimensions(v2, a, b);
    if(v2[0] < v[0] && v2[1] < v[1]) ans = max(ans, dp(a,b));
  }
  ans += blocks[i][j];
  return ans;
}

int main() {
  int kase = 0;
  while(scanf("%d", &n) == 1 && n) {
    REP(i,n) {
      REP(j,3) scanf("%d", &blocks[i][j]);
      sort(blocks[i], blocks[i]+3);
    }
    memset(d, 0, sizeof(d));
    int ans = 0;
    REP(i,n) REP(j,3) ans = max(ans, dp(i,j));
    printf("Case %d: maximum height = %d\n", ++kase, ans);
  }
  return 0;
}
/*SE:wn------王宁*/
/*------------失败的思路如下,失败的代码会放在最后面
 
让我们一起想想想,
  让我们一起想想想~
 首先,放在最上面的应该是让最小的两条边作为底座
 让最长的那条边作为高,因为是最上面不需要再放东西了
 否则,底变大,高变小,绝对划不来
 所以是否可以将所有的x,y,z排好序?
 x<y<z
 然后对于第二高的,应该选取长和宽最接近且大于第一高的
 否则对于不能满足大于条件的也不能作为其它的方块的底座
 如果为了和上第一高的,我强行改变长和宽最接近但是不能满足
 严格大于条件的长和宽,是否可以呢?如果不会影响到下一层绝对可以
 即新x(i-1)<xi<x(i+1),y(i-1)<yi<y(i+1),当然这个变换要先将z变换成y
 可是如果变换了导致下一层不能正常工作了呢,如果不完全大于下一层怎么办?
 如果完全大于还好说,排到下一层去就好了
 原则是底座最小,高度最大
 底座不能撑起上一层更不能撑起下面的层,只能变换尺寸作为新的底座
 插入到某个序列中——这样以后或许还可以抢救一下
---------实践之后失败的反思-----------
的确可以排序,可是排序的标准如何?问题还是出在不完全大于或者更加隐蔽的地方
中间还是会出现(可能,仅作猜测)一个严格逼近一个元素,另外一个则不一定,而另外一个
相对配对的那个对其他的砖更加友好……

---------看来还是要去dp---------------TAG,wait for me!

---------吼啊~ AC了呀~---------------- 
大佬的表示方式有点抽象and高级
所以我用了一维的来表示状态——因为按照高度来划分,其实
每种砖只有三种使用方式——while we assume that (x<y) 
思路观看 紫书P263 嵌套矩形如何输出所有路径(DAG上的动态规划) 即可
这里是实现的代码网址
https://blog.youkuaiyun.com/JXUFE_ACMer/article/details/81448400

在这里学习到的有:
1.DAG编写实操 
2.边获取答案边求值 for(i=0;i<3*n;i++) { magic=max ( magic,deepmind(i) ) ;}
 */
 #include<bits/stdc++.h>
using namespace std;
const int maxn=35;
typedef struct info{
	int x,y,z;
}block;
vector<block> v;
int dp[3*maxn];
bool vis[3*maxn];
int n;
int deepmind(int i){
	if(vis[i]) return dp[i];
	else{
		vis[i]=1;
		for(int j=0;j<3*n;j++){
			if(v[j].x<v[i].x&&v[j].y<v[i].y){
				dp[i]=max(dp[i],v[i].z+deepmind(j));
			}
		}
		return dp[i];
	}
}
int main()
{
	int i,j,magic,a[3],sum,kase=0;
	block t;
	while(~scanf("%d",&n)&&n){
		v.clear();
		memset(dp,0,sizeof(dp)); memset(vis,0,sizeof(vis));
		for(i=0;i<n;i++){
			scanf("%d%d%d",&a[0],&a[1],&a[2]);
			sort(a,a+3); 
			t.x=a[0]; t.y=a[1]; t.z=a[2]; v.push_back(t); dp[v.size()-1]=t.z;
			t.x=a[0]; t.y=a[2]; t.z=a[1]; v.push_back(t); dp[v.size()-1]=t.z;
			t.x=a[1]; t.y=a[2]; t.z=a[0]; v.push_back(t); dp[v.size()-1]=t.z;
		}
		magic=-1;
		for(i=0;i<3*n;i++) { magic=max ( magic,deepmind(i) ) ;}
		printf("Case %d: maximum height = %d\n",++kase,magic);
	}
	return 0;
}

 

失败的版本:

#include<bits/stdc++.h>
using namespace std;
const int maxn=35;
typedef struct Info{
	int x,y,z;
	bool operator < (const Info &a) const{
		
		if(a.y != y)
		return a.y < y ;
		if(a.x != x)
		return a.x < x ;
	}
}block;
int main()
{
	int n,i,j,magic,a[3],sum;
	priority_queue<block> pq;
	block b,cmp,t;
	while(~scanf("%d",&n)&&n){
		for(i=1;i<=n;i++){
			scanf("%d%d%d",&a[0],&a[1],&a[2]);
			sort(a,a+3); 
			t.x=a[0]; t.y=a[1]; t.z=a[2]; pq.push(t);
			t.x=a[0]; t.y=a[2]; t.z=a[1]; pq.push(t);
			t.x=a[1]; t.y=a[2]; t.z=a[0]; pq.push(t);
		}
		printf("最顶上的这块砖x y z 分别等于%d %d %d\n",pq.top().x,pq.top().y,pq.top().z); 
		sum=pq.top().z; cmp=pq.top(); pq.pop();
		while(!pq.empty()){
			b=pq.top(); pq.pop();
			printf("现在的这块砖x y z 分别等于%d %d %d\n",b.x,b.y,b.z); 
			if(b.x>cmp.x&&b.y>cmp.y) {sum+=b.z; cmp=b;} 
		}
		printf("%d\n",sum);
	}
	return 0;
}

 

【Unity】Gif图片播放插件(支持UI及模型纹理渲染两种模式) unity本身不支持GIF格式文件直接渲染, 因此一般的做法是通过加载图片,通过代码控制其循环播放、停止等,模拟动画效果,本文简单介绍一下某个现有开源工具,感谢开源作者。 阅读详情

相关推荐

【自动驾驶学习笔记——Prescan和Simulink 学习笔记和问题记录(1)】

主要记录一些Prescan/Simulink 联合仿真出现的问题。

ly1336545868的博客 1464

B - The Tower of Babylon UVA - 437

首先你知道这道题的题意是,在每个立方体的长和宽由上到下依次递减的情况下,求最大高度的问题。 1.一个立方体的长宽高可以有六种形式。 2.一个立方体可以用六种状态来储存。 3.每种状态的值就是它的高。 4.d(i)表示第i种状态它的高。 5.如果有x种立方体,那么就有6*x种状态,那么把这些状态排序 把长和宽大的放在前面 小的放在后面,从最大的长宽开始遍历,那么dp[i]=max[dp[i

以梦为马,不日抵达。 293

若依框架(ruoyi vue版)集成jeecg积木报表整体完整实用教程(超长篇幅耐心阅读)

若依框架(ruoyi vue版)集成jeecg积木报表整体完整实用教程,主要说明jeecg积木报表的集成、jeecg积木报表嵌入若依菜单、token权限控制,以及iframe嵌入表格等内容。

weixin_53067723的博客 4641

The Tower of Babylon UVA - 437

题意:有n(n &lt;= 30)种立方体,每种都有无穷多个。要求选一些立方体摞成一根尽量高的柱子(可以自行选择那一条边作为高),使得每个立方体的底面长款分别严格小于它下方立方体的底面长宽。 思路:在任何时候,只有顶面的尺寸会影响到后续决策,因此可以用二元组(a,b)来表示“顶面尺寸为a*b这个状态”。因为每次增加一个立方体以后顶面的长和宽都会严格减小,所以这个图是DAG,可以套用DAG算法。 ...

沐妖的博客 249

保姆级教程:用MS建完分子模型,如何一键转成LAMMPS能用的data文件?

本文详细介绍了如何将Materials Studio(MS)构建的分子模型转换为LAMMPS可用的data文件的全流程。重点讲解了力场选择、环境配置、转换命令参数解析及常见问题排查,帮助初学者快速掌握MS与LAMMPS之间的数据转换技巧,特别适合计算材料学领域的研究人员。

weixin_42665255的博客 471

有源滤波电路设计

目录一、低通滤波器1、同相输入低通滤波器(1)一阶低通滤波电路(2)二阶低通滤波电路(压控电压源;Sallen-Key)2、反相输入低通滤波器(1)一阶低通滤波电路(2)二阶低通滤波电路(无限增益多路反馈)二、高通滤波器1、同相输入高通滤波器(1)一阶高通滤波电路(2)二阶高通滤波电路(压控电压源;Sallen-Key)2、反相输入高通滤波电路(1)二阶高通滤波电路(无限增益多路反馈) 一、低通滤波器 1、同相输入低通滤波器 (1)一阶低通滤波电路 即在一阶无源低通滤波器的基础上,加了一个集成运放。 它的

qq_41873236的博客 3万+

DAG 动态规划 巴比伦塔 B - The Tower of Babylon

题目:The Tower of Babylon 这是一个DAG 模型,有两种常规解法 1.记忆化搜索, 写函数,去查找上一个符合的值,不断递归 2.递推法 方法一:记忆化搜索 #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring>...

weixin_30502965的博客 173

保姆级教程:用SOEM主站搞定汇川SV660N伺服驱动器的EtherCAT通讯(附完整C代码)

本文提供了一份详细的SOEM主站与汇川SV660N伺服驱动器EtherCAT通讯的实战教程,涵盖环境搭建、状态机理解、PDO映射配置、CiA402状态机实战、实时性能优化及诊断调试等关键步骤,并附完整C代码示例,帮助开发者快速实现工业级EtherCAT控制。

weixin_28292761的博客 301

poj2241 - The Tower of Babylon

想看更多的解题报告: http://blog.csdn.net/wangjian8006/article/details/7870410                                   转载请注明出处:http://blog.csdn.net/wangjian8006 题目大意:有n个砖块,每个砖块有长宽高,每个砖块有无限个,问叠起来最高有多高,一个砖块能够放在另一个砖

贰圣 1134

Windows报错“The system cannot find the file specified“的PATH环境变量解决方案

摘要: Windows系统中出现"The system cannot find the file specified"错误通常因PATH环境变量配置问题导致。本文提供解决方案:1)检查并修正PATH变量(通过命令行或图形界面添加缺失路径);2)确认程序安装路径及拼写无误;3)恢复误改的系统变量。示例演示了Python路径配置及无效路径清理方法,建议谨慎修改变量、使用绝对路径并定期检查。附参考表格详述操作步骤,帮助用户高效解决问题并优化系统环境。

shejizuopin的博客 3515

AMBA-CHI协议详解(一)

CHI体系结构是一种可扩展、一致性的集线器接口和片上互联,可由多个组件使用。CHI体系结构允许根据性能、功耗和面积系统要求灵活地进行组件连接拓扑。硬件一致性使系统组件能够共享内存,而无需维护软件缓存以保持一致性。如果两个组件对同一存储器位置的写入可被所有组件以相同的顺序观察到,则存储器区域是一致的。

Crazzy_M的博客 1万+

紫书第九章-----动态规划初步(例题9-2 The Tower of Babylon UVA - 437)

本题类似于嵌套矩形问题,笔者受嵌套矩形问题启发,解决了本道题目。把本题中所有矩形种类求出来(3*n),接下来就是嵌套矩形问题了。 /* 【思路分析】 先把长方体的所有种类存储起来,然后用这些长方体进行dp 大指向小则有边,建立图,因为总是严格的大指向小,所以 一定是有向无环图(DAG)。注意一个长方体可能是多种长方 体,比如(10,20,30),分别以10,20,30为高,则有3种长方体。 题目...

ccnuacmhdu的博客 267

RK3568平台开发系列讲解(DMA篇)DMA engine使用

DMA传输属于异步传输,在启动传输之前,slave driver需要将此次传输的一些信息(例如src/dst的buffer、传输的方向等)提交给dma engine(本质上是dma controller driver),dma engine确认okay后,返回一个描述符(由struct dma_async_tx_descriptor抽象)。DMA_PREP_PQ_DISABLE_P、DMA_PREP_PQ_DISABLE_Q、DMA_PREP_CONTINUE,PQ有关的操作,TODO。

内核笔记 1723

算法竞赛入门经典第九章例题9-2 uva 437 巴比伦塔

题意:给n种砖块,每种可以随便用几次,每块有长宽高,要求把它们磊起来,求放在上面的砖块的长宽严格小于下面的砖块。 思路:考虑用dp 紫书上往前翻几页有详细的解法,DAG上的最长路问题,我用了n^2的记忆化搜索,以前用先排序再dp好像可以达到O(n)的效率。 #include #include #include #include #define maxn 1100 using n

... 780

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

P315 GCD等于XOR UVa12176 “不难发现”的解释 以及完整推导过程

1. a-b&lt;=a xor b, 对于在同一个数位相同的二进制位值,xor和减法的效果都是一样的。 对于在同一个数位不同的二进制位值,xor恒等于1,而减法可能向高位借1. 2.gcd(a,b)&lt;=a-b (假设a&gt;b) 因为gcd(a,b)=gcd(b,a%b) 设a=qb+r  r=a%b=a-qb gcd(b,a%b)=gcd(b,a-qb) 此时最大公因数不...

JXUFE_ACMer的博客 381

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

第八章习题 E - Paper Folding

/*SE:wn------王宁*/ /*这一题我是按照这位 https://blog.csdn.net/weizhuwyzc000/article/details/47038989 的方式写的,我主要讲一下自己实现的注意点和一些体会*/ /*首先是题意的理解:自己去折纸只提示一点,最底下那“张”永远是最小单位的纸张区域 然后关于规律和路线思想的提出,请看原网站。 详解路线:知道路线之后从当前位置...

JXUFE_ACMer的博客 349

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

第十章例题 A - Colossal Fibonacci Numbers! UVA - 11582

/* SE:wn------王宁 1.f数组的值显然是不重复的,因为是递增数列 2.但是它每个元素都%n,必定是有重复的规律,否则里面a^b那么大怎么找对应的? 刘汝佳大神说因为余数最多n中,所以最多n*n项就会出现重复我不理解 3.所以找出重复的次数,到时候里面的 a^b 取余再到存放的数组里面去找就行了 4.关于a和b我一开始以为他们太大存不下,然而用unsigned long long ...

JXUFE_ACMer的博客 347

第九章例题 E - Jin Ge Jin Qu hao

/*SE:wn------王宁*/ 这道背包思路一点都不难想,大致实现也不难写。 最难的是什么?是在边界值的初始化和特殊情况的处理。 So, let's solve it!   /*SE:wn------王宁*/ #include&lt;bits/stdc++.h&gt; using namespace std; /* dp[i][j]是说前i首歌在时刻j所能完成的歌的数目 一. 初始化...

JXUFE_ACMer的博客 341

第十一章例题 UVa753 A Plug for UNIX

       “完全不知,往日为何,能与我……” 好吧我想说完全不知道为什么我觉得这几天对图论的学习都很有意思,学起来又酷又炫的~ 刘汝佳大神的源码我会放在后面。 /*SE:wn------王宁*/ /*回过头去学二分图匹配的匈牙利算法,才发现原来这一题就是二分图匹配啊 关键的一点就是这个转换器是给带插头的设备使用的 有点,有边——int n,m; 要知道和点连接的边——void add...

JXUFE_ACMer的博客 330

第八章例题 UVa11134 Fabled Rooks

/*SE:wn------王宁*/ 首先是对行列不相关的理解,只要行列都各自满足不相关即可——好像和没说一样,但是如果不能理解这个也不能理解剩下的做法,一定要先想清楚的确可以用一维的方法解题。 接下来是对那个solve函数的for循环解读——贪心思想,然后是做这道题目遇到的bug以及修复方法 解读——贪心思想 /* 1. 未被使用过 2. 能在前端满足包含条件  3. 后端要尽可能靠近当前...

JXUFE_ACMer的博客 328

第十一章例题 uva 1151 C- Buy or Build

自己用dfs实现枚举 + 对刘汝佳大神用二进制枚举的解读  /*SE:wn------王宁*/ /*Buy or Build 输入输出解读 输入: 城市编号从1-n 1.告诉你有几个case 2.1 n of cities in the country (1 ≤ n ≤ 1000) 2.2 followed by the number q of existing subnetworks ...

JXUFE_ACMer的博客 327

第九章例题 D- Unidirectional TSP

/*SE:wn------王宁*/ 这是一道简单的多阶段决策题目,但是要注意细节处理。 #include&lt;bits/stdc++.h&gt; using namespace std; const int maxr=15; const int maxc=105; int mat[maxr][maxc]; int d[maxr][maxc]; int path[maxc]; int mai...

JXUFE_ACMer的博客 318

第九章例题 C - Tour

/*SE:wn------王宁*/ #include&lt;bits/stdc++.h&gt; using namespace std; const int maxn=55; double x[maxn],y[maxn],dp[maxn][maxn],dist[maxn][maxn]; /*第一部分是求线段长度,no need for explanation 关键是第二部分 我之前只有...

JXUFE_ACMer的博客 315

第九章例题-A A Spy in the Metro

/*SE:wn------王宁*/ 先贴出刘汝佳大神的源码:只有在开头有改动,因为他的遇到0不能正常结束。 然后是贴出自己的源码和注释,注释很长,挑能看懂的看,有一些是解读,有一些是产生脑洞后的思考。 还没ac的看解读就行了,ac的不妨也看一下我的困惑和思考过程欢迎批评与指正。 大神源码在此,boom~: // UVa1025 A Spy in the Metro // Rujia L...

JXUFE_ACMer的博客 309

紫书P263 嵌套矩形如何输出所有路径(DAG上的动态规划)代码与解读

/*SE:wn------王宁*/ 我加了一些注释——划重点+帮助思考。 源代码出处:https://blog.csdn.net/qq_36300700/article/details/78397748   #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;mat...

JXUFE_ACMer的博客 307

第九章例题 9-20 Dropping water balloons UVA - 10934

/*SE:wn------王宁*/ 前面是正解,后面的是我自己第一次尝试的代码——仅仅走出了第一步,很有借鉴意义,我也在那里做了一下总结——放在代码中的那一段注释。 /*SE:wn------王宁*/ /*T - Dropping water balloons UVA - 10934 */ #include&lt;bits/stdc++.h&gt; using namespace std; c...

JXUFE_ACMer的博客 305
上一篇: 第九章例题 C - Tour
下一篇: 第九章例题 E - Jin Ge Jin Qu hao
JXUFE_ACMer
博客等级 码龄9年 20粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值