JZOJ4800. 周末晚会
来源:互联网 发布:小白源码 编辑:程序博客网 时间:2024/05/16 09:16
题目大意
Data Constraint
题解
先简单提一下Burnside引理。
Burnside引理
所以,我们只要求出了每种置换下的不动点数,就求出了答案。
考虑当前这种置换是移动
现在问题变成求长度为
时间复杂度:O(n)
SRC
#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>using namespace std ;#define N 2000 + 10typedef long long ll ;const int MO = 1e8 + 7 ;ll f[N] , S[N] , Si[N] ;int T , n , K ;int ans ;int gcd( int x , int y ) { return !y ? x : gcd( y , x % y ) ; }ll Power( ll x , int k ) { ll s = 1 ; while ( k ) { if ( k & 1 ) s = (ll)s * x % MO ; x = (ll)x * x % MO ; k /= 2 ; } return s ;}int main() { scanf( "%d" , &T ) ; while ( T -- ) { scanf( "%d%d" , &n , &K ) ; Si[0] = ans = 0 ; f[0] = S[0] = 1 ; for (int i = 1 ; i <= n ; i ++ ) { if ( i - 2 >= K ) f[i] = (S[i-1] - S[i-K-2] + MO) % MO ; else f[i] = S[i-1] ; S[i] = (S[i-1] + f[i]) % MO ; Si[i] = (Si[i-1] + f[i] * i) % MO ; } for (int i = 1 ; i <= n ; i ++ ) { ll d = gcd( i , n ) ; if ( d - 2 >= K ) ans = ((ans + d * (S[d-1] - S[d-K-2] + MO) % MO) % MO - (Si[d-1] - Si[d-K-2] + MO) % MO + MO) % MO ; else ans = (ans + d * S[d-1] % MO - Si[d-1] + MO) % MO ; if ( K >= n ) ans = (ans + 1) % MO ; } ans = (ll)ans * Power( n , MO - 2 ) % MO ; printf( "%d\n" , ans ) ; } return 0 ;}
以上.
1 0
- 【JZOJ4800】周末晚会 题解
- [JZOJ4800]周末晚会
- JZOJ4800. 周末晚会
- JZOJ4800. 【GDOI2017模拟9.24】周末晚会
- 周末晚会
- BZOJ1547 周末晚会
- bzoj1547: 周末晚会
- 【GDOI2017模拟9.24】周末晚会
- 周末
- 周末!
- 周末
- 周末~~~~
- 周末
- 周末
- 周末
- 周末
- 周末
- 周末
- Recyclerview.getLayoutPosition()问题
- Keepalived+MySQL主主数据同步实现数据库高可用(HA)
- Codevs3567 宫廷守卫
- Dubbo事件通知
- HDU 2602 Bone Collector 01背包(裸) .
- JZOJ4800. 周末晚会
- stm 64位整数加减乘除时须注意的一点
- 二维码扫描及简单二维码生成
- java SAX解析XML文件
- SQL Server 数据库 学习笔记
- 04 过程抽象和返回一个值的函数---小结
- Android GridView之添加分隔线,动态设置高度,实现高度自适应,并解决第一个item不显示的问题
- uc/os II读书笔记(1)
- 文章标题