[bzoj3287] Mato的刷屏计划
第一眼以为是傻逼斜率优化>_<
f[i]表示按i次最多可输出字符数。。f[i]=max{ f[i-1]+1,(i-j-1)*f[j] },j<i-2
结果n在100+的时候就喜闻乐见地爆了longlong
根据网上题解可得(T_T)。。这题大概是要FFT优化?(跟着ccz大爷刷题果然高风险TAT
然而题解表示,这题求出f的前几项后,令x=n%5+15,最终答案f[n]=f[x]*4^((n-x)/5)..........
我死活没看出来这是为啥。。。
我显然是连FFT都不会的傻逼。。只好写了个压位高精度快速幂。。结果跑了#3。。233
突然觉得正解显然不是FFT = =。。另外status里面一堆奇怪语言也是感人>_<
#include<cstdio>
#include<iostream>
#include<cstring>
#define ll long long
#define d double
using namespace std;
const int maxn=;
const int modd=;
ll f[];
int dl[maxn],l,r;
ll a[],c[],b[];
int i,j,k,n,m,lena,lenc; inline d xl(int k,int j){//k<j<i-2
return ( f[j]*(j+)-f[k]*(k+) )/ (d)(f[j]-f[k]);
}
int ra,fh;char rx;
inline int read(){
rx=getchar(),ra=,fh=;
while((rx<''||rx>'')&&rx!='-')rx=getchar();
if(rx=='-')fh=-,rx=getchar();
while(rx>=''&&rx<='')ra*=,ra+=rx-,rx=getchar();return ra*fh;
}
inline void multoa(){
register int i,j,k;
memset(b,,(lena*+)<<);
for(i=;i<=lena;i++)for(j=,k=i;j<=lena;j++,k++){
b[k]+=a[i]*a[j];
if(b[k]>=modd)b[k+]+=b[k]/modd,b[k]%=modd;
}
for(k=lena<<;!b[k];k--);
memcpy(a,b,(k+)<<);lena=k;
}
inline void multoc(){
register int i,j,k;
memset(b,,(lena+lenc+)<<);
for(i=;i<=lena;i++)for(j=,k=i;j<=lenc;j++,k++){
b[k]+=a[i]*c[j];
if(b[k]>=modd)b[k+]+=b[k]/modd,b[k]%=modd;
}
for(k=lena+lenc;!b[k];k--);
memcpy(c,b,(k+)<<);lenc=k;
}
inline void poi(int b){//计算4^b
c[lenc=]=;a[lena=]=;
while(b){
if(b&)multoc();
b>>=;
if(b)multoa();
}
} int main(){
n=read();
f[]=,f[]=,f[]=;
l=,r=;
for(i=;i<=;i++){
while(l<r&&xl(dl[r-],dl[r])>=xl(dl[r],i-))r--;
dl[++r]=i-;
while(l<r&&i>xl(dl[l],dl[l+]))l++;
f[i]=f[dl[l]]*(i-dl[l]-);
if(f[i-]+>f[i])f[i]=f[i-]+;
// printf(" i:%d %lld\n",i,f[i]);
}
if(n<=)printf("%lld\n",f[n]);else{
int x=n%+;
poi((n-x)/);
a[lena=]=f[x];
multoc();
for(printf("%lld",c[lenc]),i=lenc-;i>;i--){
for(j=modd/;j;j/=)if(c[i]<j)putchar('');
printf("%lld",c[i]);
}puts("");//printf(" %d\n",lenc);
}
return ;
}
[bzoj3287] Mato的刷屏计划的更多相关文章
- bzoj 3287: Mato的刷屏计划 高精水题 && bzoj AC150
3287: Mato的刷屏计划 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 124 Solved: 43[Submit][Status] Desc ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 查看ORACLE的实际执行计划
ORACLE的执行计划分为预估执行计划和实际执行计划.其中,你用Toad.PL/SQL Developer.SQL Developer.EXPLAIN PLAN FOR或者SET ATUOTRACE ...
- SQA计划和验收测试规程设计
一.SQA(软件质量保证)的定义 软件质量保证(SQA-Software Quality Assurance)是建立一套有计划,有系统的方法,来向管理层保证拟定出的标准.步骤.实践和方法能够正确地被所 ...
- oracle如何查看执行计划
1.在PL/SQL Developer中得到一个SQL的执行计划 输入想要查看执行计划的目标SQL,再按一下快捷键F5就可以了.2.explain plan 命令 explain plan for + ...
- 【声明】前方不设坑位,不收费!~ 我为NET狂官方学习计划
发个通知,过段时间学习计划相关的东西就出来了,上次写了篇指引文章后有些好奇心颇重的人跟我说:“发现最近群知识库和技能库更新的频率有点大,这是要放大招的节奏啊!” 很多想学习却不知道如何规划的人想要一个 ...
- SQL Server-聚焦查询计划Stream Aggregate VS Hash Match Aggregate(二十)
前言 之前系列中在查询计划中一直出现Stream Aggregate,当时也只是做了基本了解,对于查询计划中出现的操作,我们都需要去详细研究下,只有这样才能对查询计划执行的每一步操作都了如指掌,所以才 ...
- ORACLE从共享池删除指定SQL的执行计划
Oracle 11g在DBMS_SHARED_POOL包中引入了一个名为PURGE的新存储过程,用于从对象库缓存中刷新特定对象,例如游标,包,序列,触发器等.也就是说可以删除.清理特定SQL的执行计划 ...
- wget 显示"英国中部时间",去掉烦人的刷屏显示
wget下载文件显示多行,进度条后面显示英国中部时间,非常让人郁闷. 本来英文是eta(Estimated Time of Arrival 预计到达时间),翻译错了,干脆去掉好了. 先要有两个个工具 ...
随机推荐
- (转)为Xcode添加删除行、复制行快捷键
转摘链接:http://www.jianshu.com/p/cc6e13365b7e 在使用eclipse过程中,特喜欢删除一行和复制一行的的快捷键.而恰巧Xcode不支持这两个快捷键,再一次的恰巧让 ...
- iOS 写给iOS开发者的React Native学习路线(转)
我是一名iOS开发者,断断续续一年前开始接触React Native,最近由于工作需要,专职学习React Native也有一个多月了.网络上知识资源非常的多,但能让人豁然开朗.迅速学习的还是少数,我 ...
- Java中的UDP应用
我在<JavaSE项目之聊天室>中通过遵守TCP协议的ServerSocket与Socket实现了聊天室的群聊窗口.同时,在介绍OSI与TCP/IP参考模型时,也曾提及TCP与UDP(全称 ...
- ArcGIS API for JavaScript 4.2学习笔记[9] 同一种视图不同数据(Map)同步
本例子核心:对MapView对象的map属性值进行替换即可达到更改地图数据的效果. 这个例子用的不是Map对象了,而是用的发布在服务器上的专题地图(WebMap)来加载到MapView上进行显示. 在 ...
- bzoj 1566: [NOI2009]管道取珠
Description Input 第一行包含两个整数n, m,分别表示上下两个管道中球的数目. 第二行为一个AB字符串,长度为n,表示上管道中从左到右球的类型.其中A表示浅色球,B表示深色球. ...
- 细谈最近上线的Vue2.0项目(一)
8月初离职,来到现在的新东家负责一个新的项目.而我最近开发的两个webapp一直都是以Vue为主,这也是这篇文章的由来. 正文前的胡侃&一点点吐槽 在经历了两个公司不同的项目后,发现都存在一个 ...
- Mac下nvm管理node.js版本问题
本篇文章主要是针对已经安装了node.js和nvm管理工具小伙伴遇到的问题. 管理工具有两个,一个是nvm,还有一个是nnvm的好处就是可以管理多个node版本,而且可以切换想要的版本,可以安装一个稳 ...
- ORACLE的锁机制
数据库是一个多用户使用的共享资源.当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况.若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性. 加锁是实现数据 ...
- 谈谈序列化—实体bean一定要实现Serializable接口?
导读:最近在做项目的过程中,发现一个问题,就是我们最开始的时候,传递参数包括返回类型,都有map类型.但是由于map每次都要匹配key值,很麻烦.所以在之后就将参数传递和返回类型全都改成了实体bean ...
- ArrayList中对象 排序
public class Student implements Comparable { private String studentname; public int studentage; publ ...