【排序+背包求方案数】ABC216 F

news/2024/11/24 16:44:19/

F - Max Sum Counting (atcoder.jp)

题意:

思路:

首先求方案数,除了组合数就是计数DP

但是这道题数据范围是5000,因此考虑DP

因为求的是子集的方案数,因此可以考虑给数组排序

排完序之后做一次背包(子集用背包求)

它的转移条件是A数组中选的最大值>=B数组中选的数的和

这个条件在转移的时候体现

DP中的限制条件除了多一维,也可以在转移的时候加条件

因为已经排好序了,因此选的Ai一定是最大值

那么只需要对B数组做一次01背包即可

Code:

#include <bits/stdc++.h>#define int long longusing namespace std;const int mxn=5e3+10;
const int mxe=1e6+10;
const int mod=998244353;
const int Inf=0x3f3f3f3f;struct ty{int a,b;
}p[mxn];int N;
int dp[mxn];
//选了b数组子集为j的方案数bool cmp(ty x,ty y){return x.a<y.a;
}
void solve(){cin>>N;for(int i=1;i<=N;i++) cin>>p[i].a;for(int i=1;i<=N;i++) cin>>p[i].b;sort(p+1,p+1+N,cmp);dp[0]=1;int ans=0;for(int i=1;i<=N;i++){for(int j=p[i].b;j<=p[i].a;j++){ans+=dp[j-p[i].b];ans%=mod;}for(int j=5000;j>=p[i].b;j--){dp[j]+=dp[j-p[i].b];dp[j]%=mod;}}cout<<ans<<'\n';
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;//cin>>__;while(__--)solve();return 0;
}


http://www.ppmy.cn/news/754256.html

相关文章

Creduce安装指南

配环境比写代码更复杂——我自己说的 参考install.md sudo apt-get install \libexporter-lite-perl libfile-which-perl libgetopt-tabular-perl \libregexp-common-perl flex build-essential zlib1g-dev需要自己手动安装的 flex zlib 这两个比较好装 llvm 安装llvm的 …

java if语句 swit语句以及while循环

今天我们学习了if语句swit语句以及while循环 if语句分三种 第一种就是普通的if语句 1.条件的结果是布尔类型 2.满足这个条件&#xff0c;我就怎么怎么样。。。。。语句块 if(表达式){// 表达式的结果一定是布尔类型 语句块&#xff1b; //当我满足这个条件的时候&#…

Swit 相关

Swift 关键字注解 discardableResult //表示取消不使用返回值的警告 deinit&#xff1a;属于析构函数。析构函数(destructor) 与构造函数相反 subscript&#xff1a;下标索引修饰.可以让class、struct、以及enum使用下标访问内部的值 typealias&#xff1a;为此类型声明一个…

swit基础语法第一天

基础语法和数据类型其实和基本的网络语言都差不多&#xff0c;都是那些什么double啦&#xff0c;float啦&#xff0c;什么的&#xff0c;但是感觉因为swift有数据类型安全&#xff0c;所以就基本上用两种定义。原来要int a&#xff0c;float b&#xff0c;现在就有var或者let就…

ue4蓝图和ai的区别_为什么同样是学ue4,有的人就看不起蓝图?

蓝图这个东西上手体验过&#xff0c;起码对我就是个鸡肋并且被过誉了。我今天要喷一下蓝图。 图形编程vs代码编程 蓝图并没有想象中那么简单&#xff0c;容易上手。里面的循环判断这些基本编程逻辑你都得事先懂。Cpp里的编程思想都要事先有。本身就是对cpp语言的一种映射。如果…

Java基础案例2-4为新员工分配部门

package chapter; import java.util.Scanner; public class example2_4 {public static void main(String[] args) {Scanner inputnew Scanner(System.in);System.out.println("请输入员工姓名&#xff1a;");String nameinput.next();System.out.println("应聘…

VPX SRIO交换板VPX3U-1Swit-CPS1848

VPX-1Swit-CPS1848板卡是一款 3U OpenVPX标准SRIO交换板&#xff0c;含1片IDT公司的SRIO交换机芯片CPS-1848&#xff0c;每片CPS1848包含48条Lane&#xff0c;支持SRIO GEN2高速串行协议&#xff0c;每条Lane的最高速率为6.25Gbps。除可实现基于VPX连接器的机箱内部交换之外&am…

ios swit使用ocSDK

1.先创建桥接文件&#xff0c;步骤commandN——》 iOS——》Header File——》名字“项目名字Header” 2.Build Setting ——》objective-c Bridging Header ——》把创建的header文件拉进去 然后在header文件中引入sdk文件 #ifndef ocr_swiftBridgeHeader_h #define ocr_swi…