~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相关推荐

  1. AGC005D - ~K Perm Counting(组合数学,背包,dp)

    AGC005D - ~K Perm Counting Solution 经典数排列个数题,写了个大麻烦容斥. 直接容斥,考虑求出fif_ifi​表示有iii个位置∣pi−i∣=k|p_i-i|=k∣p ...

  2. 【AtCoder】AGC005

    AGC005 A - STring 用一个栈,如果遇到S就弹入,如果遇到T栈里有S就弹出栈顶,否则T在最后的串里,最后计算出的T和栈里剩的S就是答案 #include <bits/stdc++. ...

  3. Atcoder Grand Contest 005 题解

    A - STring 用一个栈模拟即可. //waz #include <bits/stdc++.h>using namespace std;#define mp make_pair #d ...

  4. 做题记录 To 2019.2.13

    2019-01-18 4543: [POI2014]Hotel加强版:长链剖分+树形dp. 3653: 谈笑风生:dfs序+主席树. POJ 3678 Katu Puzzle:2-sat问题,给n个变 ...

  5. 算法学习之:全排列问题的递归算法(Perm)

    [题目] 给出一个集合{1,2,3},求解该集合的全排列并打印. 全排列问题的递归算法(Perm) [算法思想] 设R={r1,r2,-,rn}是要进行排列的n个元素,Ri=R{ri}. 集合X中元素 ...

  6. 269道各路算法考试题集锦

    1 某编程大赛题(35道题,中等难度) 1.在实际的开发工作中,对于string的处理是最常见的编程任务,本题是要求程序对用户输入的string进行处理,具体要求如下: 1.每个单词的首字母变为大写. ...

  7. 全排列:不含重复元素和含重复元素的全排列

    1.不含重复元素 算法思路: 1.n个元素全排列 = (n-1)个元素的全排列+(另一个元素作为前缀) 2.出口:如果只有一个元素的全排列,则说明已经排完,输出数组: 3.不断将每个元素放在第一个元素 ...

  8. travis-ci中的checkpatch工具使用

    文章目录 1.使用checkpatch的详细操作步骤 2.snapshot 3.完整log 1.使用checkpatch的详细操作步骤 $ git clone https://github.com/O ...

  9. 递归与分治——全排列问题

    递归函数:以层次来想函数递归,以深度来想递归出口. 问题: 给出一个集合,输入这个集合所有的排列集合. 例如: 输入: {1,2,3} 输出: {1,2,3} {1,3,2} {2,1,3} {2,3 ...

最新文章

  1. 线性回归之数学:求导公式
  2. Jenkins报错‘Gradle build daemon disappeared unexpectedly‘的问题解决
  3. s5pv210 uboot-2012-10移植(三) 之支持SPL
  4. 内核层 inlinehook 隐藏进程
  5. 机器学习模型在携程海外酒店推荐场景中的应用
  6. python爬虫数据可视化_python 爬虫与数据可视化--python基础知识
  7. k-d tree算法原理及实现
  8. jsp oracle连接池,利用Oracle自带的连接池类的一例
  9. 奇安信校招面试题来啦
  10. cnnvd爬取漏洞信息
  11. Stack栈后进先出
  12. Chrome崩溃重装后仍然无法打开网页的解决方案
  13. Adobe Photoshop CC 2017图文安装教程,附下载地址
  14. h5策划书_DIYH5|3.12世界睡眠日H5策划方案
  15. jzyzoj 1216 poj虫洞 3259 Bellman_Ford模板
  16. 无线电能传输 wpt 磁耦合谐振 过零检测 matlab simulink仿真 pwm MOSFET,过零检测模块 基于二极管整流的无线电能传输设计
  17. postgresql设置自动更新时间方法
  18. ArtFin艺术飯+「雅贡臻品」与版权猫IP猫ipmall登陆台北!AiHi@HiFi++
  19. 计量经济学第六版第三章计算机答案,计量经济学第3章计算机习题.docx
  20. 什么计算机目录服务,AD之:DNS服务器上的SRV记录定位目录服务

热门文章

  1. linux命令:fsck
  2. IntelliJ IDEA mac快捷键
  3. 荣耀10 Turbo版将上线发布,游戏玩家欢呼的手游利器
  4. 九度OJ—题目1032:ZOJ
  5. 允许MySQL 帐号远程登录
  6. 5、kafka的操作
  7. 在python中配置MySQL数据库
  8. 常见动态内存的管理程序错误
  9. 2009年的强悍流行语~
  10. 【VM单机虚拟化学习】之View 5.1新体验