洛谷 P2822 组合数问题 题解
今天又考试了...... 这是T2。
Analysis
考试时想了一个判断质因数个数+打表的神奇方法,但没在每次输入n,m时把ans置0,50分滚粗。
看了题解才发现原来是杨辉三角+二维前缀和,果然还是我太菜了。
注意在求前缀和的时候如果这个数是0且在杨辉三角中,说明它被k求余成了0,就要把它+1。
时间复杂度O(n²)
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #define maxn 2000
- using namespace std;
- typedef long long ll;
- inline int read()
- {
- int x=;
- bool f=;
- char c=getchar();
- for(; !isdigit(c); c=getchar()) if(c=='-') f=;
- for(; isdigit(c); c=getchar()) x=(x<<)+(x<<)+c-'';
- if(f) return x;
- return -x;
- }
- inline void write(int x)
- {
- if(x<){putchar('-');x=-x;}
- if(x>)write(x/);
- putchar(x%+'');
- }
- ll T,k,n,m;
- ll map[maxn+][maxn+],ans[maxn+][maxn+];
- int main()
- {
- T=read();k=read();
- for(int i=;i<=maxn;i++)
- {
- map[i][i]=;
- map[i][]=;
- }
- for(int i=;i<=maxn;i++)
- for(int j=;j<i;j++)
- map[i][j]=(map[i-][j-]+map[i-][j])%k;
- for(int i=;i<=maxn;i++)
- for(int j=;j<=maxn;j++)
- {
- ans[i][j]=ans[i-][j]+ans[i][j-]-ans[i-][j-];
- if(map[i][j]==&&j<=i)ans[i][j]++;
- }
- while(T--)
- {
- n=read();m=read();
- write(ans[n][m]);
- printf("\n");
- }
- return ;
- }
- 请各位大佬斧正
(反正我不认识斧正是什么意思)
洛谷 P2822 组合数问题 题解的更多相关文章
- 洛谷P2822 组合数问题(题解)
https://www.luogu.org/problemnew/show/P2822(题目传送) 先了解一下有关组合数的公式:(m在上,n在下) 组合数通项公式:C(n,m)=n!/[m!(n-m) ...
- 洛谷P2822组合数问题
传送门啦 15分暴力,但看题解说暴力分有30分. 就是找到公式,然后套公式.. #include <iostream> #include <cstdio> #include & ...
- 洛谷 P2822 组合数问题
题目描述 组合数C_n^mCnm表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的 ...
- 洛谷P2822 组合数问题
输入输出样例 输入样例#1: 1 2 3 3 输出样例#1: 1 输入样例#2: 2 5 4 5 6 7 输出样例#2: 0 7 说明 [样例1说明] 在所有可能的情况中,只有C_2^1 = 2C21 ...
- 洛谷——P2822 组合数问题
https://www.luogu.org/problem/show?pid=2822 题目描述 组合数C_n^mCnm表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三 ...
- 【洛谷P2822 组合数问题】
题目连接 #include<iostream> #include<cstring> #include<cstdio> #include<cctype> ...
- 洛谷P2822 组合数问题 杨辉三角
没想到这道题竟然这么水- 我们发现m,n都非常小,完全可以O(nm)O(nm)O(nm)预处理出stripe数组,即代表(i,j)(i,j)(i,j) 及其向上的一列的个数,然后进行递推即可. #in ...
- 【题解】洛谷P2822 [NOIP2016TG ]组合数问题 (二维前缀和+组合数)
洛谷P2822:https://www.luogu.org/problemnew/show/P2822 思路 由于n和m都多达2000 所以暴力肯定是会WA的 因为整个组合数是不会变的 所以我们想到存 ...
- 洛谷P2832 行路难 分析+题解代码【玄学最短路】
洛谷P2832 行路难 分析+题解代码[玄学最短路] 题目背景: 小X来到了山区,领略山林之乐.在他乐以忘忧之时,他突然发现,开学迫在眉睫 题目描述: 山区有n座山.山之间有m条羊肠小道,每条连接两座 ...
随机推荐
- noip2019集训测试赛(二十一)Problem B: 红蓝树
noip2019集训测试赛(二十一)Problem B: 红蓝树 Description 有一棵N个点,顶点标号为1到N的树.N−1条边中的第i条边连接顶点ai和bi.每条边在初始时被染成蓝色.高桥君 ...
- 【LEETCODE】36、121题,Best Time to Buy and Sell Stock
package y2019.Algorithm.array; /** * @ProjectName: cutter-point * @Package: y2019.Algorithm.array * ...
- 开始Jupyter Notebooks
开始Jupyter Notebooks 安装Anaconda 因为不能有空格,所以没有选C:\Program Files 认识Jupyter Notebooks 修改 jupyter notebook ...
- 【dfs】Sequence Decoding
Sequence Decoding 题目描述 The amino acids in proteins are classified into two types of elements, hydrop ...
- 在论坛中出现的比较难的sql问题:13(循环替换问题 过滤各种标点符号)
原文:在论坛中出现的比较难的sql问题:13(循环替换问题 过滤各种标点符号) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路. 去掉一个字段中的标点符号的SQL语句怎么写 ...
- 使用MD5加密字符串
一.概念: MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值. 二 ...
- MVC自定定义扩展点之ActionNameSelectorAttribute+ActionFilterAttribute 在浏览器中打开pdf文档
仅仅演示 了ASP.MVC 5 下为了在在浏览器中打开pdf文档的实现方式之一,借此理解下自定义ActionNameSelectorAttribute+ActionFilterAttribute 类的 ...
- C#6.0的新语法特性
https://www.cnblogs.com/dotnet261010/p/9147707.html https://www.cnblogs.com/wangdodo/p/7929050.html
- 高并发编程系列:ConcurrentHashMap的实现原理(JDK1.7和JDK1.8)
HashMap.CurrentHashMap 的实现原理基本都是BAT面试必考内容,阿里P8架构师谈:深入探讨HashMap的底层结构.原理.扩容机制深入谈过hashmap的实现原理以及在JDK 1. ...
- bootstrap-table分页
首先引用css: <link rel="stylesheet" type="text/css" href="css/bootstrap.css& ...