牛客网(选择困难症)+ 长沙理工大学第十二届ACM大赛 L 选择困难症 (DFS)
发布日期:2021-06-29 14:25:24 浏览次数:2 分类:技术文章

本文共 915 字,大约阅读时间需要 3 分钟。


题目大意

小L有严重的选择困难症。

早上起床后,需要花很长时间决定今天穿什么出门。
假设一共有k类物品需要搭配选择,每类物品的个数为Ai,每个物品有一个喜欢值Vj,代表小L对这件物品的喜欢程度。
小L想知道,有多少种方案,使得选出来的总喜欢值>M
需要注意,每类物品,至多选择1件,可以不选。


题解

dfs k层

当sum值大于 m 的时候直接加上后边所有的情况 跳出
因为存在每层都有一个不选择的情况
需要额外添加一个价值为 0 的点
最后我们需要回溯一下

对于我们选择的那一行,我们有两种选择,要么选要么不选,选的话要是sum值大于m 就走上面的 不选的话如果sum值也大于m 那么也是一种方案 所以我们每次在sum大于m时初始化当前方案数为1

方法当然是参考大佬的,但它们的这种思维我现在水平只能理解成这样,如果有更好的解释 请提出来交流

#include
#define mst(a,b) memset(a,b,sizeof(a))using namespace std;typedef long long ll;const int maxn=1e2+10;ll a[maxn][maxn]={
0};ll n,m,cnt,ans;int num[maxn];void dfs(int t,int sum){
if(t>n){
return; } if(sum>ans){
ll res=1; for(int i=t;i
>n>>ans){
cnt=0; mst(a,0); for(int i=0;i
>num[i]; for(int j=0;j
>a[i][j]; } } dfs(0,0); cout<
<
学如逆水行舟,不进则退

转载地址:https://chocolate.blog.csdn.net/article/details/100567874 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:2019 训练计划——DFS+贪心专题( 每天10题 ) 训练计划①
下一篇:2017 CCPC 秦皇岛 G 题 & ZOJ 3987 - Numbers (高精度+贪心)

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月04日 14时47分16秒