题意

初始给了 1 2 两个数

第二步 因为第2个数是2 所以  在序列后面放上2个2 包括他自己之前有的 序列变成 1 2 2

第三步 因为第3个数是2 所以  在序列后面放上2个3 就变成了 1 2  2 3 3

第4步   第4个数为3    所以 在序列后面放上3个4   变成 1 2 2 3 3 4 4 4

以此类推  序列就是  1 2 2 3 3 4 4 4 5 5 5 6 6 6 6 7 7 7 7 8 8 8 8。。。

求的是n的最后出现位置 的最后出现位置, 也就是说 如果 n最后一次出现在第k位 那么 k的最后一次出现在哪里

我们可以知道 如果答案询问的是n 那么我们就可以知道 回答的肯定是  n最后所在的位置的前K项和,可想而知 !!!比如查询 3 那么就是求前5项的和

但是好像100000000那么多不太如意

在分解

1*1+(2+3)*2 这个答案是3的答案

那么 10呢?

就是 1*1+(2+3)*2+(4+5)*3+(6+7+8)*4+(9+10)*5;

好像知道了 最后要计算的就是 括号里面最大的那个值得为止的上式的和 那么但是我并不知道 后面乘的那个k得有多大 可以使得括号里面的最大值为1000000000,打了一下表发现 500000足够了

于是 用二分 +求和了

#include <iostream>
#include <algorithm>
#include <string.h>
#include <cstdio>
using namespace std;
typedef long long LL;
const int maxn=;
const LL MOD=;
struct elem{
LL L,R;
elem(LL cL=,LL cR=)
{
L=cL; R=cR;
}
}P[maxn];
int cnt;
LL sum[maxn];
int look(LL d)
{
int L=,R=cnt-;
int ans=;
while(L<=R){
int mid=(L+R)>>;
if(P[mid].L<=d&&P[mid].R>=d){
ans=mid;break;
}
if(P[mid].L>d){
R=mid-;
}else{
L=mid+;
}
}
return ans;
}
void init()
{
cnt=;
P[cnt++]=elem(,);
P[cnt++]=elem(,);
LL loc=;
for(int i=; i<=; i++)
{
int d=look(i);
P[cnt++]=elem(loc,loc+d-);
loc=loc+d;
}
sum[]=;
for(LL i= ; i<cnt; i++)
{
LL nu=P[i].R-P[i].L+;
LL s= (P[i].L+P[i].R)*nu/;
s=(s*i)%MOD;
sum[i]=(s+sum[i-])%MOD;
}
}
int main()
{
init();
int cas;
scanf("%d",&cas);
for(int cc=; cc<=cas; cc++)
{
LL loc;
scanf("%I64d",&loc);
LL d=look(loc);
LL ans=sum[d-];
LL s=1LL*(loc-P[d].L+)*(loc+P[d].L)/;
s=((s%MOD)*d)%MOD;
ans=(ans+s)%MOD;
printf("%I64d\n",ans);
}
return ;
}

hdu5439 二分的更多相关文章

  1. BZOJ1012: [JSOI2008]最大数maxnumber [线段树 | 单调栈+二分]

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 8748  Solved: 3835[Submi ...

  2. BZOJ 2756: [SCOI2012]奇怪的游戏 [最大流 二分]

    2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 3352  Solved: 919[Submit][Stat ...

  3. 整体二分QAQ

    POJ 2104 K-th Number 时空隧道 题意: 给出一个序列,每次查询区间第k小 分析: 整体二分入门题? 代码: #include<algorithm> #include&l ...

  4. [bzoj2653][middle] (二分 + 主席树)

    Description 一个长度为n的序列a,设其排过序之后为b,其中位数定义为b[n/2],其中a,b从0开始标号,除法取下整. 给你一个长度为n的序列s. 回答Q个这样的询问:s的左端点在[a,b ...

  5. [LeetCode] Closest Binary Search Tree Value II 最近的二分搜索树的值之二

    Given a non-empty binary search tree and a target value, find k values in the BST that are closest t ...

  6. [LeetCode] Closest Binary Search Tree Value 最近的二分搜索树的值

    Given a non-empty binary search tree and a target value, find the value in the BST that is closest t ...

  7. jvascript 顺序查找和二分查找法

    第一种:顺序查找法 中心思想:和数组中的值逐个比对! /* * 参数说明: * array:传入数组 * findVal:传入需要查找的数 */ function Orderseach(array,f ...

  8. BZOJ 1305: [CQOI2009]dance跳舞 二分+最大流

    1305: [CQOI2009]dance跳舞 Description 一次舞会有n个男孩和n个女孩.每首曲子开始时,所有男孩和女孩恰好配成n对跳交谊舞.每个男孩都不会和同一个女孩跳两首(或更多)舞曲 ...

  9. BZOJ 3110 [Zjoi2013]K大数查询 ——整体二分

    [题目分析] 整体二分显而易见. 自己YY了一下用树状数组区间修改,区间查询的操作. 又因为一个字母调了一下午. 貌似树状数组并不需要清空,可以用一个指针来维护,可以少一个log 懒得写了. [代码] ...

随机推荐

  1. word标题自动编号

    1.打开word文档中多级列表->定义新的多级列表 2.根据下图设置级别对应的标题,然后确定

  2. Java之旅_面向对象_接口

    参考摘自:http://www.runoob.com/java/java-interfaces.html 接口(interface)在Java中是一个抽象类型,是抽象方法的集合. 一个类通过imple ...

  3. 20165225《Java程序设计》第九周学习总结

    20165225<Java程序设计>第九周学习总结 1.视频与课本中的学习: 第十三章学习总结 URL类 URL对象包含三部分信息:协议.地址和资源 创建URL对象两种方法: public ...

  4. vue监听路由的变化,跳转到同一个页面时,Url改变但视图未重新加载问题

    引入:https://q.cnblogs.com/q/88214/ 解决方法: 添加路由监听,路由改变时执行监听方法 methods:{ fetchData(){ console.log('路由发送变 ...

  5. java开发中乱码的解决

    总结一下,在JavaWeb中针对各种情况处理中文乱码的方法. 首先我们看下,一个请求响应的流程 浏览器------------------>Servlet容器---------------> ...

  6. 3 jmeter的两种录制方法

    录制1-badboy(推荐) badboy是一款自动化测试工具,它可以完成简单的功能测试和性能测试.其实它是一款独立的测试工具,只不过它录制东西导出的格式适用于jmeter,所以我们经常把jmeter ...

  7. shell进阶函数

    函数的定义和用途 函数function是由若干条shell命令组成的语句块,实现shell代码的重用和模块化编程. 函数和shell程序的异同点 它与shell程序形式上是相似的,不同的是它不是一个单 ...

  8. 【剑指offer】数组中出现次数超过一半的数字

    一.题目: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2 ...

  9. equals和contains的区别

    equals只能判断两个变量的值是否相等.contains常用与集合中判断某个对象是否含有这个元素equals是需要两个对象完全相同才会返回true,而contains是要循环遍历容器里的所有内容后判 ...

  10. postman测试iop中url时的idtoken

    记得填写 X-Auth-Token 对应cookies中的 token_id