题意:
有T组样例,一共n个人传球,从1号开始最后回到1号,给定方案数,求最小的传球次数。(t<=100,n<=1e6,方案数<=998244353)

思路:
考虑推柿子 。 f[i]代表从1号开始传了i次回到1号的方案数,
f[i]=(n-2)*f[i-1]+(n-1)*f[i-2],这里考虑两种情况*,第i-1个人如果是1号人员和不是1号人员,如果是一号人员,那么情况就是第i个人选择有(n-1)种,除了1号 。 还有一种如果不是一号,那么第i个人有(n-2)种选法(和左右两边的人都不相等)。然后通过特征方程来求得
f(t)=((n-1)^t+(n-1)*(-1)^t)/n=x (mod 998244353).通过移项变成指数形式,可恶的是这个(-1)的n次的怎么处理呢,这里我们可以分成两种情况,一种是奇数,一种是偶数,公差都是原来a的平方,循环节还是同一个。记录两个的最小值最后取min就行了。ps:杭电卡hashmap,这里我们手写两个hashmap,能快将近8,9倍。*
O(T*sqrt(n)*log(n))
code:

#include<iostream>
#include<cmath>
#include<unordered_map>
#include<cstring>
using namespace std;
const int mod=998244353;
typedef long long ll;
const int  N=100007;
//#define int long long
int mp2[N],mp[N];
int mpans[N],mpans2[N];
int qmi(int a,int b)
{int res=1;while(b){if(b&1)    res=1ll*res*a%mod;b>>=1;a=1ll*a*a%mod;}return res;
}
int find(int h[],int x)
{int d=(x%N+N)%N;while(h[d]!=0x3f3f3f3f && h[d]!=x){d++;if(d==N)d=0;}return d;
}
int bsgs(int a,int b,int p)
{// unordered_map<int,int>mp,mp2;int f1=(b-1+mod)%mod;//奇数int f2=(b+1)%mod;//偶数// cout<<f1<<" "<<f2<<endl;int k=sqrt(p)+1;int kt= 1ll*a*a%mod;int ak=1;
//  cout<<"k="<<k<<endl;for(int i=0,j1=1ll*f1*a%mod,j2=f2;i<=k-1;i++){int t;mp[t=find(mp,j1)]=j1;mpans[t]=i;j1=1ll*j1*kt%mod;mp2[t=find(mp2,j2)]=j2;mpans2[t]=i;j2=1ll*j2*kt%mod;ak=1ll*ak*kt%mod;//cout<<j1<<" "<<j2<<endl;}int ans=2e9;for(int i=1,j=ak;i<=k;i++){//cout<<i*k<<endl;int t;if(mp[t=find(mp,j)]==j)    ans=min(2*(i*k-mpans[t=find(mp,j)]),ans);if(mp2[t=find(mp2,j)]==j) ans=min(ans,2*(i*k-mpans2[t=find(mp2,j)])+1);j=1ll*j*ak%mod;}if(ans==2e9) return -1;return ans;}
signed main()
{ios::sync_with_stdio(0);int t;cin>>t;while(t--){memset(mp,0x3f,sizeof mp);memset(mp2,0x3f,sizeof mp2);int n,x;cin >> n >> x;if(x==1){cout<<0<<endl;continue;   }if(x==0){cout<<1<<endl;continue;}x=1ll*n*x%mod*qmi(n-1,mod-2)%mod;cout<<bsgs((n-1+mod)%mod,x,mod)<<endl;}return 0;
}

Pass! (bsgs 推柿子)相关推荐

  1. P4165 [SCOI2007]组队 推柿子+差分

    题意: 题意 分析: 推柿子 : A × h − A × m i n h + B × s − B × m i n s ≤ C A\times h-A\times min_h+B\times s-B\t ...

  2. SP5971 LCMSUM - LCM Sum(莫比乌斯反演 ,推柿子,经典)

    整理的算法模板合集: ACM模板 题目传动门 #include <iostream> #include <cstdio> #include <algorithm> ...

  3. 另类推柿子 Crypto Lights

    Crypto Lights 大意: 有 n 个台灯初始时都是暗的,每次等概率随机一个暗台灯将其点亮,若点亮后存在一个长度为 k 的连续段有大于一个台灯被点亮则立刻停止,求期望点亮多少台灯.答案对1e9 ...

  4. 2019 ACM - ICPC 全国邀请赛(西安)题解(9 / 13)

    The 2019 ACM-ICPC China Shannxi Provincial Programming Contest 目录 The 2019 ACM-ICPC China Shannxi Pr ...

  5. 暑假集训考试反思+其它乱写

    7.20 Sat 下午返校 回来改题 sdfz的巨佬觉得线上虐人不够爽,所以他们过来了 改T2的时候发现一个问题 如果要用$i$和$i\ xor\ 1$表示相邻的两条边,链式前向星tot初值必须设为1 ...

  6. NLP经典算法复现!CRF原理及实现代码

    Datawhale 作者:丁媛媛,Datawhale优秀学习者 寄语:本文先对马尔可夫过程及隐马尔可夫算法进行了简单的介绍:然后,对条件随机场的定义及其三种形式进行了详细推导:最后,介绍了条件随机场的 ...

  7. LOJ#2085 循环之美

    解:首先看这个纯循环到底是什么玩意..... 经过一番打表,发现纯循环小数就是分母与进制互质的既约分数. 1 #include <bits/stdc++.h> 2 3 std::bitse ...

  8. 经典算法复现!(条件随机场)CRF原理及实现代码

    Datawhale 作者:丁媛媛,Datawhale优秀学习者 寄语:本文先对马尔可夫过程及隐马尔可夫算法进行了简单的介绍:然后,对条件随机场的定义及其三种形式进行了详细推导:最后,介绍了条件随机场的 ...

  9. P3746 [六省联考 2017] 组合数问题(倍增、dp)

    解析 再次被"组合数问题"吊打qwq 和上一次不一样的是,这次更加被恶心到了. 一方面受上一个组合数问题影响,另外出题人也十分阴间,一开始还给了个组合数的公式,更加使我坚定的认为这 ...

最新文章

  1. 悬浮提示工具(悬浮出现自动消失)
  2. OSX Yosemite,pod install报错RPC failed; result=52,
  3. python变量运算符_Python基础 — 变量和运算符
  4. html5移动端底部效果,spring mvc +HTML5实现移动端底部上滑异步加载更多内容分页效果...
  5. paip.mysql 5.6 安装总结
  6. cap流程图_化工工艺流程图制图图例汇编.pdf
  7. 迭代器 java_面试必备(含答案):30 个 Java 高频面试问题
  8. 有趣程序和让人捧腹大笑的注释,你的注释还不够骚
  9. 解决Windows中PLSQL连接虚拟机中Oracle缓慢的问题
  10. 两个有序链表序列的交集_LeetCode | 21.合并两个有序链表
  11. jsp拿不到回显数据_第一个SpringBoot项目、核心配置文件properties(yml、yaml)、集成jsp...
  12. WIZnet无线模块WizFi210/220 硬件设计指导
  13. 保存的离线网页总是自动跳转
  14. 数据结构PTA 进阶实验5-3.2 新浪微博热门话题(分离链接法 )
  15. qq第三方登录所需appid
  16. 使用FFmpeg合并/解密/下载m3u8文件转为mp4格式
  17. 第7章 CustomView绘图进阶
  18. SRM 613 div1 500pt
  19. Chrome 安装插件 win10 Edge 安装 位置
  20. python开发工具-5个最好用的Python编程开发工具(IDE)分享

热门文章

  1. item_get - VVIC根据ID取商品详情 API
  2. Linux标识第2个扩展分区,精益创业模式与Get Big Fast模式、火箭发射思维模式,对创业假定的不同在于它认为( )。...
  3. 漂亮的红色玫瑰花——情人节-圣诞节专属-代码实现
  4. Java毕设项目-商城管理系统-基于J2EE/SSM化妆品商城系统的设计与实现
  5. eureka核心知识梳理
  6. Echart实现中国地图和地图打点
  7. PHP.ini 中文注解
  8. Cadence学习记录(三)芯片封装设计
  9. 教程:用强化学习玩转恐龙跳跳
  10. 你和真努力还差这几点