AGC005D ~K Perm Counting
~K Perm Counting
神仙题++
转二分图+容斥比较好想
主要是最后的合并统计怎么做方便比较有趣
ptx大爷的博客 戳我
把二分图拆成链的想法很好
mark一下qwq
注意容斥的时候转longlong= =
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define inf 20021225
#define ll long long
#define mxn 2100
#define wph 924844033
using namespace std;int f[mxn<<1][mxn<<1][2];
int n,fac[mxn<<1],k;
int a[mxn<<1],cnt; bool cant[mxn<<1];
int main()
{int ff,ans,tmp;scanf("%d%d",&n,&k);fac[0]=1;for(int i=1;i<=(n<<1);i++) fac[i] = (ll)fac[i-1]*i%wph;for(int i=1;i<=k;i++)for(int j=0;j<=1;j++)for(int l=i;l<=n;l+=k){++cnt;if(l==i) cant[cnt]=1;}f[0][0][0]=1;for(int i=1;i<=cnt;i++)for(int j=0;j<=i;j++){f[i][j][0]=(f[i-1][j][0]+f[i-1][j][1])%wph;if(!cant[i]) f[i][j][1]=f[i-1][j-1][0];}ans=0;for(int i=0;i<=n;i++){ff=i&1?-1:1;tmp=((ll)f[cnt][i][0]+f[cnt][i][1])%wph*fac[n-i]%wph;ans=((ll)ans+ff*tmp+wph)%wph;}printf("%d\n",ans);return 0;
}
转载于:https://www.cnblogs.com/hanyuweining/p/10321887.html
AGC005D ~K Perm Counting相关推荐
- AGC005D - ~K Perm Counting(组合数学,背包,dp)
AGC005D - ~K Perm Counting Solution 经典数排列个数题,写了个大麻烦容斥. 直接容斥,考虑求出fif_ifi表示有iii个位置∣pi−i∣=k|p_i-i|=k∣p ...
- 【AtCoder】AGC005
AGC005 A - STring 用一个栈,如果遇到S就弹入,如果遇到T栈里有S就弹出栈顶,否则T在最后的串里,最后计算出的T和栈里剩的S就是答案 #include <bits/stdc++. ...
- Atcoder Grand Contest 005 题解
A - STring 用一个栈模拟即可. //waz #include <bits/stdc++.h>using namespace std;#define mp make_pair #d ...
- 做题记录 To 2019.2.13
2019-01-18 4543: [POI2014]Hotel加强版:长链剖分+树形dp. 3653: 谈笑风生:dfs序+主席树. POJ 3678 Katu Puzzle:2-sat问题,给n个变 ...
- 算法学习之:全排列问题的递归算法(Perm)
[题目] 给出一个集合{1,2,3},求解该集合的全排列并打印. 全排列问题的递归算法(Perm) [算法思想] 设R={r1,r2,-,rn}是要进行排列的n个元素,Ri=R{ri}. 集合X中元素 ...
- 269道各路算法考试题集锦
1 某编程大赛题(35道题,中等难度) 1.在实际的开发工作中,对于string的处理是最常见的编程任务,本题是要求程序对用户输入的string进行处理,具体要求如下: 1.每个单词的首字母变为大写. ...
- 全排列:不含重复元素和含重复元素的全排列
1.不含重复元素 算法思路: 1.n个元素全排列 = (n-1)个元素的全排列+(另一个元素作为前缀) 2.出口:如果只有一个元素的全排列,则说明已经排完,输出数组: 3.不断将每个元素放在第一个元素 ...
- travis-ci中的checkpatch工具使用
文章目录 1.使用checkpatch的详细操作步骤 2.snapshot 3.完整log 1.使用checkpatch的详细操作步骤 $ git clone https://github.com/O ...
- 递归与分治——全排列问题
递归函数:以层次来想函数递归,以深度来想递归出口. 问题: 给出一个集合,输入这个集合所有的排列集合. 例如: 输入: {1,2,3} 输出: {1,2,3} {1,3,2} {2,1,3} {2,3 ...
最新文章
- 线性回归之数学:求导公式
- Jenkins报错‘Gradle build daemon disappeared unexpectedly‘的问题解决
- s5pv210 uboot-2012-10移植(三) 之支持SPL
- 内核层 inlinehook 隐藏进程
- 机器学习模型在携程海外酒店推荐场景中的应用
- python爬虫数据可视化_python 爬虫与数据可视化--python基础知识
- k-d tree算法原理及实现
- jsp oracle连接池,利用Oracle自带的连接池类的一例
- 奇安信校招面试题来啦
- cnnvd爬取漏洞信息
- Stack栈后进先出
- Chrome崩溃重装后仍然无法打开网页的解决方案
- Adobe Photoshop CC 2017图文安装教程,附下载地址
- h5策划书_DIYH5|3.12世界睡眠日H5策划方案
- jzyzoj 1216 poj虫洞 3259 Bellman_Ford模板
- 无线电能传输 wpt 磁耦合谐振 过零检测 matlab simulink仿真 pwm MOSFET,过零检测模块 基于二极管整流的无线电能传输设计
- postgresql设置自动更新时间方法
- ArtFin艺术飯+「雅贡臻品」与版权猫IP猫ipmall登陆台北!AiHi@HiFi++
- 计量经济学第六版第三章计算机答案,计量经济学第3章计算机习题.docx
- 什么计算机目录服务,AD之:DNS服务器上的SRV记录定位目录服务