好久没写题了T T NOIP 期中考双血崩

  显然f(x)=f(x>>1)+f((x>>1)+1),考虑每次往x>>1递归,求出f(x),复杂度O(logN)

  我们设f(x>>1)的值为ansa[x],f((x>>1)+1)的值为ansb[x]

  如果x>>1为偶数,ansa[x]=ansa[x>>1],ansb[x]=ansa[x>>1]+ansb[x>>1]

  如果x>>1为奇数,ansa[x]=ansa[x>>1]+ansb[x>>1],ansb[x]=ansb[x>>1]

  随便举个例子很好理解的,高精度写起来比较麻烦T T

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const int base=1e9, bit=;
int T;
char s[];
void read(int &k)
{
int f=;k=;char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(c<=''&&c>='')k=k*+c-'',c=getchar();
k*=f;
}
struct tjmll
{
int sum[], f;
tjmll(){f=; memset(sum, , sizeof(sum));}
tjmll operator= (ll x)
{
memset(sum, , sizeof(sum));
while(x)
{
sum[++sum[]]=x%base;
x/=base;
}
return *this;
}
} ansa, ansb, n;
void print(const tjmll &a)
{
if(a.f==-) putchar('-');
printf("%d", a.sum[a.sum[]]);
for(int i=a.sum[]-;i>=;i--) printf("%0*d", bit, a.sum[i]);
}
tjmll operator+(const tjmll &a, const tjmll &b)
{
tjmll tmp; tmp.sum[]=max(a.sum[], b.sum[]);
for(int i=;i<=tmp.sum[];i++)
{
tmp.sum[i]+=a.sum[i]+b.sum[i];
tmp.sum[i+]+=tmp.sum[i]/base;
tmp.sum[i]%=base;
}
if(tmp.sum[tmp.sum[]+]) tmp.sum[]++;
return tmp;
}
inline void div2(tjmll &x)
{
int pre=;
for(int i=x.sum[];i;i--)
{
int tmp=pre*base+x.sum[i];
x.sum[i]=tmp>>;
pre=tmp&;
}
if(!x.sum[x.sum[]]) x.sum[]--;
}
inline void dfs(tjmll x)
{
if(x.sum[]==) return;
if(x.sum[]== && x.sum[]==) ansa=, ansb=;
tjmll now; now=now+x;
div2(x); dfs(x);
if(now.sum[]&) ansa=ansa+ansb;
else ansb=ansa+ansb;
}
int main()
{
read(T);
while(T--)
{
scanf("%s", s+); n=; int len=strlen(s+), now=;
for(int i=len;i;i--)
{
if((len-i)%bit==) ++n.sum[], now=;
n.sum[n.sum[]]+=(s[i]-'')*now; now*=;
}
ansa=; ansb=; dfs(n); print(ansa); puts("");
}
return ;
}

