题面(加密)

又考没学的姿势……不带这么玩的……

考场上打了个模拟 骗到30分滚粗了

稍加思考(滑稽)可将题面转化为:

求一个最大的$d$,使得

  $\sum \limits _{i=1}^n {(\left \lceil \frac{a_i}{d} \right \rceil *d-a_i)} \leq k$

移项可得

  $\sum \limits _{i=1}^n {\left \lceil \frac{a_i}{d} \right \rceil *d} \leq k+\sum \limits _{i=1}^{n}{a_i}$

那么$\leq$ 右侧就变成了一个常量,我们将其设为$C$。

把$d$除过去,得到

$\sum_\limits{i=1}^{n}\lceil\frac{a_i}{d}\rceil \leq \lfloor\frac{C}{d}\rfloor$

此时不等号左右都含有取整,都可以看作分段函数

我们现在想要最大的d,所以取每段的右端点一定比其它位置更优

之后求出等号左侧的$\lceil\frac{a_i}{d}\rceil$就可以通过判断更新答案

辣么怎么确定右端点呢?

这时候就需要一个东西:数论分块 (戳这里%大佬blog)

那么利用数论分块的结论:

对于形如$\sum_{i=1}^{n}{\lfloor \frac{n}{i} \rfloor}$的式子,

如果一段的左端点为$l$,那么右端点为$\lfloor \frac{n}{\lfloor \frac{n}{l}\rfloor} \rfloor$

本题得以在$O(n \sqrt{a_i})$的优秀复杂度内解决。

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
const int N=;
int n;
ll lim,a[N],sum,ans;
int main()
{
scanf("%d%lld",&n,&lim);
sum=lim;
for(int i=;i<=n;i++)
scanf("%lld",&a[i]),sum+=a[i];
ll d=;
while(sum/(d+)>)
{
d=sum/(sum/(d+));
ll res=;
for(int i=;i<=n;i++)
{
ll tmp=a[i]/d;
if(a[i]%d)tmp+=;
res+=tmp*d;
}
if(res<=sum)ans=d;
}
cout<<ans<<endl;
return ;
}

[7.18NOIP模拟测试5]砍树 题解(数论分块)的更多相关文章

  1. [07/18NOIP模拟测试5]超级树

    鬼能想到的dp定义:dp[i][j]表示在一棵i级超级树中,有j条路径同时存在且这j条路径没有公共点时,可能的情况数 刚开始我也没看懂,所以举个例子 如一个2级的超级树,父节点为1,左右儿子为2,3 ...

  2. noip模拟8[星际旅行·砍树·超级树·求和]

    也不能算考得好,虽然这次A了一道题,但主要是那道题太简单了,没啥成就感,而且有好多人都A掉了 除了那一道,其他的加起来一共拿了25pts,这我能咋办,无奈的去改题 整场考试的状态并不是很好啊,不知道是 ...

  3. 6.17考试总结(NOIP模拟8)[星际旅行·砍树·超级树·求和]

    6.17考试总结(NOIP模拟8) 背景 考得不咋样,有一个非常遗憾的地方:最后一题少取膜了,\(100pts->40pts\),改了这么多年的错还是头一回看见以下的情景... T1星际旅行 前 ...

  4. 7. 18 test 砍树题解

    (题面保密,内部人员可览) 首先观察题面,可得出如下公式 ∑(ceil(a[i] /d)*d−a[i])≤k 其中,ceil(a[i] /d)表示在需要被砍伐之前所经过的轮数,ceil函数是为了保证一 ...

  5. [7.18NOIP模拟测试5]星际旅行 题解

    题面(加密) 考场上靠打表yy出的规律进而想到的正解233333 可以把一条双向边拆成两条单向边,这样的话每个点度数都为偶数,符合欧拉图的定义. 那么题目可以转化为:去掉两条边,使图中存在一条欧拉路. ...

  6. [CSP-S模拟测试]:Walk(树的直径+数学)

    题目描述 给定一棵$n$个节点的树,每条边的长度为$1$,同时有一个权值$w$.定义一条路径的权值为路径上所有边的权值的最大公约数.现在对于任意$i\in [1,n]$,求树上所有长度为$i$的简单路 ...

  7. [CSP-S模拟测试]:柱状图(树状数组+二分+三分)

    题目描述 $WTH$获得了一个柱状图,这个柱状图一共有$N$个柱子,最开始第$i$根柱子的高度为$x_i$,他现在要将这个柱状图排成一个屋顶的形状,屋顶的定义如下:$1.$屋顶存在一个最高的柱子,假设 ...

  8. [CSP-S模拟测试]:count(树分块)

    题目描述 李华终于逃离了无尽的英语作文,重获自由的他对一棵树产生了兴趣.首先,他想知道一棵树是否能分成大小相同的几块(即切掉一些边,使得每个连通块的点数相同).然后,他觉得这个问题过于简单,于是他想知 ...

  9. [CSP-S模拟测试]:影魔(树状数组+线段树合并)

    题目背景 影魔,奈文摩尔,据说有着一个诗人的灵魂.事实上,他吞噬的诗人灵魂早已成千上万.千百年来,他收集了各式各样的灵魂,包括诗人.牧师.帝王.乞丐.奴隶.罪人,当然,还有英雄.每一个灵魂,都有着自己 ...

