题目链接:https://zhixincode.com/contest/18/problem/I?problem_id=267

题目描述

输入描述

输出描述

一行一个整数表示答案。

样例输入 1

3
20 1
15 10
20 2

样例输出 1

60

题解:

首先肯定的是,这 $n$ 次选择必然是分为两段的,前一段全部是召唤,后一段全部是加攻。

然后我们只需要考虑,这两段的数目即可,然后我们假设这个函数和最后的总攻击力是一个单峰函数,就可以上三分。

那么接下来考虑在确定多少张牌召唤,多少张牌加攻的前提下,怎么安排顺序:

因为生物数目是确定的 $x$,所以我们可以知道一张牌它如果 $b \cdot x - a$ 越大,把它选成加攻击力就更赚,因此可以排个序后确定哪些牌是召唤、哪些牌是加攻,从而最终确定总攻击力。

最后的时间复杂度就是 $O(\log_{1.5}n \cdot n \cdot \log_{2} n)$。

AC代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> P;
#define a(p) (p.first)
#define b(p) (p.second)
const int maxn=1e5+; int n,x;
P c[maxn];
inline bool cmp(const P& u,const P& v) {
return b(u)*x-a(u)<b(v)*x-a(v);
}
ll check(int mid)
{
x=mid, sort(c+,c+n+,cmp);
ll res=;
for(int i=;i<=n;i++) res+=(i<=x)?a(c[i]):b(c[i])*x;
return res;
} int main()
{
ios::sync_with_stdio();
cin.tie(), cout.tie(); cin>>n;
for(int i=;i<=n;i++) cin>>a(c[i])>>b(c[i]);
int l=, r=n; ll ans=;
while(l<=r)
{
if(r-l<=)
{
for(int i=l;i<=r;i++) ans=max(ans,check(i));
break;
}
int lmid=l+(r-l)/, rmid=l+(r-l)*/;
ll lres=check(lmid), rres=check(rmid);
if(lres<=rres) l=lmid;
else r=rmid;
}
cout<<ans<<endl;
}

CCPC-Wannafly Winter Camp Day4 Div1 - 咆咆咆哮 - [三分+贪心]的更多相关文章

  1. 2020 CCPC Wannafly Winter Camp Day1 C. 染色图

    2020 CCPC Wannafly Winter Camp Day1 C. 染色图 定义一张无向图 G=⟨V,E⟩ 是 k 可染色的当且仅当存在函数 f:V↦{1,2,⋯,k} 满足对于 G 中的任 ...

  2. 【CCPC-Wannafly Winter Camp Day4 (Div1) I】咆咆咆哮(三分+贪心)

    点此看题面 大致题意: 有\(n\)张卡牌,每张卡牌有两种用法:使场上增加一个伤害为\(a_i\)的生物,或使场上所有生物伤害增加\(b_i\).求最大总伤害. 三分 我们可以三分使用\(a_i\)的 ...

  3. Wannafly Winter Camp Day8(Div1,onsite) E题 Souls-like Game 线段树 矩阵乘法

    目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog @ Problem:传送门  Portal  原题目描述在最下面.  简单的 ...

  4. CCPC-Wannafly Winter Camp Day4 Div1 - 置置置换 - [DP]

    题目链接:https://zhixincode.com/contest/18/problem/G?problem_id=265 题目描述 wls有一个整数 $n$,他想请你算一下有多少 $1...n$ ...

  5. CCPC-Wannafly Winter Camp Day4 Div1 - 最小边覆盖 - [线段树]

    题目链接:https://zhixincode.com/contest/18/problem/C?problem_id=261 样例输入 1 4 21 23 4 样例输出 1 Yes 样例输入 2 4 ...

  6. CCPC-Wannafly Winter Camp Day4 Div1 - 夺宝奇兵 - [简单思维题]

    题目链接:https://zhixincode.com/contest/18/problem/A?problem_id=259 题目描述 wls正在玩一个寻宝游戏. 宝藏一共有 $n$ 种,都藏在一个 ...

  7. 【CCPC-Wannafly Winter Camp Day4 (Div1) G】置置置换(动态规划)

    点此看题面 大致题意: 求出有多少个长度为\(n\)的排列满足对于奇数位\(a_{i-1}<a_i\),对于偶数位\(a_{i-1}>a_i\). 考虑打表? 考虑每次只有一个数\(n\) ...

  8. 【CCPC-Wannafly Winter Camp Day4 (Div1) A】夺宝奇兵(水题)

    点此看题面 大致题意: 有\(n\)种宝藏,每种各两个.让你依次获得\(1\sim n\)号宝藏,然后依次获得剩余的\(n\sim1\)号宝藏,求最少步数. 简单结论 其实这题有一个十分简单的结论,即 ...

  9. 【CCPC-Wannafly Winter Camp Day4 (Div1) C】最小边覆盖(简单题)

    点此看题面 大致题意: 给你一个边集的子集,问你这可不可能是这张图的最小边覆盖. 大致思路 考虑到,如果一条边连接的两个点度数都大于等于\(2\),则这条边完全可以删去. 因此,我们只要判断是否存在这 ...

随机推荐

  1. 【tp5】tp5实现空模块、空控制器、空操作的页面404跳转

    写在最开始:本教程适用于tp5路由的[强制模式+半pathinfo模式+pathinfo模式],通用. 比网上的[通过路由去控制空模块更强力.更全面]. PS:路由控制空模块缺点:仅仅在[强制模式下才 ...

  2. CSS中的偏僻知识点

    一.css中的calc 在CSS中有calc属性用于尺寸的计算,可以让百分比和像素值进行运算. div {width : calc(100% - 30px);} 为了兼容性 /*Firefox*/ - ...

  3. Java 8系列之Stream的基本语法详解

    本文转至:https://blog.csdn.net/io_field/article/details/54971761 Stream系列: Java 8系列之Stream的基本语法详解 Java 8 ...

  4. linux内核剖析(零)linux系统启动过程详解-开机加电后发生了什么

    本文参考了如下文章 深入理解linux启动过程 mbr (主引导记录(Master Boot Record)) 电脑从开机加电到操作系统main函数之前执行的过程 详解linux系统的启动过程及系统初 ...

  5. Python CBV和FBV

    ''' 说一下CBV(class+base+views)和FBV(function+base+views),我们之前Django 里写的都是FBV,今天看一下 CBV,也就是在我们的视图函数里写类 ' ...

  6. rand()产生随机数 及其和clock()的不同

    rand()使用 首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数. 定义函数 : int rand(void) 函数说明 :因为rand的内部实现 ...

  7. Android开发(十三)——全屏滚动与listview

    Android全屏滚动使用scrollview,其中有需要采用listview进输出的内容,scrollview与listview冲突. 开始的思维是使用一个Scrollview加上一个ListVie ...

  8. 【iCore4 双核心板_FPGA】例程五:基础逻辑门实验——逻辑门使用

    实验现象: 打开tool-->Netlist viewer-->RTL viewer可观察各个逻辑连接 核心代码: //--------------------module_logic_g ...

  9. java 注解默认值

    package com.zejian.annotationdemo; import java.lang.annotation.ElementType; import java.lang.annotat ...

  10. NoSuchMethodError: ... addOnCompleteCallback

    问题描述: 使用ES 2.3.1和Spark streaming 2.1时,出现以上报错信息. 原因: addOnCompleteCallback方法在spark2.0中移除了 The addOnCo ...