poj 3253 huffman(切木棍)

【多解 · 代码超详解】POJ 3253 Fence Repair 栅栏修复【贪心 · 思维】 一、题目描述 农夫 John(FJ)想对围着牧场的一小段栅栏作修补。他测量了栅栏长度,发现一共需要 N(1 ≤ N ≤ 20000)块木板,第 i 块木板的长度是 Li 个单位(1 ≤ Li ≤ 50000)。他买了一块长木板,其长度正好足够切成 N 块这样的木板。忽略每次锯木板的损失。 FJ 发现他并没有锯子,于是他带着这块长木板找到 Don 的农场去问她能不能借一把锯子。Don 并没有把锯子借... 阅读详情

题意:切木棍,切一刀的花费是木棍的长度。要求把木棍切成给定的长度,问最小花费。

思路:切木棍的策略为哈弗曼的逆。

输入:

3
8
5
8

输出:

34

#include <stdio.h>
#include <string.h>
#define N 20005
int s[N],n,T;
void adjust(int i){
	int x = s[i];
	i <<= 1;
	while(i<=n){
		if(i+1<=n && s[i+1]<s[i])
			i++;
		if(x < s[i])
			break;
		s[i/2] = s[i];
		i <<= 1;
	}
	s[i/2] = x;
}
int getmin(){
	int x = s[1];
	s[1] = s[n--];
	adjust(1);
	return x;
}
void insert(int x){
	int i;
	s[++n] = x;
	i = n;
	while(i>=1){
		if(s[i/2] <= x)
			break;
		s[i] = s[i/2];
		i >>= 1;
	}
	s[i] = x;
}
int main(){
	freopen("a.txt","r",stdin);
	while(scanf("%d",&n)!=EOF){
		int i;
		__int64 res=0;
		memset(s,0,sizeof(s));
		for(i = 1;i<=n;i++)
			scanf("%d",&s[i]);
		for(i = n/2;i>=1;i--)
			adjust(i);
		T = n;
		for(i = 1;i<T;i++){
			int a = getmin();
			int b = getmin();
			res += (a+b);
			insert(a+b);
		}
		printf("%I64d\n",res);
	}
	return 0;
}


