广工赛-hdu6469-树链压缩/二分
比较复杂的一题。。
不管是二分答案还是直接做,都需要压缩树链
/*
给定n种怪物,每个怪物有属性a[i]
打死第i种怪物后,第i只怪物会分裂成a[i]个第i-1种怪
如果打死的是第1种,那么获得经验a[1]
现在遇到的是一只第n种怪,有体力w,打死一只怪要一点体力,问最多获得多少经验
直接求比较麻烦,由于答案具有单调性,所以二分答案即可
*/
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define INF 1000000007
#define maxn 100005 ll a[maxn],c[maxn],s[maxn],g[maxn],n,q,w; int main(){
int tn;
cin>>q>>tn;
cin>>a[];
c[]=,n=;
for(int i=;i<=tn;i++){
ll ta;
scanf("%lld",&ta);
if(ta>){a[++n]=ta;c[n]=;}
else ++c[n];
}
s[]=c[],g[]=a[];
tn=n;
for(int i=;i<=tn;i++){
ll t=(ll)s[i-]*a[i]+c[i];//第i层的规模
if(t>=INF){
for(int j=i+;j<=tn;j++)
c[i]+=c[j];
n=i;
s[n]=g[n]=INF;
break;
}
s[i]=t;
g[i]=g[i-]*a[i];
} while(q--){
int k;
scanf("%d",&k);
if(k>s[n]){
cout<<g[n]<<endl;
continue;
}
ll ans=;
for(int i=n;k>=c[i] && i>;i--){
k-=c[i];
ans+=(k/s[i-])*g[i-];
k%=s[i-];
}
cout<<ans<<endl;
}
int a;
return ;
}
广工赛-hdu6469-树链压缩/二分的更多相关文章
- hdu4729 树链剖分+二分
An Easy Problem for Elfness Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 65535/65535 K (J ...
- NOIP 2015 BZOJ 4326 运输计划 (树链剖分+二分)
Description 公元 年,人类进入了宇宙纪元. L 国有 n 个星球,还有 n− 条双向航道,每条航道建立在两个星球之间,这 n− 条航道连通了 L 国的所有星球. 小 P 掌管一家物流公司, ...
- BZOJ 4551[Tjoi2016&Heoi2016]树(树链剖分+二分)
Description 在2016年,佳媛姐姐刚刚学习了树,非常开心.现在他想解决这样一个问题:给定一颗有根树(根为1),有以下两种操作:1. 标记操作:对某个结点打上标记(在最开始,只有结点1有标记 ...
- BZOJ 4326 树链剖分+二分+差分+记忆化
去年NOIP的时候我还不会树链剖分! 还是被UOJ 的数据卡了一组. 差分的思想还是很神啊! #include <iostream> #include <cstring> #i ...
- bzoj 4326: NOIP2015 运输计划【树链剖分+二分+树上差分】
常数巨大,lg上开o2才能A 首先预处理出运输计划的长度len和lca,然后二分一个长度w,对于长度大于w的运输计划,在树上差分(d[u]+1,d[v]+1,d[lca]-2),然后dfs,找出所有覆 ...
- 广工赛-hdu6468构造十叉树
是个以前没见过的模板题.. 我用比较复杂度方式过掉了.. 构造一个十叉树(有点trie的味道)来存数字,然后字典序就是先序遍历的结果 #include<bits/stdc++.h> usi ...
- 广工赛-hdu6470矩阵快速幂
递推时把(n+1)^3拆开 构造矩阵即可 #include<bits/stdc++.h> using namespace std; #define ll long long #define ...
- bzoj 4326: NOIP2015 运输计划(二分+树链剖分)
传送门 题解: 树链剖分快速求解任意两点间的路径的权值和: 然后,二分答案: 此题的难点是如何快速求解重合路径? 差分数组可以否??? 在此之前先介绍一下相关变量: int fa[maxn]; int ...
- 计蒜客 38229.Distance on the tree-1.树链剖分(边权)+可持久化线段树(区间小于等于k的数的个数)+离散化+离线处理 or 2.树上第k大(主席树)+二分+离散化+在线查询 (The Preliminary Contest for ICPC China Nanchang National Invitational 南昌邀请赛网络赛)
Distance on the tree DSM(Data Structure Master) once learned about tree when he was preparing for NO ...
随机推荐
- linux 扩展根分区
参考链接: http://blog.51cto.com/lubcdc/1763133
- C语言库函数syslog
参考链接: http://blog.csdn.net/jiangxinyu/article/details/1473356
- McQueenRPC源码阅读
1.server 2.client 3.消息格式
- 音乐app各部分笔记(一)
7-11 播放器播放时间获取和更新 1.audio 有一个 ontimeupdate事件 播放过程中 随时触发 vue里面就是 @timeupdate 事件中有默认参数 e 通过e.targe ...
- Lock类-ReentrantLock的使用
在Java多线程中可以使用synchronized隐式锁实现线程之间同步互斥,Java5中提供了Lock类(显示锁)也可以实现线程间的同步,而且在使用上更加方便.本文主要研究 ReentrantLoc ...
- 判断HDFS文件是否存在
hadoop判断文件是否存在 在shell中判断一个HDFS目录/文件是否存在 直接看shell代码: hadoop fs -test -e /hdfs_dirif [ $? -ne 0 ]; the ...
- Java的static类
首先Java的static类只能是静态内部类.如果在外部类声明为static,程序会编译通不过. 其次,主要了解下static内部类与普通内部类的区别是什么,以及static内部类的作用是什么,详见下 ...
- 内核中dump_stack()的实现,并在用户态模拟dump_stack()【转】
转自:https://blog.csdn.net/jasonchen_gbd/article/details/44066815?utm_source=blogxgwz8 版权声明:本文为博主原创文章, ...
- 题解-PKUWC2018 Minimax
Problem loj2537 Solution pkuwc2018最水的一题,要死要活调了一个多小时(1h59min) 我写这题不是因为它有多好,而是为了保持pkuwc2018的队形,与这题类似的有 ...
- java.lang.StackOverflowError 解决方法
♦ java.lang.StackOverflowError : 由于深度递归,抛出此错误以指示应用程序的堆栈已耗尽. 在递归中,一个方法在执行期间调用自己.递归被认为是一种强大的通用编程技术,但必须 ...