[ABC238F] Two Exams 题解
1.AT_abc333_e [ABC333E] Takahashi Quest 题解2.[ABC265F] Manhattan Cafe 题解3.[ABC271E] Subsequence Path 题解4.[ABC273D] LRUD Instructions 题解5.P8085 [COCI2011-2012#4] KRIPTOGRAM 题解
6.[ABC238F] Two Exams 题解
7.[ABC217F] Make Pair 题解8.[ABC219F] Cleaning Robot 题解9.[ABC219E] Moat 题解10.[ABC221D] Online games 题解11.[ABC221E] LEQ 题解12.[ABC223E] Placing Rectangles 题解13.[ABC211D] Number of Shortest paths 题解14.[ABC211F] Rectilinear Polygons 题解15.[ABC223F] Parenthesis Checking 题解16.CF154C Double Profiles 题解17.[ABC208D] Shortest Path Queries 2 题解18.[ABC212E] Safety Journey 题解19.[ABC229E] Graph Destruction 题解20.[ABC240E] Ranges on Tree 题解21.[ABC261E] Many Operations 题解22.P10842 【MX-J2-T3】Piggy and Trees 题解[ABC238F] Two Exams
思路解析
这题很麻烦,因为有两个维度。所以可以想到先按照第一维排序,这样就不需要考虑第二维的问题。其次再发现数据范围小,可以想到能用 dp 做,接下来就考虑如何 dp。首先我们要知道我们遍历到了第几个公民,同时还要知道还剩下几个代表名额,同时我们还需要思考第二维对选择代表的影响。于是想到
然后考虑状态转移,分为选和不选两种情况。
-
如果不选,
不变,但需要更新 ,所以可得 -
如果选,则
需要加一,同时比较 和 ,可得
最后的答案就是
细节:初始时没有一个人不选,
时间复杂度:第一维枚举每一个人,第二维枚举选几个人,第三维枚举当前最小值,因此为
code
#include<bits/stdc++.h>
using namespace std;
#define PII pair<int, int>
#define fir first
#define sec second
const int N = 310, mod = 998244353;
int n, m, f[N][N][N];
PII a[N];
int main() {
cin >> n >> m;
for(int i = 1; i <= n; i++) {
cin >> a[i].fir;
}
for(int i = 1; i <= n; i++) {
cin >> a[i].sec;
}
sort(a + 1, a + n + 1, [](PII x, PII y) { return x.fir < y.fir;});
f[0][0][n + 1] = 1;
for(int i = 1; i <= n; i++) {
for(int j = 0; j <= m; j++) {
for(int k = 1; k <= n + 1; k++) {
f[i][j][min(a[i].sec, k)] = (f[i][j][min(a[i].sec, k)] + f[i - 1][j][k]) % mod; //不选的情况
if(j > 0 && a[i].sec < k) { //判断,不能使当前人的排名落后于 k
f[i][j][k] = (f[i][j][k] + f[i - 1][j - 1][k]) % mod; //选的情况
}
}
}
}
int ans = 0;
for(int i = 1; i <= n + 1; i++) ans = (ans + f[n][m][i]) % mod; //统计以每一个数结尾的情况
cout << ans;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】