https://codeforces.com/contest/1379/problem/C

题意:

给m种花(a,b),从中取出n朵,每种花可以取0和无限朵,如果取出第i朵花的个数为c>0,则贡献度为ai+(c-1)*bi,如果c=0,则贡献度为0,求最大的贡献度。

解法:

可以看出取了每种花,第0,第1,第2,第3朵,...的贡献度分别是 0,a,b,b,...,

显然,贪心一下,最优方案b取一种(或0),先取比它大的a,最后再取这种b一直取到最后即可。

所以直接枚举最后取哪个b,然后贪心取所有比它大的a(求个前缀和即可),复杂度o(m*logm)。

#include<bits/stdc++.h>
#define sz(v) (int)v.size() using namespace std; typedef long long ll;
const int maxn=1000100;
const int INF=(1<<29); int n,m;
struct Node{
int a,b;
ll s;
friend bool operator<(Node A,Node B){
return A.a>B.a;
}
};Node p[maxn]; int bin_a(int l,int r,int b){
int res=0;
while(l<=r){
int m=(l+r)>>1;
if(p[m].a>=b) res=max(res,m),l=m+1;
else r=m-1;
}
return res;
} void solve(){
cin>>n>>m;
for(int i=1;i<=m;i++) scanf("%d%d",&p[i].a,&p[i].b);
sort(p+1,p+m+1);
p[1].s=p[1].a;
for(int i=2;i<=m;i++) p[i].s=p[i-1].s+p[i].a;
ll res=0;
for(int i=1;i<=m;i++){
int x=bin_a(1,m,p[i].b); // >=b last
if(x==0){
res=max(res,1LL*p[i].a+1LL*(n-1)*p[i].b);
continue;
}
if(x>=n){
res=max(res,p[n].s);
continue;
}
if(x<i) res=max(res,p[x].s+1LL*p[i].a+1LL*(n-x-1)*p[i].b);
else res=max(res,p[x].s+1LL*(n-x)*p[i].b);
}
cout<<res<<endl;
} int main(){
// freopen("in.txt","r",stdin);
int T;cin>>T;
while(T--) solve();
return 0;
}

百题计划-3 codeforces 657div2 C. Choosing flowers 贪心+枚举+二分的更多相关文章

  1. 【第一期百题计划进行中,快来打卡学习】吃透java、细化到知识点的练习题及笔试题,助你轻松搞定java

    [快来免费打卡学习]参与方式 本期百题计划开始时间:2022-02-09,今日打卡题已在文中标红. 0.本文文末评论区打卡,需要登录才可以打卡以及查看其他人的打卡记录 1.以下练习题,请用对应的知识点 ...

  2. CF&&CC百套计划1 Codeforces Round #449 B. Ithea Plays With Chtholly

    http://codeforces.com/contest/896/problem/B 题意: 交互题 n张卡片填m个1到c之间的数,1<=n*ceil(c/2)<=m 最后填出一个单调非 ...

  3. CF&&CC百套计划4 Codeforces Round #276 (Div. 1) A. Bits

    http://codeforces.com/contest/484/problem/A 题意: 询问[a,b]中二进制位1最多且最小的数 贪心,假设开始每一位都是1 从高位i开始枚举, 如果当前数&g ...

  4. CF&&CC百套计划4 Codeforces Round #276 (Div. 1) E. Sign on Fence

    http://codeforces.com/contest/484/problem/E 题意: 给出n个数,查询最大的在区间[l,r]内,长为w的子区间的最小值 第i棵线段树表示>=i的数 维护 ...

  5. CF&&CC百套计划1 Codeforces Round #449 C. Willem, Chtholly and Seniorious (Old Driver Tree)

    http://codeforces.com/problemset/problem/896/C 题意: 对于一个随机序列,执行以下操作: 区间赋值 区间加 区间求第k小 区间求k次幂的和 对于随机序列, ...

  6. CF&&CC百套计划3 Codeforces Round #204 (Div. 1) E. Jeff and Permutation

    http://codeforces.com/contest/351/problem/E 题意: 给出一些数,可以改变任意数的正负,使序列的逆序对数量最少 因为可以任意加负号,所以可以先把所有数看作正数 ...

  7. CF&&CC百套计划3 Codeforces Round #204 (Div. 1) B. Jeff and Furik

    http://codeforces.com/contest/351/problem/B 题意: 给出一个n的排列 第一个人任选两个相邻数交换位置 第二个人有一半的概率交换相邻的第一个数>第二个数 ...

  8. CF&&CC百套计划3 Codeforces Round #204 (Div. 1) A. Jeff and Rounding

    http://codeforces.com/problemset/problem/351/A 题意: 2*n个数,选n个数上取整,n个数下取整 最小化 abs(取整之后数的和-原来数的和) 先使所有的 ...

  9. CF&&CC百套计划3 Codeforces Round #204 (Div. 1) D. Jeff and Removing Periods

    http://codeforces.com/problemset/problem/351/D 题意: n个数的一个序列,m个操作 给出操作区间[l,r], 首先可以删除下标为等差数列且数值相等的一些数 ...

  10. CF&&CC百套计划1 Codeforces Round #449 A. Nephren gives a riddle

    http://codeforces.com/contest/896/problem/A 第i个字符串嵌套第i-1个字符串 求第n个字符串的第k个字母 dfs #include<map> # ...

随机推荐

  1. video遇到问题汇总

    1.调取视频自动播放video.play()时报错 Uncaught (in promise) DOMException: play() failed because the user didn't ...

  2. Android Studio 模拟器(AVD)访问本机服务器

    问题说明 若安卓模拟器(AVD)调试安卓 App,访问本机上的 Tomcat 服务器时,很有可能会不成功,按照下面的步骤来一遍以尝试解决问题. 模拟器配置 DNS 服务器 (一)找到模拟器安装的位置 ...

  3. postgresql中条件表达式 coalesce、nullif 、greatest、least

    一.postgresql中条件表达式 1.1 GREATEST和LEASTGREATEST(value [, ...]) LEAST(value [, ...])# 注意比较值得类型一定要相同案例:比 ...

  4. because another server process exited abnormally and possibly corrupted shared memory

    一.环境 系统平台:Linux x86-64 Red Hat Enterprise Linux 7 版本:4.1.1   二.症状 Red Hat 7.2操作系统部署HGDB 4.1.1后,日志经常出 ...

  5. [{"morpherRegistry":{},"dynaClass":{"dynaProperties":[{"indexed":false,"mapp

    将list存到json中后,json返回的内容是[{"morpherRegistry":{},"dynaClass":{"dynaProperties ...

  6. pycharm取消代码长度的竖线

  7. vscode cmake工程launch和task文件设置

    1.launch.json文件基本设置 { // Use IntelliSense to learn about possible attributes. // Hover to view descr ...

  8. Thread Safety Analysis 编译期对线程安全代码的检测

    https://blog.csdn.net/weixin_42157432/article/details/115939656 使用Clang Static Thread Analysis在编译期发现 ...

  9. React父组件如何调用子组件方法,访问子组件State

    /** * * Author: shujun * Date: 2020-10-25 */ import React from 'react'; import {message} from 'antd' ...

  10. python 获取docker容器内存使用率

    # -*- encoding: utf-8 -*- from subprocess import Popen, PIPE, STDOUTimport time def Run_Cmd(cmd): # ...