[CF976E]Well played!
题目描述
Recently Max has got himself into popular CCG "BrainStone". As "BrainStone" is a pretty intellectual game, Max has to solve numerous hard problems during the gameplay. Here is one of them:
Max owns n creatures, i-th of them can be described with two numbers — its health hpi and its damage dmgi. Max also has two types of spells in stock:
Doubles health of the creature (hpi := hpi·2);
Assigns value of health of the creature to its damage (dmgi := hpi).
Spell of first type can be used no more than a times in total, of the second type — no more than b times in total. Spell can be used on a certain creature multiple times. Spells can be used in arbitrary order. It isn't necessary to use all the spells.
Max is really busy preparing for his final exams, so he asks you to determine what is the maximal total damage of all creatures he can achieve if he uses spells in most optimal way.
题目大意
给你两种操作,一个操作是让hp变成原来的两倍,另一个是让dmg值变成hp值,求最大的dmg的值和。
100分解法
其实比较好想,因为每次hp变大,必然会使和对应的dmg值的差距变小或者比dmg大的更多,我们就大胆的假设把\(a\)全用在一个人身上时,这个答案最优。
那么关于\(b\)的操作,就一定是hp比dmg大的多的要用\(b\),这样我们的贪心策略就好了。
100分代码
#include<bits/stdc++.h>
#define LL long long
#define N 200005
using namespace std;
struct node{LL hp,d;}fi[N];
int n,a,b;
LL ans;
LL r(){LL x=0,w=0;char ch=0;while(!isdigit(ch))w|=ch=='-',ch=getchar();while(isdigit(ch))x=(x<<1)+(x<<3)+(ch^48),ch=getchar();return w?-x:x;}
bool cmp(node a,node b){return a.hp-a.d>b.hp-b.d;}//按照差值排序
int main(){
n=r(),a=r(),b=r();
for(int i=1;i<=n;i++)fi[i]=(node){r(),r()};
sort(fi+1,fi+1+n,cmp);
for(int i=1;i<=b;i++)ans+=max(fi[i].d,fi[i].hp);
for(int i=b+1;i<=n;i++)ans+=fi[i].d; //先算出处理b的答案
LL sum=ans;
for(int i=1;i<=b;i++)ans=max(ans,sum-max(fi[i].d,fi[i].hp)+(fi[i].hp<<a));//开始处理a的答案
sum=sum-max(fi[b].d,fi[b].hp)+fi[b].d;
for(int i=b+1;i<=n&&b;i++)ans=max(ans,sum-fi[i].d+(fi[i].hp<<a));
printf("%I64d\n",ans);
return 0;
}
[CF976E]Well played!的更多相关文章
- Educational Codeforces Round 43 E. Well played!(贪心)
E. Well played! time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- 完美解决iis下JWplayer提示Error loading media: File could not be played错误
最近开发项目需要使用JWplayer插件播放视频,但是无论换那个版本.换什么样的视频总是提示Error loading media: File could not be played错误,废了好大的劲 ...
- Educational Codeforces Round 43 E&976E. Well played! 贪心
传送门:http://codeforces.com/contest/976/problem/E 参考:https://www.cnblogs.com/void-f/p/8978658.html 题意: ...
- Codeforces976E Well played! 【贪心】
题目分析: 由于乘二的收获很大,所以我们可以证明乘的数一定是同一个,接着排序后依次选取,判断一下即可. 题目代码: #include<bits/stdc++.h> using namesp ...
- [Codeforces976E]Well played!(贪心)
[不稳定的传送门] Solution 首先可以证明,hp翻倍的操作一定是在同一个生物上最优 Code #include <cstdio> #include <algorithm> ...
- HTML5笔记2——HTML5音/视频标签详解
音视频的发展史 早期:<embed>+<object>+文件 问题:不是所有浏览器都支持,而且embed不是标准. 现状:Realplay.window media.Quick ...
- [转载]Java 8 日期&时间 API
Java 8 日期和时间 声明 本文转自http://www.journaldev.com/2800/java-8-date-localdate-localdatetime-instant,以mark ...
- html5 audio总结
前言 html5中对音频,视频播放原生支持.最近做了一个音乐播放器,得益于快过年了,才能抽出一点时间来总结一下.总的来说,html5对audio的支持非常强大, 难怪flash要死.浏览器上装播放插件 ...
- 05. Web大前端时代之:HTML5+CSS3入门系列~H5 多媒体系
Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 1.引入 概述 音频文件或视频文件都可以看做是一个容器文 ...
随机推荐
- h5小功能_classList和自定义属性data
###1.classList返回一个对象集 通过obj.classList.add()或obj.classList.remove()可操作对象的class属性值 classList.toggle( ) ...
- laravel打印sql
DB::connection()->enableQueryLog(); print_r(DB::getQueryLog());
- spark单击 搭建
http://files.cnblogs.com/files/yxnyd/spark.zip
- Oracle 检查约束check
--检查约束 create table test1( id ) primary key, email ) check (email like '%@%') ) drop table test1 ,'1 ...
- easyUI定区关联快递员js代码
easyUI定区关联快递员js代码: <script type="text/javascript"> $.fn.serializeJson=function(){ va ...
- leetcode:Roman to Integer and Integer to Roman
2015-06-03 罗马数字以前接触过I到VIII比较多,直到遇见这个题目才知道更详细.阿拉伯数字和罗马数字之间的转换最重的是了解罗马数字的规则. 罗马数字规则:(总结) 1, 罗马数字共有7个,即 ...
- 用户认证--------------auth模块
一.auth模块 from django.contrib import auth 1 .authenticate() :验证用户输入的用户名和密码是否相同 提供了用户认证,即验证用户名以及密码是否 ...
- 从主机A得到id_rsa.pub文件,在主机B创建用户danny加入该文件,实现主机A免密登录主机B
操作步骤: 1.主机A 生成公钥id_rsa.pub文件并导出该文件 root@mytest:~# ssh-keygen Generating public/private rsa key pair. ...
- 简单谈谈数据库DML、DDL和DCL的区别
一.DML DML(data manipulation language)数据操纵语言: 就是我们最经常用到的 SELECT.UPDATE.INSERT.DELETE. 主要用来对数据库的数据进行一些 ...
- python设计模式第六天【原型模式】
1.定义 使用原型模式复制的对象与原来对象具有一样的结构和数据,有浅克隆和深克隆 2.应用场景 (1)希望复制原来对象的结构和数据胆步影响原来对象 3.代码实现 #!/usr/bin/env pyth ...