poj 1011/2362 dfs+剪枝(拼木棍) 题意:乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位。然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。请你设计一个程序,帮助乔治计算木棒的可能最小长度。每一节木棍的长度都用大于零的整数表示。 思路:dfs+剪枝。其中剪枝具有相当的技巧性,其中一个地方的剪枝没有想到导致tle多次。 几个明显的剪枝点(设ans为最终的答案 阅读详情

相关推荐

动态规划算法应用之 切割木棍问题

切割木棍问题 给定一根长度为 n 英尺的木棍和一个价值数组 value[],数组中的第 i 个元素值 v 代表木棍长长度为 i 时,其价值为 v。现在要求将木棍切割成若干段,使得切割后所有木棍的价值总和最大。例如给定长度为 8 的木棍,对于下图的价值数组,当把它切割成两段长度为 2 和 6 的木棍时,两木棍的价值总和最大,为 22。 而对于同样的长度 8,如果价值数组如下,那么切割成 8 段长度为 1 的木棍时取得最大价值 24=3*8。 分析:先考虑只切割一次的情况,因为切割的位置只有 n

愿君出走半生,归来时仍是少年 5316

poj3253

#include #include #include using namespace std; int main() {     int n,t;     priority_queue,greater >que;     cin>>n;     for (int i=1;i     {          cin>>t;          que.pus

Phoebe201421085的专栏 485

74HC138译码器的原理和使用

A0,A1,A2为3位二进制加权地址输入端口,A2A1A0顺序组成的3位2进制数对应的十进制数x控制使能端口Yx';例如当A2A1A0 = 101 时,其他门输出端全为高电平,只有Y5'为低电平。 Y0-Y7为8个输出端口,其输出电平由A0,A2,A3,E1,E2,E3决定。

diksan的博客 6万+

2020-处理木棒最小花费

题目描述: 现在有n根木棒,每一根都有一个长度和重量,现在有一个木棒的处理机器,小招喵要处理这n根木棒,这个机器的花费如下:处理第一木棒需要花费1,如果处理当前木棒的长度和重量都大于等于上一根木棒的长度和重量,则不需要花费,否则花费1,现在小招喵可以以任意顺序摆这些木棒。问最小花费是多少? 输入: n weight [ ] length [ ] 如: n = 5; weight ={4,9,5,2...

weixin_40300702的博客 293

Tina Linux WiFi驱动移植避坑指南:以RTL8733bs为例,详解设备树、Kconfig与固件依赖

本文详细解析了在Tina Linux上移植RTL8733bs WiFi驱动的关键步骤与常见问题,涵盖设备树配置、内核依赖、固件加载及启动时序等核心环节。通过实战案例和排查清单,帮助开发者规避SDIO控制器配置、电源管理、GPIO极性等典型陷阱,确保驱动稳定运行。

weixin_29164185的博客 258

探索Vortex开源GPGPU:RISC-V SIMT架构(4-1),Execute SFU(1)

本文详细分析了Vortex RISC-V内核6级流水线中Execute阶段的SFU(特殊功能单元)模块。重点介绍了SFU的数据流结构,包含dispatch_unit、pe_switch、csr_unit、wctl_unit和gather_unit五个子模块。文章深入解析了warp控制指令wspawn和tmc的实现机制:wspawn用于激活指定数量的warp并设置新PC值,tmc则用于控制线程掩码和warp状态。通过C代码和汇编指令的对照分析,阐明了这些指令在并行计算中的关键作用,包括线程激活、状态切换和执行

weixin_55313207的博客 1363

c语言中的切木棍有几种方法,动态规划算法应用之 切割木棍问题

切割木棍问题给定一根长度为 n 英尺的木棍和一个价值数组 value[],数组中的第 i 个元素值 v 代表木棍长长度为 i 时,其价值为 v。现在要求将木棍切割成若干段,使得切割后所有木棍的价值总和最大。例如给定长度为 8 的木棍,对于下图的价值数组,当把它切割成两段长度为 2 和 6 的木棍时,两木棍的价值总和最大,为 22。 而对于同样的长度 8,如果价值数组如下,那么切割成 8 段长度为 ...

weixin_39747577的博客 1183

Fabric V2.5 通用溯源系统——使用Hyperledger Caliper压力测试

Caliper是一款测试区块链性能的工具,支持Hyperledger Fabric、Ethereum等,支持丰富的测试配置参数,测试完成后将直接输出报告,相较于tape更加专业,但是配置稍微有些复杂。本文将一步一步配置Caliper以测试Fabric V2.5 通用溯源系统中的注册用户、查询用户、农产品上链、农产品查询的区块链性能。

TrueTechLabs 官方博客 1395

切木棍

题目描述 你有一根长度为n的木棍(n是整数),现在需要你用这个木棍做一个矩形(但是不能是正方形),矩形的每条边的长度为整数。你可以将这个木棍切成四份,作为矩形的四条边,请问你组成多少种不同的矩形? 输入 对于每组数据,输入一个整数,即为木棍的长度n(1&lt;=n&lt;=105) 输出 对于每组数据,输出一个整数,表示能组成的矩形种数。 样例输入 6 20 样例输出 1 ...

yuehailin的博客 1506

西门子G120变频器在立体仓库堆垛机应用参数设置

本文详细介绍了G120 CU240E及CU250S变频器的参数设置流程。主要内容包括:1)快速调试步骤,从新建项目、扫描节点到设置电机类型、负载类型等参数;2)抱闸参数设置方法;3)参数下载异常时的处理方案。重点说明了通过STARTER软件进行向导式调试的完整过程,包括电机铭牌参数输入、识别方式选择等关键环节,并提示了通讯连接注意事项。当下载失败时,提供了通过导入导出项目文件解决问题的具体方法。

xdpcxq的专栏 863

RK3568实现蓝牙音箱功能

A2DP旨在通过蓝牙连接传输高质量的立体声音频流。它使用的基本压缩算法是SBC(Sub-Band Coding)来减小音频数据的大小,同时保持高音质,SBC压缩虽然效率较低,但是是必须支持的基本备用方案。A2DP还支持其他高级编解码器,例如AAC、aptX和LDAC,这些编解码器比SBC提供更好的音质,但这些编解码器的支持取决于设备本身的支持情况。注意A2DP协议要与AVRCP协议区分开。A2DP是传输音频的,而AVRCP是用来控制音频的。这里我用到的是RK3568 Android11。

leikko的博客 1173

POJ 3253 (贪心算法+优先队列的基本用法)

参考https://www.jianshu.com/p/50f1d4e0555c 贪心算法: 1.动态规划的一种特殊情况。 2.通过求局部最优解来获得整体最优解。 3.使用贪心算法的前提是该问题具有最优子结构。 4.通过可循环执行的语句实现。 5.一般都为逆序思维 常用于: 1.一般背包问题 2.活动安排问题 3.最小生成树 4.找零钱问题 5.均分纸牌问题 6.最大整数...

GD_ONE的博客 1770

优先队列简单三题:POJ3253 POJ 2431 POJ 3614

POJ 3253 题意:将一块很长的模板分成N块,其长度为L1 L2....L

u011481752的专栏 1009

tar解压报错 gzip: stdin: unexpected end of file tar: Unexpected EOF in archive

