思路:二分答案,然后模拟消灭石头的过程;

如果单纯的暴力模拟的话,肯定会T的;

所以要用到一定的技巧来维护;

在网上看到大神们用O(n)的复杂度来优化,真心orz;

原理是这样的:用一个变量sum_2存前面所有的对当前石头造成影响的冲击波的损失的能量和;

所以对于当前的石头所需要的新的冲击波的数量为:(当前石头的能量值-前面有影响的冲击波数*能量x+sum_2)/能量x+1;

然后就是维护sum_2了!

维护sum_2要利用这个公式:(x+1)^2=x^2+2*x+1;

 #include<iostream>
#define maxn 50005
#define ll long long
using namespace std;
ll cnt[maxn];
ll num[maxn];
int n,k,t;
bool check(ll x)
{
ll sum_2=,sum_1=,sum=,ans=;
int j=n-;
for(int i=n-;i>=;i--)
{
if(j>i)
{
while((j-i)*(j-i)>=x)
{
sum_2-=cnt[j]*(j-i-)*(j-i-);
sum_1-=cnt[j]*(j-i-);
sum-=cnt[j];
j--;
}
}
sum_2+=*sum_1+sum;
sum_1+=sum;
ll y=num[i]-sum*x+sum_2;
if(y<)cnt[i]=;
else cnt[i]=y/x+;
sum+=cnt[i];
ans+=cnt[i];
}
return ans<=k;
} int main()
{
cin>>t;
while(t--)
{
cin>>n>>k;
for(int i=;i<n;i++)cin>>num[i];
ll l=,r=1e12;
while(l<r)
{
ll mid=(l+r)>>;
if(check(mid))r=mid;
else l=mid+;
}
cout<<l<<endl;
}
return ;
}

hdu 3717的更多相关文章

  1. hdu 3717 二分+队列维护

    思路:已知当前的总长度和为len,当前的伤害为sum,伤害次数为 num.那么对下一个点的伤害值sum=sum+2*len+num: 这个是通过(x+1)^2展开化简就能得到. #include< ...

  2. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  3. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

  4. hdu 4859 海岸线 Bestcoder Round 1

    http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...

  5. HDU 4569 Special equations(取模)

    Special equations Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  6. HDU 4006The kth great number(K大数 +小顶堆)

    The kth great number Time Limit:1000MS     Memory Limit:65768KB     64bit IO Format:%I64d & %I64 ...

  7. HDU 1796How many integers can you find(容斥原理)

    How many integers can you find Time Limit:5000MS     Memory Limit:32768KB     64bit IO Format:%I64d ...

  8. hdu 4481 Time travel(高斯求期望)(转)

    (转)http://blog.csdn.net/u013081425/article/details/39240021 http://acm.hdu.edu.cn/showproblem.php?pi ...

  9. HDU 3791二叉搜索树解题(解题报告)

    1.题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=3791 2.参考解题 http://blog.csdn.net/u013447865/articl ...

随机推荐

  1. LeetCode里有特色的问题存档

    002* Median of Two Sorted Arrays There are two sorted arrays A and B of size m and n respectively. F ...

  2. 记工作中的git遇到的问题

    看了 git 回退到某版本后,再在此版本上更新,无法push 操作前,我备份了修改了目录,准备建一个分支进行操作 我在本地revert了一次,commit到了远程仓库.然后上个版本的修改给恢复了... ...

  3. C#实现快速排序法

    现在有数组{ 3, 6, 2, 1, 9, 5, 4, 7 }; 然后用快速排序法把他们排序 1.首先 ,取出3作为比较数据 2.从最右边往左边比较找到第一个比3小的数据,把3在数组中的位置赋值为那个 ...

  4. C#学习笔记12:枚举、结构、数组基础学习

    枚举:public enum MyEnum { 值1, 值2, 值3 } Public enum Season { 春, 夏, 秋, 冬 } 枚举的作用:规范用户的输入,枚举可以转换为int类型,可以 ...

  5. IIS6.0、IIS7中的站点、应用程序和虚拟目录详细介绍

    这里说的不是如何解决路径重写或者如何配置的问题,而是阐述一下站点(site),应用程序(application)和虚拟目录 (virtual directory)概念与作用,已及这三个东西在IIS6与 ...

  6. 知乎 zhihu

    知乎上关于美食的精彩问答有哪些? http://www.zhihu.com/question/22744751/answer/22473212 知乎上关于乐队的精彩问答有哪些? http://www. ...

  7. mongodb 数据备份,还原笔记

    公司数据库迁移,所以补充了一下知识: 1 集合的导入和导出 命令行帮助 mongoexport --help  导出 导出 newsServer 数据库下  news 集合 mongoexport - ...

  8. 动态链接库找不到 : error while loading shared libraries: libgsl.so.0: cannot open shared object file: No such file or directory

    问题: 运行gsl(GNU scientific Library)的函数库,用 gcc erf.c -I/usr/local/include -L/usr/local/lib64 -L/usr/loc ...

  9. Java Web开发之Servlet、JSP基础

    有好多年不搞Java Web开发了,这几天正好国庆放假,放松之余也有兴趣回头看看Java Web开发技术的基础. 我们都知道,Servlet是Java Web开发的重要基础,但是由于Servlet开发 ...

  10. Android AndroidManifest学习笔记

    <application>标签 : android:allowBackup="true" 数据可以备份 <activity>标签:configChanges ...