【2019中国大学生程序设计竞赛-女生专场】C - Function
原题


韦神提供的思路orz
首先一个显然的性质,所有的c可以提出来,方程变成ax^2+bx的形式
因为x的值是离散的,而m的值又不大
所以一开始让x都为1(注意!x是正整数),然后每次挑一个x让他加一
这样做怎么保证正确?
注意二次函数的性质,由于a>=1,当x递增时斜率,函数值的变化量是递增的
可以贪一个
每次去变化率最小的那个方程,让它的x加一
现在不取,后边也不会更优,所以正确
变化率相同时并不需要比较函数形状
因为由变化率递增的性质,就算取了较坏的函数,下一步还是取较好函数的相同变化量,然后再下一步必定会取到较好函数
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
#define LL long long
int rd(){int z=,mk=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-')mk=-; ch=getchar();}
while(ch>=''&&ch<=''){z=(z<<)+(z<<)+ch-''; ch=getchar();}
return z*mk;
}
struct nds{LL x; int y;}hp[]; int sz=;
int n,m;
LL a[],b[],c[];
int d[];
LL cclt(LL x,int y){
return x*x*a[y]+x*b[y];
}
void ist(nds x){
hp[++sz]=x;
for(int i=sz;i> && hp[i].x<hp[i>>].x;i>>=) swap(hp[i],hp[i>>]);
}
void pp(){
swap(hp[],hp[sz--]);
for(int i=;;){
int mn=hp[i].x,mnid=i;
if((i<<)<=sz && hp[i<<].x<mn) mn=hp[i<<].x,mnid=(i<<);
if((i<<|)<=sz && hp[i<<|].x<mn) mn=hp[i<<|].x,mnid=(i<<|);
if(i==mnid) break;
swap(hp[i],hp[mnid]);
i=mnid;
}
}
void prvs(){
sz=;
}
int main(){
//freopen("ddd.in","r",stdin);
while(scanf("%d%d",&n,&m)!=EOF){
prvs();
for(int i=;i<=n;++i) a[i]=rd(),b[i]=rd(),c[i]=rd();
LL bwl=;
for(int i=;i<=n;++i){
d[i]=;
ist((nds){cclt(d[i]+,i)-cclt(d[i],i),i});
bwl+=cclt(d[i],i)+c[i];
}
for(int i=n+;i<=m;++i){
LL mn=hp[].x; int mnid=hp[].y;
++d[mnid];
pp();
ist((nds){cclt(d[mnid]+,mnid)-cclt(d[mnid],mnid),mnid});
bwl+=mn;
}
printf("%lld\n",bwl);
}
return ;
}
【2019中国大学生程序设计竞赛-女生专场】C - Function的更多相关文章
- 2019中国大学生程序设计竞赛-女生专场(重现赛)部分题解C-Function(贪心+优先队列) H-clock(模拟)
Function 题目链接 Problem Description wls 有 n 个二次函数 Fi(x) = aix2 + bix + ci (1 ≤ i ≤ n). 现在他想在∑ni=1xi = ...
- 2017中国大学生程序设计竞赛 - 女生专场 Deleting Edges(思维+最短路)
Deleting Edges Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- 2017中国大学生程序设计竞赛 - 女生专场 Happy Necklace(递推+矩阵快速幂)
Happy Necklace Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- 2017中国大学生程序设计竞赛 - 女生专场(Graph Theory)
Graph Theory Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)To ...
- 2017中国大学生程序设计竞赛 - 女生专场(dp)
Building Shops Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) To ...
- HDU 6024(中国大学生程序设计竞赛女生专场1002)
这是CCPC女生专场的一道dp题.大佬们都说它简单,我并没有感到它有多简单. 先说一下题意:在一条直线上,有n个教室,现在我要在这些教室里从左到右地建设一些作为糖果屋,每个教室都有自己的坐标xi 和建 ...
- "巴卡斯杯" 中国大学生程序设计竞赛 - 女生专场
Combine String #include<cstdio> #include<cstring> #include<iostream> #include<a ...
- hdu_5705_Clock("巴卡斯杯" 中国大学生程序设计竞赛 - 女生专场)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5705 题意:给你一个时间和一个角度,问你下一个时针和分针形成给出的角度是什么时候 题解:我们可以将这个 ...
- hdu_5707_Combine String("巴卡斯杯" 中国大学生程序设计竞赛 - 女生专场)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5707 题意:给你三个字符串 a,b,c,问你 c能否拆成a,b,a,b串的每一个字符在c中不能变 题解 ...
随机推荐
- C# 关于App.config
App.config是winfrom等程序的应用程序配置文件,用来存放一些参数. app.config只会在应用程序启动时加载一次. 当程序在运行中修改app.config中的参数是不会生效,必须要重 ...
- xss 学习(一)
存储型 .反射型.DOM 型这是最常见的三种分类: 存储型存储型XSS也叫持久型XSS,存储的意思就是Payload是有经过存储的,当一个页面存在存储型XSS的时候,XSS注入成功后,那么每次访问该页 ...
- ReDOS攻击
正则表达式拒绝服务攻击(Regular Expression Denial of Service)当开发人员编写的正则表达式存在缺陷时,攻击者可以构造特殊的字符串来大量消耗服务器资源,最终造成拒绝服务 ...
- CF444A DZY Loves Physics【结论】
题目传送门 话说这道题不分析样例实在是太亏了...结论题啊... 但是话说回来不知道它是结论题的时候会不会想到猜结论呢...毕竟样例一.二都有些特殊. 观察样例发现选中的子图都只有一条边. 于是猜只有 ...
- 免费ip共享库
分享一个免费的ip地址库查询,同时支持ipv4和ipv6查询,提供api接口.官网地址:https://www.calpha.club/ 希望可以帮助运维朋友们. python 2.7实例# -*- ...
- JVM 和 GC
一 堆与非堆 Java 虚拟机启动时创建一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配. 在JVM中堆之外的内存称为非堆内存.. 简单来说堆就是Java代码可及的内存,是留给开发人员使 ...
- django初步了解2
目录 django初步了解2 表的字段增删改查 数据的增删改查 反向解析和分组 路由分发 名称空间 伪静态 虚拟环境 django初步了解2 表的字段增删改查 新增的字段 1.直接提供默认值 defa ...
- Vue 表情输入组件,微信face表情组件
VUE表情包输入组件,先来张成品图看看. 年底了没事干,把以前做过的项目中的组件拿出来再复习一下, 先说说思路吧. 注意: 1. 项目是用vue-cli3.0搭建起来的项目, 参考cli3.0官网地址 ...
- nofollow标签浪费了多少站长做外链的时间
对于rel=“external nofollow”和rel=“nofollow”,这两句代码,使用起来效果基本是一致的,只是前者较后者更为规范一点,两者翻译过来的意思就是:rel=“external ...
- 【原创】大叔问题定位分享(34)Spring的RestTemplate请求json数据后内容被修改
先看代码 org.springframework.web.client.RestTemplate public RestTemplate() { this.messageConverters = ne ...