错误现象: [root@centos7-xinsz08 ~]# tar xf prometheus-2.7.2.linux-amd64.tar.gz gzip: stdin: unexpected end of file tar: 归档文件中异常的 EOF tar: 归档文件中异常的 EOF tar: Error is not recoverable: exiting now 错误原因排查 ...

互联网老辛 2万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

(哈夫曼树)Entropy--HDOJ

Entropy Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 396 Accepted Submission(s): 223Problem Description An entropy encoder is a data encoding

MM_Silence 305

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

leetcode 5486. 切棍子的最小成本

5486. 切棍子的最小成本 有一根长度为 n 个单位的木棍,棍上从 0 到 n 标记了若干位置。例如,长度为 6 的棍子可以标记如下: 给你一个整数数组 cuts ,其中 cuts[i] 表示你需要将棍子切开的位置。 你可以按顺序完成切割,也可以根据需要更改切割的顺序。 每次切割的成本都是当前要切割的棍子的长度,切棍子的总成本是历次切割成本的总和。对棍子进行切割将会把一根木棍分成两根较小的木棍(这两根木棍的长度和就是切割前木棍的长度)。请参阅第一个示例以获得更直观的解释。 返回切棍子的 最小总成本 。

Qin_酱的博客 1050

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【算法学习】切割木棍问题——动态规划

问题描述: 假设,有一条长度为n的木棍,已知木棍的销售价格Pi与木棍长度i有关,i = 1,2,3,...n.问,怎样切割能获得最大收益。 长度为0的木棍收益肯定是0了,即profit[0] = 0. 切割长度(seg) 1 2 3 4 5 6 7 8 9 10 销售价格(pi) 1 5 8 9 10 17 17 20 24

依然那霖哥 1万+

Fence Repair(P3253)

要用long long 不然就是一直在WA,,发现数组不够大的时候,有时会显示WA,有时会显示Rumtime Error #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int m

jiangjiashi的博客 671

哈夫曼树(基于优先队列最小堆)

实验三、哈夫曼编码 一、实验内容输入一段文本,计算其中每一个字符的哈夫曼编码,输出编码后文本的长度。哈夫曼编码作为一种变长编码方式,在文件/图像压缩领域有着重要的应用。 二、设计思路给定n个树叶的权值,改造带权路径总长最短的最优二叉树的算法由哈夫曼给出。a. 对个权值进行排序,满足b. 计算作为中间节点的权,的左儿子是,右儿子是. 在权序列中删除, 加入. 若, 结束,否则转a.       树的...

da_kao_la的博客 3642

poj 3253Fence Repair--动态规划

#include #include using namespace std; int cmp(const void* a,const void* b) { return *(int*)a-*(int*)b; } int main() { int n; while(scanf("%d",&n)!=EOF) { __int64 *a=new __int64[n+1

u011964544的专栏 453

数据结构树之切腹攻略

树 —— 一种一对多的数据结构。 目录 1. 树的相关术语 2. 树形结构的各种表示法 2.1 树形表示法 2.2 形式语言表示法 2.3 文氏图表示法 2.4 嵌套括号表示法 2.5 凹入表表示法 2.6 图书目录,杜威表示法 3. 森林 3.1 树转化成二叉树 3.2 二叉树转化成树 3.3 森林转化成二叉树 3.4 二叉树转化成森林 4. 森林的遍历 4....

闲狗的博客 5020

BZOJ 1044 HAOI2008 木棍分割 二分答案+动态规划

题目大意:给定n个连在一起的木棍,分成m+1段,使每段最大值最小,求最大值的最小值及最大值最小时分割的方案数 第一问水爆了……二分答案妥妥秒过 第二问就有些难度了 首先我们令f[i][j]表示用前j个棒♂子得到i段的方案数 诶我没打什么奇怪的符号吧 于是我们有动规方程 f[i][j]=Σf[i-1][k] (sum[j]-sum[k] 这个最坏情况下是O(m*n^2)的,肯定挂

世界 1770

贪心算法-----poj 3253 Fence Repair(切木板)

Description Farmer John wants to repair a small length of the fence around the pasture. He measures the fence and finds that he needs N (1 ≤ N ≤ 20,000) planks of wood, each having some integer lengt...

杨氏计算机知识整理 5144

POJ 1011 木棍问题

问题重述: Description 乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位。然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。请你设计一个程序,帮助乔治计算木棒的可能最小长度。每一节木棍的长度都用大于零的整数表示。 Input 输入包含多组数据,每组数据包括两行。第一行是一个不超过64的整数,表示砍断之后

Ac Dream 6149
上一篇: poj 3254 状态压缩(种草)
下一篇: poj 1419 最大团
dumeichen
博客等级 码龄13年 55粉丝 475原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值