Description

一个数列.

\(a_1=1,a_2=2\)

当 \(n>2\) 时

\[a_n = \{  \begin {matrix} 2a_{n-1},\text{n is an odd number} \\ a_{n-1}+r_{n-1},\text{ n is an even number } \end{matrix} \]

\(S_n=\{a_i-a_j,1 \leqslant j<i\leqslant n\}\)

\(r_n\) 为最小不在 \(S_n\) 中的非负整数.

给出 \(x\),求一对 \((p,q)\) 使得 \(a_p-a_q=x\)

Sol

打表+二分.

可以发现 \(\{a_n\}\) 是一个单调递增的数列,而且有 \(*2\) 的递推式存在,所以当 \(n>2log_2 10^9\) 的时候小于 \(10^9\) 的差只可能是相邻的两个数字.

对于前面几行的元素直接打表存起来,后面的就二分一下在表内的元素算一下就可以了.

Code

/**************************************************************
Problem: 4725
User: BeiYu
Language: C++
Result: Accepted
Time:568 ms
Memory:5280 kb
****************************************************************/ #include <cstdio>
#include <utility>
#include <map>
#include <iostream>
using namespace std; #define mpr make_pair
typedef long long LL;
typedef pair< LL,LL > pr;
const int N = 505; LL p=1,n=65,m,T;
map< LL,pr > mp;
LL a[N][N];
LL b[N*N]; inline LL in(LL x=0,char ch=getchar()){ while(ch>'9' || ch<'0') ch=getchar();
while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();return x; } void _add(LL x,pr y){ mp[x]=y; }
LL _get(){ while(mp.count(p)) p++;return p; } int main(){
a[2][1]=1,mp[1]=mpr(2,1);
for(int i=3;i<=n;i++){
if(i&1){
for(int j=1;j<i;j++) a[i][i-1]+=a[j][j-1];
a[i][i-1]+=1;
}else{
a[i][i-1]=_get();
}
_add(a[i][i-1],pr(i,i-1));
for(int j=1;j<i-1;j++){
a[i][j]=a[i-1][j]+a[i][i-1];
_add(a[i][j],pr(i,j));
}
} for(map< LL,pr >::iterator it=mp.begin();it!=mp.end();it++) b[++m]=(*it).first; for(T=in();T--;){
LL l=1,r=m,mid,x;
x=in();
if(mp.count(x)){ printf("%lld %lld\n",mp[x].first,mp[x].second);continue; }
while(l<=r){
mid=(l+r)>>1;
if(b[mid]<x) l=mid+1;
else r=mid-1;
}
printf("%lld %lld\n",n+(x-r)*2-1,n+(x-r)*2-2);
}return 0;
}

  

BZOJ 4725: [POI2017]Reprezentacje ró?nicowe的更多相关文章

  1. bzoj 4725 [POI2017]Reprezentacje ró?nicowe 暴力

    [POI2017]Reprezentacje ró?nicowe Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 141  Solved: 67[Sub ...

  2. BZOJ4725: [POI2017]Reprezentacje ró?nicowe

    $n \leq 1e5$,$x \leq 1e9$. 1e9呵呵,暴力处理$a_n$的前几项直到1e9.然后处理出差的数列,每次在这里面找,找得到就回答,找不到,那有贡献的只有$a_i-a_{i-1} ...

  3. BZOJ 4727: [POI2017]Turysta

    4727: [POI2017]Turysta Time Limit: 20 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 117  Solved ...

  4. bzoj 4724 [POI2017]Podzielno 二分+模拟

    [POI2017]Podzielno Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 364  Solved: 160[Submit][Status][ ...

  5. BZOJ 4726: [POI2017]Sabota?

    4726: [POI2017]Sabota? Time Limit: 20 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 301  Solved ...

  6. BZOJ 4723: [POI2017]Flappy Bird

    Description 从一个点到一条直线,每次纵坐标只能增加或减少1,有些位置有障碍,求最少增加步数. Sol 贪心. 或许是贪心吧...反正在可到达的范围内,纵坐标尽量小... 做的时候维护一下两 ...

  7. BZOJ 4726: [POI2017]Sabota? 树形dp

    4726: [POI2017]Sabota? 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4726 Description 某个公司有n ...

  8. BZOJ.4727.[POI2017]Turysta(哈密顿路径/回路 竞赛图)

    题目链接 \(Description\) 给出一个n个点的有向图,任意两个点之间有且仅一条有向边.对于每个点v,求出从v出发的一条经过点数最多,且没有重复经过同一个点一次以上的简单路径. n<= ...

  9. bzoj 4723 [POI2017]Flappy Bird 模拟

    [POI2017]Flappy Bird Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 482  Solved: 196[Submit][Status ...

随机推荐

  1. android第一行代码-9.内容提供器

    内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能, 内容提供器包括两部分:使用现有的内容提供器来读取和操作相应程序中的数据跟创建自己的内容提供器给我们程序的 ...

  2. Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds...

    仰天长啸   Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds... 当启动tomcat时候出现 ...

  3. Java中的instanceof关键字

    instanceof是Java的一个二元操作符,和==,>,<是同一类东东.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是测试它左边的对象是否是它右边的类的实例,返回boo ...

  4. Qt——透明无边框Widget的bug

    Experience 最近在封装一些类的时候,打算做一个窗口框架,能实现拖动.缩放.最大最小化.基本样式等功能,可不慎遇见一件无比蛋疼的事情,QWidget最小化后再恢复正常界面,最小化按钮居然仍处于 ...

  5. Windows下Nginx Virtual Host多站点配置详解

    Windows下Nginx Virtual Host多站点配置详解 此教程适用于Windows系统已经配置好Nginx+Php+Mysql环境的同学. 如果您还未搭建WNMP环境,请查看 window ...

  6. 仿原生app,native特效

    为解决手机端wap项目中页面跳转响应慢的问题,基于jquery开发了fr.routeApp.js,使得wap项目拥有原生app的流畅,跳转时亦有native的特效 html部分 <!--定义容器 ...

  7. Vue2.0学习笔记一 :各种表达式

    #,过滤器 #,在Vue2.x中,过滤器只能在mustache绑定中使用,为了在指令帮定中实现同样的行为,你应该使用计算属性:     #,过滤器可以串联 {{ message | filterA | ...

  8. 【JavaScript】javascript 方法 test()

    个人理解:var b = x.test(y); y是否存在模式x中,返回true或false:x可以是正则,字符串,

  9. Android BLE 蓝牙编程(四)

    接上篇,我们已经实现了短震,长震的功能了- 现在我们需要实现点击后一直震动的功能 开始我的想法是再循环中不断执行write方法,然而这个办法行不通. 系统会报错. 那要如何实现这个想法呢?其实很简单, ...

  10. UIDynamic(简单介绍)

    一.简单介绍 1.什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象 如:重力.弹性碰撞等现 ...