洛谷$P2168\ [NOI2015]$荷马史诗 贪心
正解:贪心
解题报告:
昂这个就哈夫曼树板子题鸭$QwQ$,只是从二叉变成多叉了$QwQ$
考虑用类似合并果子的方法?就从两个变成$k$个了嘛,一样的鸭,然后就做完了$QwQ$
注意一个细节趴$QwQ$,就可能存在选不满的情况,就先补0就成$QwQ$
$over$!
(然后记得开$ll$昂,,,$100pts->45pts$还是挺难受的了$kk$
- #include<bits/stdc++.h>
- using namespace std;
- #define fi first
- #define sc second
- #define il inline
- #define gc getchar()
- #define mp make_pair
- #define ll long long
- #define int long long
- #define P pair<ll,int>
- #define ri register int
- #define rb register bool
- #define rc register char
- #define rp(i,x,y) for(ri i=x;i<=y;++i)
- #define my(i,x,y) for(ri i=x;i>=y;--i)
- #define lb(x) lower_bound(st+1,st+st_cnt+1,x)-st
- int n,K;
- ll as;
- priority_queue< P,vector<P>,greater<P> >Q;
- il int read()
- {
- rc ch=gc;ri x=;rb y=;
- while(ch!='-' && (ch>'' || ch<''))ch=gc;
- if(ch=='-')ch=gc,y=;
- while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
- return y?x:-x;
- }
- signed main()
- {
- //freopen("2168.in","r",stdin);freopen("2168.out","w",stdout);
- n=read();K=read();rp(i,,n)Q.push(mp(read(),));while((n-)%(K-))Q.push(mp(,)),++n;
- while((int)Q.size()>=K)
- {
- P nw=mp(,);
- rp(i,,K)
- {
- P tmp=Q.top();Q.pop();nw.fi+=tmp.fi;nw.sc=max(nw.sc,tmp.sc+);
- }
- Q.push(nw);as+=nw.fi;
- }
- printf("%lld\n%lld\n",as,Q.top().sc);
- return ;
- }
洛谷$P2168\ [NOI2015]$荷马史诗 贪心的更多相关文章
- 洛谷 P2168 [NOI2015]荷马史诗 解题报告
P2168 [NOI2015]荷马史诗 题目描述 追逐影子的人,自己就是影子 --荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷 ...
- 洛谷P2168 [NOI2015] 荷马史诗 [哈夫曼树]
题目传送门 荷马史诗 Description 追逐影子的人,自己就是影子. ——荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马 ...
- 洛谷P2168 [NOI2015] 荷马史诗 (哈夫曼树)
学了哈夫曼树这道题还是好想的,基本上和构造哈夫曼树的思路一样,但是题目要求最长si的最小值,所以用两个关键字的堆,第一关键字是把出现次数作为权值,第二关键字表示从该节点开始的最长长度,权值相同时,选择 ...
- [BZOJ4198] [Noi2015] 荷马史诗 (贪心)
Description 追逐影子的人,自己就是影子. ——荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗>.但是 ...
- P2168 [NOI2015]荷马史诗
题目描述 追逐影子的人,自己就是影子 ——荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗>.但是由<奥德赛&g ...
- 【BZOJ4198】[Noi2015]荷马史诗 贪心+堆
[BZOJ4198][Noi2015]荷马史诗 Description 追逐影子的人,自己就是影子. ——荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅 ...
- 并不对劲的bzoj4198:loj2132:uoj130:p2168:[NOI2015]荷马史诗
题目大意 有\(n\)(\(n\leq10^5\))种单词,其中第\(i\)种单词在文章中的出现次数为\(w_i\) 要将每个单词替换成一个字符集为\(k\)(\(k\leq9\))的字符串,使对于任 ...
- P2168 [NOI2015]荷马史诗 k叉哈夫曼树
思路:哈夫曼编码 提交:1次(参考题解) 题解:类似合并果子$QwQ$ 取出前$k$小(注意如果叶子结点不满的话要补全),合并起来再扔回堆里去. #include<cstdio> #inc ...
- Luogu P2168 [NOI2015]荷马史诗
题目 哈夫曼树的每个叶子结点都有一个权值(表示某数据的出现频率),且\(\sum dis_ival_i\)最小. 哈夫曼树中,权值和越大的集合离根节点越近. 而每个数据对应从根节点到该叶子结点的一种编 ...
随机推荐
- Laravel 的HTTP请求#
获取请求# 要通过依赖注入的方式来获取当前HTTP请求的实例,你应该在控制器方法中类型提示Illuminate\Http\Request 传入的请求的实例通过 服务容器自动注入: <?php n ...
- uda 4.C++面向对象编程
Python vs C++ 对比课 在本课中,你将学习如何用 C++ 编写类.像以前的课程一样,你需要比较 Python 的编程方式和 C++ 中编程方式的不同. 我们直接看例子.下面是一个名为 ...
- The Top 50 Proprietary Programs that Drive You Crazy — and Their Open Source Alternatives
The Top 50 Proprietary Programs that Drive You Crazy — and Their Open Source Alternatives 01 / 22 / ...
- day5_python之协程函数
一.yield 1:把函数的执行结果封装好__iter__和__next__,即得到一个迭代器2:与return功能类似,都可以返回值,但不同的是,return只能返回一次值,而yield可以返回多次 ...
- python selenium处理iframe和弹框(一)
处理iframe和弹框 # encoding:utf-8 from selenium import webdriver import time driver = webdriver.Firefox() ...
- springmvc使用javabean作为请求参数
1 首先写两个javabean对象 person 和 address 代码如下.两个类之间的关系如代码中 package cn.bean.demo.bo; public class Person ...
- get和post的区别?
GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符 POST:一般用于 修改服务器上的资源,对所发送的信息没有限制. GET方式需要使用Request.Qu ...
- pytorch 状态字典:state_dict 模型和参数保存
pytorch 中的 state_dict 是一个简单的python的字典对象,将每一层与它的对应参数建立映射关系.(如model的每一层的weights及偏置等等) (注意,只有那些参数可以训练的l ...
- Python--day27--内置函数isinstance和issubclass方法
- Java5新特性对数组的支持
增强for循环 → for-each for (参数类型参数名 : 数组名) { 代码块 } Eg: package reviewDemo; public class Demo6 { public s ...