[bzoj1223] [HNOI2002]Kathy函数
首先由题解可得TAT,f(i)=i当且仅当i在二进制下为回文串。
那么问题就变成了1~n中有多少个二进制下的回文串。
把m转成2进制后就是正常的统计了= =。
f[i]表示二进制下,有多少个i位的回文串(包括前导0)。f[1]=f[2]=2,f[i]=f[i-2]*2.....也就是f[i]=2^((i+1)/2)
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#define ri register int
using namespace std;
const int modd=;
char s[];
int two[][];
int a[],l[],len,len2,mp[],ten[];
int i,j,k,n,m;
int ans[],ansl; inline bool notsmall(int x){
if(l[x]!=len)return l[x]>len;
for(ri i=len;i;i--)if(two[x][i]!=a[i])return two[x][i]>a[i];
return ;
}
inline bool notbig(int x){
if(l[x]!=len)return l[x]<len;
for(ri i=len;i;i--)if(two[x][i]!=a[i])return two[x][i]<a[i];
return ;
}
inline void add(int x){
l[x]=l[x-];int y=x-;
for(ri i=;i<=l[x];i++){
two[x][i]+=two[y][i]<<;
if(two[x][i]>=modd)two[x][i]-=modd,two[x][i+]++;
}
if(two[x][l[x]+])l[x]++;
}
inline void addtoans(int x){
for(ri i=;i<=l[x];i++){
ans[i]+=two[x][i];
if(ans[i]>=modd)ans[i+]++,ans[i]-=modd;
}
while(ans[ansl+])ansl++;
}
inline void dec(int x){
for(ri i=;i<=l[x];i++){
a[i]-=two[x][i];
if(a[i]<)a[i]+=modd,a[i+]--;
}
while(!a[len]&&len>)len--;
}
inline void run(){
ri i,j,k,len;
two[][l[]=]=;
for(i=;!notsmall(i);)i++,add(i);
for(;i;i--)
if(notbig(i))dec(i),mp[i]=,len2=max(len2,i);
// for(i=len2;i;i--)printf(" %d",mp[i]);puts("");
for(i=;i<len2;i++)addtoans((i+)>>);
int flag=;
for(i=len2>>;i;i--)swap(mp[i],mp[len2-i+]);
for(i=;i<=len2&&flag;i++){
if(mp[i]){
if(i<=(len2>>))addtoans((len2-(i<<)+)>>);
else{
if(mp[len2-i+]==||len2-i+==i)addtoans();
}
}
if(i>(len2>>))flag&=(mp[len2-i+]==mp[i]);
}
if(flag==||len2==)addtoans();
}
int main(){
scanf("%s",s);j=strlen(s);
for(i=ten[]=;i<=;i++)ten[i]=ten[i-]*;
for(i=j-;i>=;i--){
if(!k)len++;
a[len]+=(s[i]-'')*ten[k];
k++;if(k>)k=;
}
run();
for(printf("%d",ans[ansl]),i=ansl-;i>;i--){
for(j=;j<modd;j*=)if(ans[i]<j)putchar('');
printf("%d",ans[i]);
}puts("");
return ;
}
代码又丑又慢>_<
[bzoj1223] [HNOI2002]Kathy函数的更多相关文章
- bzoj 1223: [HNOI2002]Kathy函数 数位DP 高精度
1223: [HNOI2002]Kathy函数 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 207 Solved: 90[Submit][Stat ...
- 洛谷P2235 [HNOI2002]Kathy函数
传送门 题解 // luogu-judger-enable-o2 //minamoto #include<cstdio> #include<cstring> using nam ...
- [HNOI2002] Kathy 函数
数位 DP 套路题,求二进制下区间内回文串个数. 设 dp[][][] 表示到第几位时,是否为回文数,去掉前导零后共几位.之后到边界时判断是否为回文数计入贡献. 一开始不知道答案统计要高精,于是后来就 ...
- 【题解】Kathy函数 [BZOJ1223] [P2235] [HNOI2002]
[题解]Kathy函数 [BZOJ1223] [P2235] [HNOI2002] 这几疯狂刷了数位\(dp\)的题,到这道题时被卡了一天,一看大佬的讲解发现居然是求回文数╮(╯_╰)╭ 感觉被大佬狠 ...
- 洛谷$P$2235 $Kathy$函数 $[HNOI2002]$ 数位$dp$
正解:数位$dp$ 解题报告: 传送门$qwq$ $HNOI$的题从02年就这么神了嘛$QAQ$,,, 嗷对了这题如果看出了一个结论就是个数位$dp$板子,,,?但是结论很神我$jio$得挺难看出来的 ...
- 数位DP学习笔记
数位DP学习笔记 什么是数位DP? 数位DP比较经典的题目是在数字Li和Ri之间求有多少个满足X性质的数,显然对于所有的题目都可以这样得到一些暴力的分数 我们称之为朴素算法: for(int i=l_ ...
- Noip前的大抱佛脚----赛前任务
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- SQL2005四个排名函数(row_number、rank、dense_rank和ntile)的比较
排名函数是SQL Server2005新加的功能.在SQL Server2005中有如下四个排名函数: .row_number .rank .dense_rank .ntile 下面分别介绍一下这四个 ...
随机推荐
- 转载|chrome developer tool—— 断点调试篇
断点,调试器的功能之一,可以让程序中断在需要的地方,从而方便其分析.也可以在一次调试中设置断点,下一次只需让程序自动运行到设置断点位置,便可在上次设置断点的位置中断下来,极大的方便了操作,同时节省了时 ...
- LVM 详解
一.前言<http://blog.chinaunix.net/uid-186064-id-2823296.html> LVM是逻辑卷管理(Logic Volume Manage)的简称,它 ...
- QT中定时器的使用方法
前言:因为QT中用死循环会开销很多内存容易崩溃,这时候使用定时器可以很好解决这个问题. 使用定时器需要用到头文件:include<QTimer> (1)定义定时器 QTimer *upda ...
- unity -- Time类(持续更新中)
2018年了,新年总是会制定很多具体目标和计划,不管能否坚持去完成,初衷和决心总是要有的.本年第一篇博客终于开始下笔了,先立一些今年和公司业务无关的的flag: 1.希望每月或两月能看一套蛮牛游戏上的 ...
- Struts2-整理笔记(一)介绍、搭建、流程、详解struts.xml
Struts2是一种前端的技术框架 替代Servlet来处理请求 Struts2优势 自动封装参数 参数校验 结果的处理(转发|重定向) 国际化 显示等待页面 表单的防止重复提交 搭建框架:导 ...
- Disruptor并发框架 (二)核心概念场景分析
核心术语 RingBuffer(容器): 被看作Disruptor最主要的组件,然而从3.0开始RingBuffer仅仅负责存储和更新在Disruptor中流通的数据.对一些特殊的使用场景能够被用户( ...
- Mysql的硬件优化和配置优化
mysql数据库的优化,算是一个老生常谈的问题了,网上也有很多关于各方面性能优化的例子,今天我们要谈的是MySQL硬件优化和系统参数的优化-即优化my.cnf文件 MySQL的优化我分为两个部分,一是 ...
- UTC 通用格式时间 转换为 时间戳,并格式化为2017-01-01 12:00:00
在使用阿里云oss获取文件列表是,发现时间格式是这样的 2016-09-20T13:45:04.000Z (尼玛,是什么鬼), 经过度娘的解答,发现这就是传说中的 UTC通用格式时间 问题来了,怎么转 ...
- permission denied for window type 2003
今天在做系统悬浮窗的时候出现权限拒绝,类型是2003,这里要说下,做系统悬浮窗需要申请权限,6.0以上的 还需要动态申请下,这里我就不过多描述了, 我在申请完权限后仍然不行,这里主要是出现在了这个类型 ...
- StringMVC POJO
SpringMVC会按请求参数名和POJO类属性名进行自动匹配,自动为该属性填充属性值, 支持级联属性(本类包含其他类对象,如User类有一个属性为Address) 示例代码: index.jsp: ...