随机推荐

  1. 洛谷 P1271 聚会的快乐(树状dp)

    题目描述 你要组织一个由你公司的人参加的聚会.你希望聚会非常愉快,尽可能多地找些有趣的热闹.但是劝你不要同时邀请某个人和他的上司,因为这可能带来争吵.给定N个人(姓名,他幽默的系数,以及他上司的名字) ...

  2. 为什么不能在shell脚本中执行source /etc/profile或者source ~/.bashrc问题?

    执行脚本时,其中的命令是在一个子shell中执行的.子shell继承了父shell的环境变量,但无法修改他们,或者说所做的修改仅对子shell有效.

  3. 工程师技术(四):配置SMB文件夹共享、多用户Samba挂载、普通NFS共享的实现、安全NFS共享的实现

    一.配置SMB文件夹共享 目标: 本例要求在虚拟机 server0 上发布两个共享文件夹,具体要求如下: 1> 此服务器必须是 STAFF 工作组的一个成员   2> 发布目录 /comm ...

  4. Centos7 安装配置 SVN

    准备工作: 检查是否安装SVN:rpm -qa subversion 查看安装SVN版本信息:svnserve --version 卸载旧版本SVN: yum remove subversion 1. ...

  5. 52、saleforce 第一篇

    View the Schema 1.点击setup 2.在QuickFind and Search中输入Schema Builder 先点击clear all 去除所有现实的UML,然后选择Line_ ...

  6. Excel表格文本格式的数字和数字格式如何批量转换

    Excel表格文本格式的数字和数字格式如何批量转换 在使用Excel表格对数据求和时,只能对单元格内常规格式的数据进行计算,而不能对单元格中的文本格式的数据进行计算,特点就是在单元格的左上角有一个绿色 ...

  7. 避开PCB假八层结构的温柔陷阱---浅谈六层板的叠层

    https://blog.csdn.net/qijitao/article/details/51505611 作者:王辉东   一博科技高速先生团队队员 在<PCB的筋骨皮>一文中,我们提 ...

  8. PAT甲级——A1141 PATRankingofInstitution【25】

    A clique is a subset of vertices of an undirected graph such that every two distinct vertices in the ...

  9. 转 loadrunner11 录制 chrome 浏览器

    chrome不设置代理的原始状态 图1 [LoadRunner]解决LR11无法录制Chrome浏览器脚本问题   LoadRunner录制脚本时,遇到高版本的IE.FireFox,或者Chrome浏 ...

  10. 使用allure2生成精美报告

    安装:brew install allure pip install allure-pytest 在测试执行期间收集结果 pytest -s –q --alluredir=./result/ 测试完成 ...