首页 > 其他分享 >洛谷-2822

洛谷-2822

时间:2023-03-11 11:23:23浏览次数:46  
标签:Case 洛谷 cout int include 2822

洛谷-2652

key

思路

有个mod k的想法很好,然后就是对于一遍一遍的询问进行前缀和优化,但有个问题就是算出来的s矩阵最开始是个下三角矩阵,但是根据前缀和公式来看,s[i][j]上方的s[i - 1][j]就是空的,而不是我们需要的值,所以要在第i行结束时,对s[i][i + 1]进行特别赋值。

// #include <bits/stdc++.h>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
#include <unordered_map>
#include <map>
#include <set>
#include <cctype>
#include <list>
#include <bitset>
#define dbg(x) cout << #x << " = " << x << "\n"
using namespace std;
#define cf int _o_o_;cin>>_o_o_;for (int Case = 1; Case <= _o_o_;Case++)
#define SZ(x) (int)(x.size())
inline void solve();
int main() {solve();return 0;}
 
using ll = long long;
const int maxn = 2010;

int c[maxn][maxn];

ll s[maxn][maxn];
 
inline void solve() {
    int t, k;
    cin >> t >> k;
    c[0][0] = 1;
    for (int i = 1;i <= 2000;i++) {
        c[i][0] = 1;
    }
    for (int i = 1;i <= 2000;i++) {
        for (int j = 1;j <= i;j++) {
            c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % k;
            if (c[i][j] == 0) s[i][j] = 1;
        }
    }
    for (int i = 1;i <= 2000;i++) {
        for (int j = 1;j <= i;j++) {
            s[i][j] += s[i][j - 1] + s[i - 1][j] - s[i - 1][j - 1];
        }
        s[i][i + 1] = s[i][i];
    }
    while (t -- ) {
        int n, m;
        cin >> n >> m;
        if (m > n) cout << s[n][n] << "\n";
        else cout << s[n][m] << "\n";
    }
}

标签:Case,洛谷,cout,int,include,2822
From: https://www.cnblogs.com/FanWQ/p/17205525.html

相关文章

  • 【洛谷】P3365 改造二叉树(LIS)
    原题链接题意给定一颗二叉树,每次操作可以修改一个点的权值为任意整数,求将原树变为二叉搜索树的最小操作次数。注意:本题中的二叉搜索树定义为:每个左边儿子的权值都严格小......
  • 洛谷P1213 [USACO1.4][IOI1994]时钟 The Clocks
    这是一个暴力枚举题有两种解决方法,第一种用九重for循环(有点麻烦,尽量别用),第二种简化版(虽然行数少了,但难理解),先来看看 题目!!!题目描述考虑将如此安排在一个 3*3 行......
  • 进制转换 洛谷P1017
    题目传送门题目描述我们可以用这样的方式来表示一个十进制数:将每个阿拉伯数字乘以一个以该数字所处位置为指数,以 1010 为底数的幂之和的形式。例如 123123 可表......
  • 洛谷P1036
    P1036[NOIP2002普及组]选数典型的dfs,建议书写递归代码时层次应与形参列表中自己所标志的层次相对应,否则很容易混乱importjava.util.Scanner;publicclassP1036......
  • 洛谷P1030
    P1030[NOIP2001普及组]求先序排列思路:由后序遍历序列求出根由中序遍历序列求出左右子树递归上述12直到中序/后续遍历序列为空publicclassP1030{//已......
  • 洛谷P1149 [NOIP2008 提高组] 火柴棒等式
    这道题就是一个经典的暴力枚举题意是输出一共有的火柴根数,输出这些火柴棒用完可以有多少拼法下面,我们来数一数拼成十个数和两个符号(’+‘&&’=‘)各用几根火柴棒0要用......
  • 洛谷P1149 [NOIP2008 提高组] 火柴棒等式
    这道题其实很简单只是个暴力枚举!!!题目大致意思是说给你一堆火柴棒,两个符号(‘+’&&‘-’)。第一个数字‘0’用了6根火柴棒,‘1’用了2根火柴棒,依此类推......这样,我们就能......
  • 洛谷 P4048更新题面
    [JSOI2010]冷冻波题目描述WJJ喜欢“魔兽争霸”这个游戏。在游戏中,巫妖是一种强大的英雄,它的技能FrozenNova每次可以杀死一个小精灵。我们认为,巫妖和小精灵都可以看成......
  • 洛谷P4051 [JSOI2007]字符加密 题解 后缀数组sa的应用
    题目链接:https://www.luogu.com.cn/problem/P4051题目大意:给定一个长度为\(n\)的字符串\(s\),每次将\(s\)的首字符取出放到末尾……这样能得到\(n\)个字符串。将......
  • 位运算-洛谷P1469 找筷子
    位运算的符号:与(&) and当两个数在二进制下对应位数上均为 11 时,得到的结果为 11.或(|) or当两个数在二进制下对应位数上有一个为 11 时,得到的结果为 11.......