「codeforces - 1344D」Résumé Review
有点狗,但还算个好题。
设定 \(f_i(x)=a_ix-x^3\),\(\Delta_i(x)=f_i(x)-f_i(x-1)\),可以洞察到 \(\Delta_i(x)\) 在正自然数中是递减的。那么我们就可以贪心了。贪心时我们维护一个向量 \((b_1,\dots,b_n)\),分别表示 \(\Delta_i(b_i)\),初始全为零。放进优先队列里面,每次取一个出来(记为 \(\textit{id}\))将 \(b_{\textit{id}}\) 增量 \(1\),再放入优先队列里面。最终我们得到的即是使得答案最优的向量。
复杂度不可接受,我们优化的方向应当是提高生产力,怎样批量决定该做哪些。考虑二分一个标准线 \(t\),如果存在向量满足 \(\sum b_i\leqslant k\),且我们只做了 \(\Delta_i(b_i)\geqslant t\) 的函数,就行了。设 \(f(t)\) 为达到标准线的函数个数,最后我们得到的 \(t\) 满足 \(f(t)\leqslant k<f(t+1)\)。
然后通过调整可得到答案。
#include <bits/stdc++.h>
using namespace std;
using ll = __int128;
#define int ll
int n, k, a[100100], b[100100];
ll of(ll x, ll a) {
return a*x-x*x*x;
}
ll df(ll x, ll i) {
return of(x, a[i])-of(x-1, a[i]);
}
int f(int i, int stl) {
int l = 0, r = a[i], mid, res = 0;
while (l <= r) {
mid = (l+r)/2;
if (df(mid, i) >= stl) l = mid+1, res = mid;
else r = mid-1;
}
return res;
}
bool check(ll cur) {
// @cur stands for the standard line
ll sm = 0;
for (int i=1;i<=n;++i) {
int ret = f(i, cur);
sm += ret, b[i] = ret;
}
return sm <= k;
}
ll bsrh(ll l, ll r) {
ll mid, res = -1;
while (l <= r) {
if(check(mid = (l+r)/2)) r = mid-1, res = mid;
else l = mid+1;
}
return res;
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
long long tmp;
cin >> tmp;
n = tmp;
cin >> tmp;
k = tmp;
for (int i=1;i<=n;++i) {
cin >> tmp;
a[i] = tmp;
}
int t = bsrh(-9e18, 9e18), sum = 0;
check(t-1);
for (int i=1;i<=n;++i) sum += b[i];
for (int i=1;i<=n;++i) {
int adj = f(i, t-1)-f(i, t);
if (sum > k) {
if (sum-adj <= k) {
b[i] -= (sum-k);
break;
}
else {
sum -= adj, b[i] -= adj;
}
}
}
for (int i=1;i<=n;++i) {
tmp = b[i];
cout << tmp << " \n"[i == n];
}
return 0;
}
「codeforces - 1344D」Résumé Review的更多相关文章
- 「CodeForces 581D」Three Logos
BUPT 2017 Summer Training (for 16) #3A 题意 给你三个矩形,需要不重叠不留空地组成一个正方形.不存在输出-1,否则输出边长和这个正方形(A,B,C表示三个不同矩形 ...
- 「CodeForces - 50C 」Happy Farm 5 (几何)
BUPT 2017 summer training (16) #2B 题意 有一些二维直角坐标系上的整数坐标的点,找出严格包含这些点的只能八个方向走出来步数最少的路径,输出最少步数. 题解 这题要求严 ...
- 「CodeForces - 598B」Queries on a String
BUPT 2017 summer training (for 16) #1I 题意 字符串s(1 ≤ |s| ≤ 10 000),有m(1 ≤ m ≤ 300)次操作,每次给l,r,k,代表将r位置插 ...
- 「CodeForces - 717E」Paint it really, really dark gray (dfs)
BUPT 2017 summer training (for 16) #1H 题意 每个节点是黑色or白色,经过一个节点就会改变它的颜色,一开始在1节点.求一条路径使得所有点变成黑色. 题解 dfs时 ...
- 「CodeForces 476A」Dreamoon and Stairs
Dreamoon and Stairs 题意翻译 题面 DM小朋友想要上一个有 \(n\) 级台阶的楼梯.他每一步可以上 \(1\) 或 \(2\) 级台阶.假设他走上这个台阶一共用了 \(x\) 步 ...
- 「CodeForces 546B」Soldier and Badges 解题报告
CF546B Soldier and Badges 题意翻译 给 n 个数,每次操作可以将一个数 +1,要使这 n 个数都不相同, 求最少要加多少? \(1 \le n \le 3000\) 感谢@凉 ...
- 「Codeforces 79D」Password
Description 有一个 01 序列 \(a_1,a_2,\cdots,a_n\),初始时全为 \(0\). 给定 \(m\) 个长度,分别为 \(l_1\sim l_m\). 每次可以选择一个 ...
- 「Codeforces 468C」Hack it!
Description 定义 \(f(x)\) 表示 \(x\) 的各个数位之和.现在要求 \(\sum_{i=l}^rf(i)\bmod a\). 显然 ans=solve(l,r)%a; if(a ...
- 「Codeforces 724F」Uniformly Branched Trees
题目大意 如果两棵树可以通过重标号后变为完全相同,那么它们就是同构的. 将中间节点定义为度数大于 \(1\) 的节点.计算由 \(n\) 个节点,其中所有的中间节点度数都为 \(d\) 的互不同构的树 ...
- 「codeforces - 1284G」Seollal
给定 \(n\times m\) 的网格图,有些格子有障碍,无障碍且相邻的格子之间连边形成图.保证 \((1, 1)\) 无障碍,保证无障碍格子连通. 将网格图黑白染色,相邻格子颜色不同,\((1, ...
随机推荐
- 华为IP综合实验
目录 实验拓扑 实验需求 实验步骤 1.配置IP地址和环回口地址 2.在总公司上进行相应VLAN划分与配置 3. SW3和SW4的互连接口启用eth-trunk,最大带宽为2G 4. SW1.SW2. ...
- CMU15445 (Fall 2020) 之 Project#1 - Buffer Pool 详解
前言 去年暑假完成了 CMU15-445 Fall 2019 的四个实验,分别对应下述博客: CMU15445 (Fall 2019) 之 Project#1 - Buffer Pool 详解 CMU ...
- C++面试八股文:了解auto关键字吗?
某日二师兄参加XXX科技公司的C++工程师开发岗位第15面: 面试官:了解auto关键字吗? 二师兄:嗯,了解一些(我很熟悉). 面试官:说一说auto的用法吧? 二师兄:auto主要是为了编译器进行 ...
- 逆向之Ja3指纹学习
声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! tls tls实际上前身就 ...
- 全志G2D实现屏幕旋转,开机logo实现手动旋转。
产品设计出来之后啊,大家使用的时候觉得反过来使用更加便捷.但是屏幕显示是反的.那怎么办那????? 修改硬件费时费工,那能否软件实现那????? 如果纯软件使用那就太费系统资源了.于是就想到了使用全志 ...
- 构建高可用性的 SQL Server:Docker 容器下的主从同步实现
摘要:本文将介绍如何在 Docker 环境下搭建 MS SQL Server 的主从同步,帮助读者了解主从同步的原理和实现方式,进而提高数据的可靠性和稳定性. 一.前言 在当今信息化的时代,数据的安全 ...
- Kali Sublist3r 报错解决办法
直接将Sublist3r.py中文件的内容替换为下面的即可 具体的更改的东西改了很多地方就不细说了,直接复制粘贴 如果遇到Error: Virustotal probably now is block ...
- 一行命令使用 Docker 编译 Latex 文件,简单优雅
使用 Docker 编译 LaTeX 文章 LaTeX 是一种常用的排版系统,它可以帮助用户创建漂亮.专业的文档.但是,安装和配置 LaTeX 比较麻烦,特别是对于初学者而言. Docker 是一个开 ...
- SQL Server 数据库字符串分割函数
SQL Server 数据库字符串分割函数,源代码如下: ALTER FUNCTION [dbo].[f_split] ( @SourceStr VARCHAR(MAX), -- 源字符串 @Spli ...
- YOLOX目标检测实战:LabVIEW+YOLOX ONNX模型实现推理检测(含源码)
目录 前言 一.什么是YOLOX 二.环境搭建 1.部署本项目时所用环境: 2.LabVIEW工具包下载及安装: 三.模型的获取与转化[推荐方式一] 1.方式一:直接在官网下载yolox的onnx模型 ...