【题解】P5151 HKE与他的小朋友
【题解】P5151 HKE与他的小朋友
实际上,位置的关系可以看做一组递推式,\(f(a_i)=f(a_j),f(a_j)=f(a_t),etc...\)那么我们可以压进一个矩阵里面。
考虑到这个矩阵是\(O(n^2logn)\)的,我们观察我们单位矩阵的性质,发现每行的轮换的。
那么我们愉快地只记录第一层的信息然后矩阵快速幂了。
但是我现在可以用更贴切的办法描述这道题了!
小朋友们的换位置关系构成了一个群!
由于群的运算满足结合律,那么我们就可以快速幂了~
#include<iostream>
#include<cstring>
#include<queue>
#include<cstdlib>
#include<vector>
#include<set>
#include<map>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<bitset>
#include<ctime>
using namespace std;
#define TMP template < class ins >
#define endl '\n'
#define RP(t,a,b) for(register int t=(a),edd=(b);t<=edd;t++)
#define ERP(t,a) for(register int t=head[(a)];t;t=e[t].nx)
#define DRP(t,a,b) for(register int t=(a),edd=(b);t>=edd;t--)
typedef long long ll;
const int maxn=100005;
int n,k;
TMP inline ins qr(ins tag){
char c=getchar();
ins x=0;
int q=0;
while(c<48||c>57)
q=c==45?-1:q,c=getchar();
while(c>=48&&c<=57)
x=x*10+c-48,c=getchar();
return q==-1?-x:x;
}
struct seat {
int data[maxn];
inline int& operator [](int x){
return data[x];
}
inline void unis(){
RP(t,1,n)
data[t]=t;
}
inline seat operator *(seat x){
seat ret;
RP(t,1,n)
ret[x[t]]=data[t];
return ret;
}
inline seat operator *=(seat x){
return (*this)=(*this)*x;
}
inline seat operator ++(void){
seat ret=(*this);
seat ans;
RP(t,1,n)
ans[t]=ret[ret[t]];
return (*this)=ans;
}
inline seat operator^(int x){
int p=x;
seat ret;
ret.unis();
seat base=(*this);
while(p){
if(p&1)
ret*=base;
++base;
p>>=1;
}
return ret;
}
inline seat operator ^=(int x){
int p=x;
return (*this)=(*this)^p;
}
inline void scan(){
RP(t,1,n)
data[t]=qr(1);
}
inline void print(){
RP(t,1,n)
cout<<data[t]<<' ';
cout<<endl;
}
}orzyyb;
int main(){
n=qr(1);
k=qr(1);
orzyyb.scan();
orzyyb^=k;
orzyyb.print();
return 0;
}
【题解】P5151 HKE与他的小朋友的更多相关文章
- luogu P5151 HKE与他的小朋友
嘟嘟嘟 看到\(i\)变成了\(A_i\),我突然想起了置换这个东西.于是马上到网上学了一遍轮换乘法. 手模后发现轮换乘法满足结合律,但不满足交换律. 于是就可以快速幂啦. 需要注意的是每一次相乘是\ ...
- 洛谷P5151 HKE与他的小朋友 快速幂/图论+倍增
正解:矩阵快速幂/tarjan+倍增 解题报告: 传送门! 跟着神仙做神仙题系列III 这题首先一看到就会想到快速幂趴?就会jio得,哦也不是很难哦 然而,看下数据范围,,,1×105,,,显然开不下 ...
- HKE和他的小朋友(矩乘快速幂)
题面: 题目背景: HKE带着\(n\)个小朋友做游戏 题目描述: 现在有n个座位编号为\(1\)至\(n\),这些小朋友也编号\(1\)至\(n\).一开始所有小朋友都坐在相应的座位上.HKE的游戏 ...
- 洛谷NOIp热身赛题解
洛谷NOIp热身赛题解 A 最大差值 简单树状数组,维护区间和.区间平方和,方差按照给的公式算就行了 #include<bits/stdc++.h> #define il inline # ...
- luogu NOIp热身赛(2018-11-07)题解
为什么前面的人都跑得那么快啊? QAQ T1:区间方差 题目大意:询问区间方差,支持单点修改 首先把方差的式子展开,得到 $$d = \frac{a_1 + ... a_n}{n} - \frac{a ...
- DP小小结
入门题 : [Luogu1441]砝码称重 , [NOIP2015]子串 [AHOI2009]中国象棋 , 详见代码 [HNOI2007]梦幻岛宝珠 , 详见代码 [NOIP2012]开车旅行 , 没 ...
- 【BZOJ】【1045/1465】【HAOI2008】糖果传递
思路题/神奇的转化…… orz hzwer 或许这个思路可以从单行而非环形的递推中找到?(单行的时候,从左往右直接递推即可…… 感觉好神奇>_<脑残患者想不出…… P.S.话说在$n\le ...
- 洛谷P1982 小朋友的数字——题解
题目传送 简单地说,这题就是让我们求前i个数的最大子串和和最值. 对于最大子串和,我们可以设一个变量qian,表示以当前元素结尾的最大子串的子串和.若搜索完第i-1个小朋友,现在看到第i个小朋友时,若 ...
- BZOJ2330 糖果题解 查分约束
BZOJ 2330 糖果题解 差分约束系统 + SPFA 题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2330 Description ...
随机推荐
- Spring MVC添加支持Http的delete、put请求!(HiddenHttpMethodFilter)
浏览器form表单只支持GET与POST请求,而DELETE.PUT等method并不支持,spring3.0添加了一个过滤器,可以将这些请求转换为标准的http方法,使得支持GET.POST.PUT ...
- C# linq查询 动态OrderBy
groupList是原始数据集合,List<T> sortOrder是排序类型,desc 或者asc sortName是排序属性名称 1.使用反射. private static obje ...
- Spring整合activiti单元测试
** * Spring测试activiti配置是否正常 * <p>Title: SpringActivitiTest</p> * <p>Description: & ...
- Bitmap转灰度字节数组byte[]
工作中遇到图片转灰度数组的须要,经过研究和大神的指导.终于得到例如以下两个方法.能够实现位图转灰度数组 简单的位图转灰度数组就是:得到位图中的每一个像素点,然后依据像素点得到RGB值,最后对RGB值, ...
- datagrid columns
columns: [[ { field: 'Source_Id', title: 'Source_Id', hidden: true }, //{ field: 'Current_Value', hi ...
- 如何过滤php中危险的HTML代码
用php过滤html里可能被利用来引入外部危险内容的代码.有些时候,需要让用户提交html内容,以便丰富用户发布的信息,当然,有些可能造成显示页面布局混乱的代码也在过滤范围内. 以下是引用片段: #用 ...
- PPT如何一页多张打印且铺满整个页面
最近由于工作需要,有些ppt材料想打印出来学习,但是ppt页数较多,ppt单页打印有些浪费纸张,而且也不能拿到外面打印店去打印,所以只能自己动手设置一页多张打印,并且最后双面打印,这样就做够节省纸张了 ...
- Android 模拟机出现Installation failed due to invalid URI!错误
[2017-03-28 09:52:13 - DataVDemo06] Installation failed due to invalid URI![2017-03-28 09:52:13 - Da ...
- Python Scrapy 验证码登录处理
一.Form表单分析 以豆瓣登录页面为例分析,豆瓣登录页是:https://accounts.douban.com/login,浏览器打开之后查看源码,查找登录的form表单HTML结构.如下: 包括 ...
- 自记(项目npm)
cnpm install pug pug-cli vuex node-sass sass-loader vue-beauty axios 在main.js里面使用vue-beauty: import ...