CDOJ 1268 Open the lightings

组合数学题。好难啊,请教了Xiang578大神&&看了他题解才会的......

甩上题解链接:http://blog.csdn.net/xinag578/article/details/50645160

另外还发现了组合数递推公式实际上就是一个01背包。

#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <queue>
#include <stack>
#include <map>
#include <vector>
using namespace std;

const int maxn=1000+10;
long long MOD=1e9+7;
long long f[maxn];
long long c[maxn][maxn];

void init()
{
    f[0]=1,f[1]=1;
    for(int i=2;i<=1000;i++) f[i]=(f[i-1]+((i-1)*f[i-2])%MOD)%MOD;

    c[1][1]=1;
    for(int i=1;i<=1000;i++) c[i][0]=1;
    for(int i=2;i<=1000;i++)
    {
        for(int j=1;j<=1000;j++)
        {
            c[i][j]=(c[i-1][j-1]+c[i-1][j])%MOD;
        }
    }
}

int main()
{
    init();
    int n,m;
    while(~scanf("%d%d",&n,&m))
    {
        printf("%lld\n",f[m-1]*f[n-m]%MOD*c[n-1][m-1]%MOD);
    }

    return 0;
}
时间: 2024-10-06 20:53:10

CDOJ 1268 Open the lightings的相关文章

CDOJ 1273 God Qing&#39;s circuital law

暴力枚举+idea.做的时候mod写错了,写成了1000000009,找了两个多小时才发现...... a[1],a[2],a[3]....a[N] b[1],b[2],b[3]....b[N] 首先需要枚举b[1]...b[N]与a[1]进行组合. 然后对a[2]...a[N]从小到大排序 对b[1],b[2],b[3]....b[N] 除当前与a[1]组合的以外,剩下的从大到小排序 然后找出每一个a[i]在不破坏a[0]最大值的情况下最大能与哪一个b[i]配对. 然后从第N个人开始往第2个人

URAL 1268. Little Chu 求最大原根

题目来源:URAL 1268. Little Chu 题意:输入n 求一个最大的k 使得k^1 k^2 k^3...k^x mod n 后各不相同 思路:mod n 后各不相同 最多有 n个 那么此事k就是原根 因为k <= n 所以从n开始向下枚举 求一个最大的原根 #include <cstdio> #include <cstring> using namespace std; typedef long long LL; int p[100000], c; LL pow_

hautoj 1268 小天使改名

1268: 小天使改名 时间限制: 2 秒  内存限制: 128 MB提交: 437  解决: 123提交 状态 题目描述 小天使的b站帐号被大家发现啦.于是小天使决定改名,将他原有ID中的两个不同位置的字母进行交换.(小天使有可能将两个不同位置的相同字母进行交换,虽然这样做他的ID并没有发生变化) Lsf知道小天使原来的ID,他想知道某个ID是否可能是小天使的新ID. 输入 第一行为数据组数T(T≤100).每组数据的第一行是字符串s1,(2≤length(s1)≤1000),为小天使的原始I

HTPJ 1268 GCD

链接: http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1268 题意: 给出n,m,定义f(t)=min |i/n−j/m+t| (i,j∈Z) .求f(t)的最大值 题解: i/n-j/m = (i*m - j*n) / (n*m),分子 = k*gcd(n,m).令d = gcd(n,m), 所以就是求 min |k*d / (n*m) +t| 的最大值,所以相邻两个结果之间的距离为d / (n*m), 要想让值最大

CDOJ 26 遮挡判断(shadow) 解题报告

题目链接http://acm.uestc.edu.cn/#/problem/show/26 出题目的给我说清东边是哪一边啊魂淡! 分析样例可得,东边是先读入数据的那一边. 这题主要考察排序,然而感谢上苍我有<algorithm> 另外,CDOJ是可以用C++11标准的匿名函数的,所以sort的比较函数我就打了匿名的 这题只要记录一下扫到的柱子中投影最西边最靠西的那根,不妨设为柱子h 如果这根柱子h能完全遮住当前扫到的柱子i,那么柱子h仍然是影子最靠西的柱子 如果这根柱子h不能完全遮住当前扫到的

cdoj 1489 老司机采花

地址:http://acm.uestc.edu.cn/#/problem/show/1489 题目: 老司机采花 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 老司机是一个武功高强,飞檐走壁的采花大盗,特别喜欢采花!一天,某组织想求老司机盗取一件神秘宝物,所以为了讨好老司机而特意安排了一场采花会.该采花会只能摆n朵花(花的颜色有10种可供选择,颜色

CDOJ 3 BiliBili, ACFun… And More! 解题报告

好吧,我还是回来了,竞赛结束后也没怎么碰那个unnamed.space了,现在早就已经过期了.同样的几个月没有碰OI了,手明显生疏很多,毕业了重新搞搞OI吧,想必落下了很多. 高考考得很渣,不过很荣幸自主招生进了电子科技大学某郫县男子技校,于是去他们的OJ上围观了一下,随便做几题玩玩. 嘛,嘛,不提了,我来讲讲CDOJ 3的大致做法,很明显的追及问题,因为数据很小,\(O(n)\)暴力可过,然而推公式的话,也是有\(O(1)\)的做法的. 这里我没有用暴力(我是做完后对拍才到网上搜到的暴力做法…

BNUOJ 1268 PIGS

PIGS Time Limit: 1000ms Memory Limit: 10000KB This problem will be judged on PKU. Original ID: 114964-bit integer IO format: %lld      Java class name: Main Mirko works on a pig farm that consists of M locked pig-houses and Mirko can't unlock any pig

CCPC2017湘潭 1263 1264 1267 1268

1263 拉升一下就A了 #include <iostream> #include <vector> #include <algorithm> #include <queue> #define LL long long int using namespace std; int main() { cin.sync_with_stdio(false); int n,m,a,b; while(cin>>n>>m>>a>&g