zoukankan      html  css  js  c++  java
  • 【洛谷5520】青原樱

    我连普及题都不会做力

    原题:

     n<=2e6,m<=1e6,p不一定使质数,保证答案不为0

    经典高考题,推公式的时候又想起了高四数学老师用枚举法莽高考组合题的画面

    怀念啊

    首先可以发现树的排列和种的位置是相互独立的

    那么就先求出所有排列方法,然后把坑往里放

    肯定先给每相邻两个树中间放一个,然后就是不同盒子放相同球的问题

    这里需要注意:不同盒子相同球的方案数不是n^m,应该用插板法

    (如此简单的错误并不妨碍我出现

    然后你会惊喜的发现没法求组合数,因为p不一定是质数不能做除法,而nm都很大不能做递推……

    事实上,如果把整个答案表达式可以发现组合数的两个分母可以约掉一个,那就可以暴力求了

    这就说到本题的另一个做法

    先给每相邻两个数分一个坑,把它看作宽为2的一个数

    剩下的就是一个单纯的排列问题,从n-m+1个不同的坑里有顺序地选出m个。。。

    如此地简单hhh

    代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 #define LL long long
     5 LL o,n,m,p;
     6 int main(){
     7     cin>>o>>n>>m>>p;
     8     LL bwl=1;
     9     n-=m-1;
    10     for(int i=n-m+1;i<=n;++i)  bwl=bwl*i%p;
    11     cout<<bwl<<endl;
    12     return 0;
    13 }
    View Code
  • 相关阅读:
    【YbtOJ#20064】预算缩减
    【GMOJ6805】模拟speike
    【洛谷P5675】取石子游戏
    【YbtOJ#20061】波动序列
    【洛谷P4302】字符串折叠
    flash 上传文件
    HTTP 客户端发送的 头 格式
    FLEX 在本地使用 只访问本地文件
    as3 重写
    iis7 上传限制问题
  • 原文地址:https://www.cnblogs.com/cdcq/p/12647257.html
Copyright © 2011-2022 走看看