【pG&&CYH-01】元旦联欢会
题解:
t1:
题解是循环矩阵
但我并没有往矩阵上想下去。。。
这个东西比较显然的是可以把它看成生成函数
然后就可以任意模数fft了
复杂度比题解优 $nlog^2$
t2:
随便推推式子就好了
t3:
矩阵的一般套路
维护$f(n-1),f(n-2),{f(n-1)}^2,{f(n-2)}^2,f(n-1)*f(n-2)$
他们之间是可以递推的
t4:不会
t5:
这种题目比较显然是找规律
然后会发现2^i-2^i+1的差是等差数列
暴力做是nlogn的
我们可以利用一些优化做到O(n)
对2^n的打表(当然我oeis了一下是有递推式的)
然后快速查某个数有几位(builtin 但noi赛事都不能用于是我就手动实现了)
然而这题空间开16m不知道意义何在
fread的快读和快输都不能用。。。
不用快读快输显然过不了
还得从网上拉了个getchar的。。很烦。。
#include <bits/stdc++.h>
using namespace std;
#define rint register int
#define IL inline
#define rep(i,h,t) for (int i=h;i<=t;i++)
#define dep(i,t,h) for (int i=t;i>=h;i--)
#define ll long long
namespace IO{
/* char ss[1<<24],*A=ss,*B=ss;
IL char gc()
{
return A==B&&(B=(A=ss)+fread(ss,1,1<<24,stdin),A==B)?EOF:*A++;
}
template<class T>void read(T &x)
{
rint f=1,c; while (c=gc(),c<48||c>57) if (c=='-') f=-1; x=(c^48);
while (c=gc(),c>47&&c<58) x=(x<<3)+(x<<1)+(c^48); x*=f;
}*/
char sr[<<],z[];int C=-,Z=;
template<class T>void wer(T x)
{
if (x<) sr[++C]='-',x=-x;
while (z[++Z]=x%+,x/=);
while (sr[++C]=z[Z],--Z);
}
IL void wer1() {sr[++C]=' ';}
IL void wer2() {sr[++C]='\n';}
};
using namespace IO;
const int mo=1e9+;
int wa[];
ll p[]={,0ll, 2ll, 14ll, 70ll, 310ll, 1302ll, 5334ll, 21590ll, 86870ll, 348502ll, 1396054ll, 5588310ll, 22361430ll, 89462102ll, 357881174ll, 431590223ll, 726491955ll, 906229948ll, 625444057ll, 502824788ll, 13396288ll, 57779454ll, 239506422ll, 974802902ll, 932766017ll, 798172909ll, 326909341ll, 576072811ll, 841162140ll, 438390354ll, 901045041ll, 899147409ll, 186524142ll, 925965631ll, 63600624ll, 973878754ll, 334467499ll, 215775006ll, 618910060ll, 987260307ll, 972281364ll, 935605751ll, 835383617ll, 527455717ll, 481665396ll, 670346656ll, 168756770ll, 649767409ll, 548550282ll, 93162436ll, 170572390ll, 278134854ll, 304230006ll, 600301213ll, 167967225ll, 205393676ll, 888624265ll, 688596163ll, 22582881ll, 626728026ll};
IL int getws(ll x)
{
if (x>>) return +wa[x>>];
if (x>>) return +wa[x>>];
if (x>>) return +wa[x>>];
return wa[x];
}
IL ll js(ll x)
{
int k=getws(x);
ll now=1ll<<(k-);
return (p[k-]+((x-now)%mo)*((x-now+)%mo)%mo)%mo;
} ll read(){
ll w=,q=;char ch=' ';
while(ch!='-'&&(ch<''||ch>''))ch=getchar();
if(ch=='-')w=-,ch=getchar();
while(ch>=''&&ch<='')q=q*+ch-'',ch=getchar();
return w*q;
}
void write(ll x)
{
if(x<){putchar('-');x=~(x-);}
int s[],top=;
while(x){s[++top]=x%;x/=;}
if(!top)s[++top]=;
while(top)putchar(s[top--]+'');
}
int main()
{
freopen("1.in","r",stdin);
freopen("2.out","w",stdout);
rep(i,,) wa[i]=wa[i>>]+;
int n;
ios::sync_with_stdio(false);
n=read();
rep(i,,n)
{
ll k;
k=read();
write(js(k));
printf("\n");
}
return ;
}
t6:
数据范围写成这样出题人真的是nb
首先每个点都可以用组合数表示出来
然后再推推式子就得到全部的了
【pG&&CYH-01】元旦联欢会的更多相关文章
- 澄清以及半AOer的日常
我是不是应该澄清什么事情-- 首先--我这个傻狗退役了--指的是退本赛季而不是本奥赛-- 其次--我喜欢天文是真的喜欢--但是至于为什么又滚回来OI了--大概是因为本校只对所谓"五大学科奥赛 ...
- 使用zfs进行pg的pitr恢复测试
前段时间做了一下zfs做pg的增量恢复测试,mark一下. 服务器信息: 主机:192.168.173.43 备机:192.168.173.41 主备使用流复制搭建,在备机上面进行了zfs快照备份. ...
- [自制简单操作系统] 1、从0-1到汇编再到c语言的奥秘
目录: 1.用0-1编写最简单的操作系统 2.用汇编改写上面0-1程序 2.1 只用DB的汇编改写版 2.2 加入RESB汇编的改写版 2.3 进一步使用汇编替换0-1文件 2.4 核心程序也用 ...
- 《Pro AngularJS》学习小结-01
<Pro AngularJS>该书以一个SportsStore案例为主线铺开. 一.开发环境设置 该书中所用的数据库data server开发环境是Deployed,从来没听说过,而且作者 ...
- edgedb 内部pg 数据存储的探索 (五) 运行进程列表信息
做为一个简单的记录,方便后期分析学习 当前包含了一个timescale 的extension 可以不用关注 信息 ps -ef |grep edgedb edgedb 10559 24858 0 4月 ...
- Ceph PG介绍及故障状态和修复
1 PG介绍pg的全称是placement group,中文译为放置组,是用于放置object的一个载体,pg的创建是在创建ceph存储池的时候指定的,同时跟指定的副本数也有关系,比如是3副本的则会有 ...
- PG extract 函数示例
pg 对时间的处理还是很灵活的, + - * / 都有支持 期间有个extract 函数还是很有用的,我们先来看看几个例子:[code] postgres=# select extract(epoc ...
- 再谈PG索引-存储架构
1.索引的基本架构 PG的索引是B+树,B+树是为磁盘或其他直接存取辅助设备而设计的一种平衡查找树,在B+树中,所有记录节点都是按键值的大小顺序存放在同一层的叶节点中,各叶节点指针进行连接: meta ...
- 分布式存储Ceph之PG状态详解
https://www.jianshu.com/p/36c2d5682d87 1. PG介绍 继上次分享的<Ceph介绍及原理架构分享>,这次主要来分享Ceph中的PG各种状态详解,PG是 ...
随机推荐
- python: c_char_p指向的bitmap图像数据,通过c_char_Array最终赋值给PIL的Image对象
def GetCurrentImage(self): ok, bitmap, buff_len = self.GetCurrentFrameBitmap() #调用C函数,返回位图数据的指针. bit ...
- [HNOI2007]神奇游乐园(插头DP)
题意:n*m的矩阵内值有正有负,找一个四连通的简单环(长度>=4),使得环上值的和最大. 题解:看到2<=m<=6和简单环,很容易想到插头DP,设f[i][j][k]表示轮廓线为第i ...
- Matlab安装完成后,出现错误licensing error:-8523的解决方法
Matlab2018安装成功后,打开出现licensing error:-8523解决方法 https://blog.csdn.net/qq_41634276/article/details/8000 ...
- 【Unity游戏开发】你真的了解UGUI中的IPointerClickHandler吗?
一.引子 马三在最近的开发工作中遇到了一个比较有意思的bug:“TableViewCell上面的某些自定义UI组件不能响应点击事件,并且它的父容器TableView也不能响应点击事件,但是TableV ...
- ArcGis——好好的属性表,咋就乱码了呢?
我就瞎说一下,反正你也不懂. ——见到许多ArcGis属性表乱码的问题,也见过各种哭笑不得的解说 目录 第一节 字符编码那些事儿→字符编码简述 第二节 都是编码惹的祸→ArcGis属性表出错原因 第三 ...
- C++题目:回文数判断
Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same back ...
- react native 中时间选择插件
npm install react-native-datepicker --save import DatePicker from 'react-native-datepicker'; <Vie ...
- Win2012 R2安装 sqlserver2017 Express
1.在官网下载 安装一直跟着点下一步就好了 到登录验证那步,给sa设置一个密码 2.下载管理工具 SQL Server Management Studio 17 https://docs.micros ...
- Ajax数据爬取
Ajax的基本原理 以菜鸟教程的代码为例: XMLHTTPRequest对象是JS对Ajax的底层实现: var xmlhttp; if (window.XMLHttpRequest) { // IE ...
- python3简单实现支持括号的加减乘除运算
1.首先表达式的空格. 2.循环计算最内层带括号的表达式(提取运算符出现的顺序,然后计算) 3.计算最外层的表达式输出. 刚接触python,代码不够严谨,仅实现功能.不知道如何在函数中使用运算符变量 ...