从(u,v)到(n,m)相当于走x步1*2和y步2*1满足 x+2y=n-u,2x+y=m-v

解方程然后组合计数即可。

以前没写过lucas定理,写一下……

其实就是C(n,m)%p=C(n/p,m/p)*C(n%p,m%p)%p

顺便这题的容斥有特殊性,只要把点排序,然后用f[i]表示到第i个障碍且路上没有经过其他障碍的方案即可,O(c^2)转移即可

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<cmath>
  5. #include<algorithm>
  6. typedef long long ll;
  7. using namespace std;
  8. const int mo=;
  9. struct node{ll x,y;} a[];
  10. int f[],jc[mo+],ni[mo+];
  11. ll n,m;
  12. int t,tt;
  13. bool cmp(node a,node b)
  14. {
  15. if (a.x==b.x) return a.y<b.y;
  16. return a.x<b.x;
  17. }
  18.  
  19. ll quick(ll x,int y)
  20. {
  21. ll s=;
  22. while (y)
  23. {
  24. if (y&) s=s*x%mo;
  25. x=x*x%mo; y>>=;
  26. }
  27. return s;
  28. }
  29.  
  30. int c(int n,int m)
  31. {
  32. if (n<||m<||m>n) return ;
  33. else return 1ll*jc[n]*ni[m]%mo*ni[n-m]%mo;
  34. }
  35.  
  36. int lucas(ll n,ll m)
  37. {
  38. if (n<||m<||m>n) return ;
  39. int ans=;
  40. while (n||m)
  41. {
  42. ans=1ll*ans*c(n%mo,m%mo)%mo;
  43. n/=mo; m/=mo;
  44. }
  45. return ans;
  46. }
  47.  
  48. int main()
  49. {
  50. jc[]=; ni[]=;
  51. for (int i=; i<mo; i++)
  52. {
  53. jc[i]=1ll*jc[i-]*i%mo;
  54. ni[i]=quick(jc[i],mo-);
  55. }
  56. while (scanf("%lld%lld%d",&n,&m,&t)!=EOF)
  57. {
  58. for (int i=; i<=t; i++) scanf("%lld%lld",&a[i].x,&a[i].y);
  59. a[++t]=(node){n,m};
  60. sort(a+,a+t+,cmp);
  61. memset(f,,sizeof(f));
  62. for (int i=; i<=t; i++)
  63. {
  64. if ((a[i].x+a[i].y-)%) continue;
  65. else f[i]=lucas((a[i].x+a[i].y-)/,(2ll*a[i].x-a[i].y-)/);
  66. for (int j=; j<i; j++)
  67. {
  68. if (a[i].x<a[j].x||a[i].y<a[j].y||(a[i].x+a[i].y-a[j].x-a[j].y)%) continue;
  69. f[i]=(f[i]-1ll*f[j]*lucas((a[i].x+a[i].y-a[j].x-a[j].y)/,(2ll*(a[i].x-a[j].x)-(a[i].y-a[j].y))/)%mo+mo)%mo;
  70. }
  71. }
  72. printf("Case #%d: %d\n",++tt,f[t]);
  73. }
  74. return ;
  75. }

hdu5794的更多相关文章

  1. HDU5794 A Simple Chess 容斥+lucas

    分析:转自http://blog.csdn.net/mengzhengnan/article/details/47031777 一点感想:其实这个题应该是可以想到的,但是赛场上并不会 dp[i]的定义 ...

  2. 2016多校第六场题解(hdu5793&hdu5794&hdu5795&hdu5800&hdu5802)

    这场就做出一道题,怎么会有窝这么辣鸡的人呢? 1001 A Boring Question(hdu 5793) 很复杂的公式,打表找的规律,最后是m^0+m^1+...+m^n,题解直接是(m^(n+ ...

  3. hdu-5794 A Simple Chess(容斥+lucas+dp)

    题目链接: A Simple Chess Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Ot ...

  4. hdu5794 A Simple Chess 容斥+Lucas 从(1,1)开始出发,每一步从(x1,y1)到达(x2,y2)满足(x2−x1)^2+(y2−y1)^2=5, x2>x1,y2>y1; 其实就是走日字。而且是往(n,m)方向走的日字。还有r个障碍物,障碍物不可以到达。求(1,1)到(n,m)的路径条数。

    A Simple Chess Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  5. HDU 5794 A Simple Chess (容斥+DP+Lucas)

    A Simple Chess 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5794 Description There is a n×m board ...

随机推荐

  1. sudo是干哈子的

    我sudo loop发现啊大家就都是root了,那么这和我直接用root起有啥区别呢? root      3826  0.0  0.1  56596  3984 pts/2    S+   12:5 ...

  2. JDBC数据源的驱动问题

    classes12.jar,ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的区别,之间的差异 在使用Oracle JDBC驱动时,有些问题你是不是通过替换不同版本的Oracle  ...

  3. 利用npm安装/删除/发布/更新/撤销发布包

    利用npm安装/删除/发布/更新/撤销发布包 什么是npm? npm是javascript的包管理工具,是前端模块化下的一个标志性产物 简单地地说,就是通过npm下载模块,复用已有的代码,提高工作效率 ...

  4. [POJ1631]Bridging signals

    题目大意:不知,根据样例猜测为最长上升子序列(竟然还对了) 题解:$O(n log_2 n)$,求二维偏序,(q为存答案的序列,a存原序列,len为答案) for(int i = 1; i <= ...

  5. 皮肤包项目的 Gradle 脚本演化

    我在做的一个项目需要有换肤功能,换肤的方案是采用第三方库 ThemeSkinning 的实现(在其基础上修复若干 bug).皮肤的制作是把相关的资源放在一个 app module 中打包成 apk,当 ...

  6. [NOIP2009]靶形数独 深搜+枝杈优化

    这道题,又是一位玄学搜索...... 我是用的蜗牛序搜的(顾名思义,@,这么搜),我正着搜80然后一反转比原来快了几十倍........一下AC....... 我的思路是这样的话我们可以从内到外或者从 ...

  7. jquery、zepto冲突

    <script type="text/javascript" src="js/jquery.min.js"></script> < ...

  8. [Python]简单的外星人入侵游戏

    alien_invasion.py: import sys import pygame from setting import Settings from ship import Ship impor ...

  9. [01]url请求到渲染

    http状态码有哪些?分别表示什么意思?状态码告知从服务器返回的请求结果.2XX表明请求被正常处理了.200OK.204No Content(服务器接收的请求已经处理成功,但在返回的响应报文中不包含实 ...

  10. IE9,IE10 CSS因Mime类型不匹配而被忽略问题 (转)

    写页面的时候在chrome,fireforks等页面上显示正常,但是换成IE9,IE10之后就完全没有样式了,报错信息是CSS 因 Mime 类型不匹配而被忽略,下面与大家分享下这个问题的相关的回答 ...