2656: [Zjoi2012]数列(sequence)(递归+高精度)的更多相关文章

  1. 【BZOJ 2656】2656: [Zjoi2012]数列(sequence) (高精度)

    2656: [Zjoi2012]数列(sequence) Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 1499  Solved: 786 Descri ...

  2. [BZOJ 2656][ZJOI2012]数列(递归+高精度)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2656 分析: 很容易想到递归分治,但遇到奇数时候f[i]=f[i/2]+f[i/2+1 ...

  3. bzoj 2656 [Zjoi2012]数列(sequence)(高精度)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2656 [题意] 计算大数递推式 [思路] 高精度 [代码] #include<c ...

  4. bzoj 2656 [Zjoi2012]数列(sequence) 递推+高精度

    2656: [Zjoi2012]数列(sequence) Time Limit: 2 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Descri ...

  5. [BZOJ2656][codevs1207][Zjoi2012]数列(sequence)

    [BZOJ2656][codevs1207][Zjoi2012]数列(sequence) 试题描述 小白和小蓝在一起上数学课,下课后老师留了一道作业,求下面这个数列的通项公式: 小白作为一个数学爱好者 ...

  6. 【bzoj2656】[Zjoi2012]数列(sequence) 高精度

    题目描述 给出数列 $A$ 的递推公式如下图所示,$T$ 次给定 $n$ ,求 $A_n$ . 输入 输入文件第一行有且只有一个正整数T,表示测试数据的组数.第2-T+1行,每行一个非负整数N. 输出 ...

  7. bzoj2656 [Zjoi2012]数列(sequence)

    题目链接 好久没写高精度了,调了很久QAQ 如果直接递归计算答案的话肯定会T 发现一个数不管是分成一奇一偶还是直接>>1,都会重复计算很多东西 我们只需要在递归的时候实时维护一个xx(an ...

  8. BZOJ2656 [Zjoi2012]数列(sequence)[模拟]

    这个递推式子可以发现$i$是偶数下标可以缩一半,是奇数下标就可以拆成两个下标,$\lfloor \frac{i}{2} \rfloor$以及$\lfloor \frac{i}{2}+1 \rfloor ...

  9. 洛谷 P2609 [ZJOI2012]数列 解题报告

    P2609 [ZJOI2012]数列 题目描述 小白和小蓝在一起上数学课,下课后老师留了一道作业,求下面这个数列的通项公式: A(0)=0 A(1)=1 A(2i)=A(i) (对于任意 i>0 ...

随机推荐

  1. python全栈开发-面向对象-进阶

    python_day_18 1,面向对象的三大特性是什么?继承,多态,封装2,什么是面向对象的新式类?什么是经典类?凡是继承object类都是新式类.凡是不继承object类都是经典类.3,面向对象为 ...

  2. python装饰器简单使用

    装饰器和闭包关联很大,要先明白闭包是什么 原始代码: def foo(): print('fcc') 增加装饰器 from time import ctime,sleep def w(fcc): de ...

  3. chrome json 格式化插件 JSON-Handle

    Chrome 浏览器插件安装方法: 在地址栏输入  , 将下载的 .crx 插件包拖放到打开的页面中. JSON-Handle It's a browser and editor for JSON d ...

  4. 关闭会声会影2018提示UEIP.dll找不到指定模块

    最近有一些会声会影2018用户反映在关闭后弹出UEIP.dll错误,不知道该怎么办才好,针对这个问题,小编下面为大家介绍下解决方法. 原因分析 出现这个错误跟会声会影安装路径有中文字符是密切相关的,导 ...

  5. [转载]文件系统缓存dirty_ratio与dirty_background_ra

    原文地址:文件系统缓存dirty_ratio与dirty_background_ratio两个参数区别作者:vincent 这两天在调优数据库性能的过程中需要降低操作系统文件Cache对数据库性能的影 ...

  6. Linux环境下Java应用性能分析定位-CPU使用篇

    1     CPU热点分析定位背景 CPU资源还是很昂贵的,为了深刻感受到这种昂贵,间下图当前CPU的资源售价: 所以对于程序猿们来说,需要让程序合理高效的使用CPU资源.利用有限的CPU资源来解决完 ...

  7. 使用 MPI for Python 并行化遗传算法

    前言 本文中作者使用MPI的Python接口mpi4py来将自己的遗传算法框架GAFT进行多进程并行加速.并对加速效果进行了简单测试. 项目链接: GitHub: https://github.com ...

  8. java面向对象的有序数组和无序数组的比较

    package aa; class Array{ //定义一个有序数组 private long[] a; //定义数组长度 private int nElems; //构造函数初始化 public ...

  9. 20172305 暑假作业 之 TimeCalculate & Save Iron Man

    20172305 暑假作业 之 TimeCalculate & Save Iron Man TimeCalculate 项目介绍 项目名称: TimeCalculate 项目简介: 本项目基于 ...

  10. 软工实践-Alpha 冲刺 (10/10)

    队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 完成所有界面的链接,整理与测试 展示GitHub当日代码/ ...