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

P10483 小猫爬山

时间:2025-01-20 18:59:48浏览次数:1  
标签:小猫 P10483 dfs st int num 缆车 爬山

P10483 小猫爬山

背景

这是一道 \(DFS\) 是个人就能看出来
而我第一种方法没有过( 哭死 )结果把\(DFS\)的对象改一下就过了
本题与 U208362 分为互质组 方法相同

分析题目

题目要求就是最少需要多少缆车才能装完所有小猫,因此小猫的重量可以少于缆车的载重,但不能大于(意思就是不能把小猫劈开!猫猫这么可爱,这么能劈开呢?)

思路&实现

这道题我们用 \(DFS\) 来遍历每一只小猫的重量:

\(dfs(st,num)\)
\(st\)是指当前遍历到第几个小猫
\(num\)是指当前缆车的总数

每到一只新的小猫,就会面临两个选择:

  1. 把小猫放到一个全新得缆车中,并将缆车的个数加一,且进行下一轮 \(DFS\)
  2. 不选择放入新的缆车,而是在前面已有的缆车中找可以放下的,将他加入,并进行下一轮 \(DFS\)

因此我们需要一个\(sum[i]\)来储存第 \(i\) 辆缆车剩余的容量

结束:

1.当当前遍历的 \(st==n+1\) 及遍历完所有小猫,就可以将 \(ans=num\) 并返回
2.若你当前的缆车数量已经超过之前的答案及 \(num>=ans\) 那就直接返回

最后直接上代码:

#include<bits/stdc++.h>
using namespace std;
int a[20],sum[20];
int n,w;
bool b[20];
int ans=2e9;
void dfs(int st,int num){
	if (num>=ans)
		return;
	if(st==n+1){
		ans=num;
		return;
	}
	sum[num+1]=w-a[st];
	dfs(st+1,num+1); 
	for(int i=1;i<=num;i++) {
		if (sum[i]-a[st]>=0) {
			sum[i]-=a[st];
			dfs(st+1,num);
			sum[i]+=a[st];
		}
	}
}
bool cmp(int x,int y){
	return x>y;
}
int main(){
	cin>>n>>w;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}	
	sort(a+1,a+1+n,cmp);
	dfs(1,0);
	cout<<ans;
	return 0;
}

标签:小猫,P10483,dfs,st,int,num,缆车,爬山
From: https://www.cnblogs.com/XichenOC/p/18682327

相关文章

  • 养一只小猫,你的电脑监工!!
    话说每个程序员都会比较关注自己电脑的运行状况吧?了不起就是这样,无论是编译代码还是浏览网页,都会实时监测CPU占用情况,看看有没有奇怪的进程占用过多的CPU,影响我的正常工作。今天给大家分享一个简单有趣的开源项目,让一只小猫来监视你电脑CPU的使用情况。项目简介RunCat......
  • 爬山算法与模拟退火算法的全方面比较
    一、基本概念与原理1.爬山算法        爬山算法是一种基于启发式的局部搜索算法,通过不断地向当前解的邻域中搜索更优解来逼近全局最优解。它的核心思想是,从当前解出发,在邻域内找到一个使目标函数值更大(或更小)的解作为新的当前解,直到找不到更优的解为止。2.模拟退火......
  • 基于爬山法MPPT最大功率跟踪算法的光伏发电系统simulink建模与仿真
    1.课题概述基于爬山法MPPT最大功率跟踪算法的光伏发电系统simulink建模与仿真。 2.系统仿真结果   3.核心程序与模型版本:MATLAB2022a  4.系统原理简介      最大功率点跟踪(MaximumPowerPointTracking,MPPT)是光伏发电系统中至关重要的技术,用于确......
  • 代码实现一只小猫的布局
    在前端开发中,实现一只小猫的布局可以通过多种方式,例如使用HTML和CSS来创建一个简单的静态小猫形象,或者使用更复杂的JavaScript库(如Three.js)来创建3D小猫。下面是一个简单的HTML和CSS示例,用于创建一个基本的小猫布局:<!DOCTYPEhtml><htmllang="en"><head><metacharset="U......
  • 题解:P10483 小猫爬山
    思路第一眼我以为是个背包,但由于是分组,所以有多个缆车,明显不能用背包。我做这题是因为老师要求,那是我们在学深搜减枝,所以我就开始写深搜。这一题实际上是先选一直最重的猫,然后搞个\(sum\)数组,每搞一个新缆车的就下一个下标继续放,如果能放就放,当然也要搞一个能放但不放的。减枝......
  • 华为OD机试真题---小明周末爬山
    华为OD机试中的“小明周末爬山”题目是一道经典的路径搜索和动态规划问题。以下是对该题目的详细解析:一、题目描述周末小明准备去爬山锻炼,地图上的0代表平地,山的高度使用1到9来表示。小明每次爬山或下山高度只能相差k及k以内,且每次只能上下左右一个方向上移动一格。小明从......
  • 小猫爬山——dfs模板题一道
    最近做搜索里面的题目,发现还是有很多漏洞的比如下面这道小猫爬山题,还是不会做看的答案...气死我了小猫爬山时间限制: 1.000 Sec  内存限制: 128MB提交 状态题目描述Freda和rainbow饲养了N只小猫,这天,小猫们要去爬山。经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦......
  • P1375 小猫
    原题链接题解非交叉匹配code#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constllmod=1e9+7;llqpow(lla,llb){llres=1;while(b){if(b&1)res=res*a%mod;a=a*a%mod;b>>......
  • 优化问题和采样问题同样都是爬山,那么两者的算法是不是互通的?
    优化问题和采样问题在某些方面确实存在相似性,但它们的算法并不完全互通,而是各有其独特的特性和应用场景。优化问题是在给定约束条件下,寻找一个目标函数的最优解(最大值或最小值)的过程。这类问题在运筹学、工程、经济学、物流、能源、金融等许多领域都有广泛应用。优化算法的目......
  • 华为OD机试真题-猴子爬山-2024年OD统一考试(官方D卷原题)
    介绍2024年OD统一考试(D卷),最新题库。5-11月份考试都是从本专栏中抽题,命中率百分之95。多语言解法,在线练习机试是在牛客考试,练习的时候也可以在牛客网练习,提前熟悉操作https://ac.nowcoder.com/acm/contest/5652/K点击上方链接进入牛客练习界面,可以自定义题目,自定义输入......