首页 > 其他分享 >题解:P10483 小猫爬山

题解:P10483 小猫爬山

时间:2024-12-19 19:41:41浏览次数:10  
标签:cnt 小猫 P10483 题解 sum minans int dfs id

思路

第一眼我以为是个背包,但由于是分组,所以有多个缆车,明显不能用背包。我做这题是因为老师要求,那是我们在学深搜减枝,所以我就开始写深搜。

这一题实际上是先选一直最重的猫,然后搞个 \(sum\) 数组,每搞一个新缆车的就下一个下标继续放,如果能放就放,当然也要搞一个能放但不放的。减枝就是如果当前所需缆车数量大于 \(minans\) 了,就返回。

具体代码很好写。

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=101;
int n,w;
int v[N];
int sum[20];
int minans=INT_MAX;
void dfs(int id,int cnt){
    if(cnt>minans) return ;
    if(id>n){
        minans=min(minans,cnt);
        return ;
    }
    for(int i=1;i<=cnt;i++){
        if(w-sum[i]>=v[id]){
            sum[i]+=v[id];
            dfs(id+1,cnt);
            sum[i]-=v[id];
        }
    }
    sum[cnt+1]+=v[id];
    dfs(id+1,cnt+1);
    sum[cnt+1]-=v[id];
}
int main(){
    cin>>n>>w;
    for(int i=1;i<=n;i++) cin>>v[i];
    sort(v+1,v+n+1,greater<int>());
    dfs(1,0);
    cout<<minans;
    return 0;
}

标签:cnt,小猫,P10483,题解,sum,minans,int,dfs,id
From: https://www.cnblogs.com/zhouxi2022HZO/p/18617828

相关文章

  • RHCE环境公共问题解决(9.0)
    关于如何使用远程软件进行连接环境问题查看此处网络适配器模式,如果是NAT请修改为仅主机模式Vmware有两张网卡,一张是Vmware1,一张是Vmware8(环境必须用仅主机,避免环境判分错误)默认情况下,仅主机模式修改Vmware1网卡 打开Windows的网络适配器可以看到两张网卡 环境IP为1......
  • AT_agc030_f [AGC030F] Permutation and Minimum 题解
    先去掉相邻两个都填完的位置,对于两个都没填的记个数为\(c\),最后只需要将答案乘上\(c!\)。接下来考虑从小到大枚举所有数进行dp,记\(f_{i,j,k}\)表示考虑完前\(1\simi\),有\(j\)个数需要跟一个位置确定的数匹配,有\(k\)个数需要跟后面一个自由的数匹配,考虑当前的数:如果......
  • AT_agc009_d [AGC009D] Uninity 题解
    一道妙妙题。一句话题意:求点分树的高度最小值。给所有点填上一个数表示它子树\(k\),考虑一种填法什么时候满足条件,发现当且仅当任意两对值相同的点之间的路径上存在一个权值更大的点。考虑随便找一个点作为根从叶子节点开始贪心填值,每次选择能填的最小值,发现这样填最终的值的最......
  • 题解:最优硬币组合问题
    更多算法题的题解见:算法刷题题解汇总(持续更新中)一、问题背景小C有多种不同面值的硬币,每种硬币的数量是无限的。他希望知道,如何使用最少数量的硬币,凑出给定的总金额N。小C对硬币的组合方式很感兴趣,但他更希望在满足总金额的同时,使用的硬币数量尽可能少。例如:小C有三种硬币......
  • 题解:P11409 西湖有雅座
    题解:P11409西湖有雅座题目转送带简洁思路由于数据比较小,可以先预处理出任何两个零件是否能出现在同一栋大楼上。即枚举所有的两个零件,根据题意去模拟判断条件是否满足:\[\foralli,j\inU,f\left(i,j\right)\ge\lceil\frac{\min\left(S\left(i\right),S\left(j\righ......
  • 把半年前完全没思路的题解了的感觉真好
    虽然处理了很多次索引思路,不过最后还是过了。第一眼就有解题思路,这种感觉真不错,要的就是这种打怪升级的正反馈。附上解题代码`#@lcapp=leetcode.cnid=2266lang=python3[2266]统计打字方案数@lccode=startfromcollectionsimportCounterfromfunctoolsimportcac......
  • CF1100F题解
    \(CF1100F\),\(Ivan\)\(and\)\(Burgers\)题意:静态序列查询一个区间中选取任意个数的最大异或和,\((n\le10^6)\)\(sol\):考虑离线做,把询问按\(r\)从小到大排序,每次\(r\)右移时把新框进来的数加入线性基中,同时记录线性基每一位在序列中的位置,贪心的考虑显然位置越靠后越优,查......
  • 牛客小白月赛106 题解 更新至 F 题
    Preface期末周闲的没事写一场小白月赛我会在代码一些有必要的地方加上注释,签到题可能一般就不会写了.以下是代码火车头:#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<vector>#include<set>#include<queue>#include<map>......
  • tauri2文件资源访问和存储常见问题解决
    上tauri2的github上搜一下,发现问题还是挺多的,如果你是从tauri1迁移过来的话,估计要走的坑更多,因为tauri2的配置很多已经和tauri1不一样了,如果你还是习惯用tauri1的配置思维来搞tauri2的话,肯定会让你很难受。附上tauri2常用的几个链接:官方javascript的api文档:window|Tauri ......
  • [HDU5603] the soldier of love 题解
    考虑到正向求解困难,于是正难则反。那么实际上对于\(a_i\)和\(a_{i+1}\)来说,它们给答案的贡献就是满足\(l_j>a_i,r_j<a_{i+1}\)的区间数量。那么就是经典转化了。直接转换为二维数点问题即可。时间复杂度\(O(tn\logV)\),离散化可以将\(\logV\)转化为\(\logn\)。#inc......