首页 > 其他分享 >[ABC221H] Count Multiset

[ABC221H] Count Multiset

时间:2024-09-20 15:50:59浏览次数:7  
标签:Count 数字 填入 int sum ABC221H Multiset mod

题意

image

思路

参考了题解做法。

设 \(f_{i, j}\) 表示填入 \(i\) 个数字,和为 \(j\) 的方案数。

每次可以填入 \(0\),或者将整个数列 \(+1\)。

\(g_{i, j}\) 表示填入 \(i\) 个数字,且这 \(i\) 个数字中没有 \(0\),何为 \(j\) 的方案数。

易得 \(g_{i, j} = f_{i, j - i}\),表示在 \(i\) 个数字的和为 \(j - i\) 的情况下给每个数字 \(+1\),这样保证了所有数字均不为 \(0\)。

下面看 \(f\) 的转移。

\(f_{i, j} = \sum\limits_{k = 1} ^ {m} g_{i - k, j}\) 表示填入 \(k\) 个 \(0\)。

\(f_{i, j} = f_{i, j - i}\),表示全体 \(+1\)。

代码

#include <bits/stdc++.h>

using namespace std;

const int N = 5010, mod = 998244353;

int f[N][N];
int g[N][N];
int sum[N][N];
int n, m;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	
	cin >> n >> m;
	for (int i = 1; i <= m; i++) f[i][0] = 1;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			if (j >= i) {
				g[i][j] = f[i][j - i];
				f[i][j] = f[i][j - i];
			}
			sum[i][j] = (sum[i - 1][j] + g[i][j]) % mod;
			int l = i - m, r = i - 1;
			(f[i][j] += (sum[r][j] - sum[max(0, l - 1)][j]) % mod) %= mod;
		}
	}
	for (int i = 1; i <= n; i++) cout << (g[i][n] + mod) % mod << '\n';
	return 0;
}

标签:Count,数字,填入,int,sum,ABC221H,Multiset,mod
From: https://www.cnblogs.com/Yuan-Jiawei/p/18422668

相关文章

  • FIT5137  MStay account Transformation Stage
    FIT5137Assignment2-S22024 (Weight=40%)Due-Friday,20September2024,4:30PMGeneralInformationandSubmissiono Thisisanindividualassignment.o Submissionmethod:SubmissionisonlinethroughMoodle.o Penaltyforlatesubmission:5%deduc......
  • DS2000 Every Vote Counts
    DS2000Fall2024Homework 1Assigned: September 13,2024Deadline: September20, 2024at9pmeasternSubmiteachprogramasa .pyfileingradescope (filenames are specifiedbelow).You may submit multiple timesrightupuntilthedeadline.Y......
  • TSTA602– Quantitative Methods for Accounting
    TSTA602–QuantitativeMethodsforAccounting&Finance(worth20%)CaseStudy,AnIndividualAssignment,Due:22September2024by11:59pmStructureoftheassignment:Yourreportmustincludethefollowingsections,respectively:1)ExecutiveSumm......
  • Hadoop(十五)项目考核 WordCount案例
    一、需求分析需求:在给定的文本文件中统计输出每一个单词出现的总次数SEVENTEEN.txt文本内容如下:saythenameseventeenhelloweareseventeennicetomeetyouyouverynice按照MapReduce编程规范,分别编写Mapper,Reducer,Driver1、Mapper(1)将MapTask传过来的文本内容......
  • AGC005D ~K Perm Counting 题解
    [AGC005D]~KPermCounting题解如果一个排列\(P\)满足对于所有的\(i\)都有\(|P_i-i|\neqk\),则称排列\(P\)为合法的。现给出\(n\)和\(k\),求有多少种合法的排列。由于答案很大,请输出答案对\(924844033\)取模的结果。\(2\leqn\leq2\times10^3\),\(1\leqk\leqn......
  • [ABC371D] 1D Country 线段树解法
    其实这题还可以用值域线段树来做的。。。考虑到\([-1e9,1e9]\)的数据范围,则一般的线段树绝对会MLE,但同时我们注意到点的个数只有\(2e5\)个,考虑使用动态开点线段树。即对于每个村庄,看做一个点,所以我们的线段树无需模拟满二叉树。由于\(log_2(2e9)\approx30\),所以我们的线......
  • Python计数:defaultdict和Counter
    使用Python内置的defaultdict和Counter能方便的实现计数等操作题目:3289.数字小镇中的捣蛋鬼fromtypingimportListfromcollectionsimportdefaultdict,CounterclassSolution:defgetSneakyNumbers(self,nums:List[int])->List[int]:counter=Count......
  • 【洛谷 P1596】[USACO10OCT] Lake Counting S 题解(深度优先搜索)
    [USACO10OCT]LakeCountingS题面翻译由于近期的降雨,雨水汇集在农民约翰的田地不同的地方。我们用一个的网格图表示。每个网格中有水(W)或是旱地(.)。一个网格与其周围的八个网格相连,而一组相连的网格视为一个水坑。约翰想弄清楚他的田地已经形成了多少水坑。给出约翰田地的示意图,......
  • ACCT20077 – ACCOUNTING FOR MANAGEMENT DECISION
    PracticequestionsforFinalAssessmentACCT20077–ACCOUNTINGFORMANAGEMENTDECISIONMAKINGPARTA–DISCUSSIONQUESTION(25MARKS)Youarethemanagerofadepartmentinalargeorganization.Yourcompany’sprimarybusinessistomanufactureschooldes......
  • [ABC371D] 1D Country 题解
    这题,怎么说呢,\(STL\)大法好。前置芝士:lower_pound函数在结构体上的使用。那其实这题便是一个二分前缀和的水题了。结构体存储每个村庄的距离\(x\),人口\(d\)。对于每个输入的\([l,r]\)二分查找其对应的村庄,进行一次答案的统计,输出即可。代码:#include<bits/stdc++.......