博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 4868: [Shoi2017]期末考试
阅读量:7113 次
发布时间:2019-06-28

本文共 1494 字,大约阅读时间需要 4 分钟。

题意:略


一开始xjb贪心了好长时间...

然后发现可以从后往前枚举最晚时间,\(O(1)\)得到最小代价

确定最晚时间后就可以知道哪些可以用A啦!

一定要考虑这种变化变成不变的思想!

#include 
#include
#include
#include
using namespace std;typedef long long ll;const int N = 1e5+5;inline int read() { char c=getchar(); int x=0,f=1; while(c<'0' || c>'9') {if(c=='-')f=-1; c=getchar();} while(c>='0' && c<='9') {x=x*10+c-'0'; c=getchar();} return x*f;}ll a, b, c, ans, now, big_cnt, big_sum, les_cnt, les_sum, s[N];int n, m, r[N], w[N], p, cnt_b, t[N];void solve() { ll cnt = 0; for(int i=1; i<=p; i++) cnt += t[i-1], s[i] = s[i-1] + cnt; ans = c >= 1e12 ? c : s[p] * c; for(int i=1; i<=p; i++) les_cnt += w[i-1], les_sum += les_cnt; while(p >= 2) { p--; // p+1 --> p big_cnt += w[p+1]; big_sum += big_cnt; les_sum -= les_cnt; les_cnt -= w[p]; if(c >= 1e12 && s[p]) continue; now = s[p] * c; //printf("hi %d %lld %lld %lld %lld %lld\n", p, s[p], big_cnt, big_sum, les_cnt, les_sum); if(b <= a) now += b * big_sum; else { ll k = big_sum - les_sum; if(k > 0) now += k * b + les_sum * a; else now += big_sum * a; } ans = min(ans, now); } printf("%lld", ans);}int main() { freopen("in", "r", stdin); scanf("%lld %lld %lld", &a, &b, &c); n=read(); m=read(); for(int i=1; i<=n; i++) t[read()]++; for(int i=1; i<=m; i++) r[i] = read(), w[r[i]]++, p = max(p, r[i]); solve();}

转载地址:http://tvghl.baihongyu.com/

你可能感兴趣的文章
房间号生成器
查看>>
CentOS 6.8 安装vsftpd
查看>>
js设计模式 --- 装饰设计模式
查看>>
Flask源代码阅读笔记(一)——应用启动
查看>>
IOS精品源码,仿探探UIButton封装iOS提示弹框迅速引导页自定义导航栏
查看>>
setState的一个Synthetic Event Warning
查看>>
通读Python官方文档之wsgiref(未完成)
查看>>
2017回顾
查看>>
Maven3 快速入门
查看>>
《编写可读代码的艺术》——表面层次的改进
查看>>
RxJS Observable - 一个奇特的函数
查看>>
大型WEB架构设计
查看>>
小程序TAB列表切换内容动态变化,scrollview高度根据内容动态获取
查看>>
swoole_table 实现原理剖析
查看>>
你需要知道面试中的10个JavaScript概念
查看>>
TiDB RC4 Release
查看>>
阿里云有对手了!CDN横评:腾讯云优势明显
查看>>
Ajax常用方法
查看>>
Glide 简单流程分析
查看>>
Hmily 2.0.3 发布,高性能异步分布式事务 TCC 框架
查看>>