稚名真白的午饭 题解

题目



题目大意

虽然和小猫没关系,但可以理解为选一些小猫塞进一个缆车里,要求缆车里的小猫总重量在区间[l,r]之间,问共有几种坐法。

算法分析

ME:小猫问题用什么算法最好?


草履虫: "小猫问题"似乎没有一个特定的通用术语,可能是某种特定问题的描述。如果是关于猫的行为分析、图像识别(比如猫脸识别)、猫的追踪算法,或者是猫的饲养管理中的决策问题,不同的算法适用:

  1. 行为分析:如果涉及到猫咪行为模式识别,可以使用机器学习中的行为识别算法,如基于深度学习的卷积神经网络(CNN)或递归神经网络(RNN)。
  2. 图像识别:使用计算机视觉,特别是卷积神经网络(如ResNet、YOLO或Faster R-CNN)进行猫咪的分类和检测。
  3. 追踪算法:如卡尔曼滤波(Kalman Filter)或多目标跟踪算法(如JDE、MOT)在视频中追踪猫的运动。
  4. 决策问题:如果涉及到猫的健康或行为管理决策,可以使用规则基础的专家系统或者基于数据的决策树、随机森林或梯度提升机(GBM)。

请提供更具体的问题,这样我可以给出更精确的算法建议。


老师:。。。当然是搜索啦!



image

做法分析

首先我们让亲爱的草履虫计算机判断当前挤在缆车上的小猫是不是太重以至于大于r,或者小猫没有了,只找到了空气~那么就结束虐待查找小猫。再比如小猫重量刚刚好在强迫症缆车能承受的重量范围内,恭喜你,又多了一种虐待小猫的方法,就让答案+1,结束本次战斗。如果都不满足,就从当前的小猫一个一个虐待查找到最后一只小猫,如果这只小猫已经受过虐待,那么就放他一马,否则标记这只小猫为已虐待,放进缆车里,继续下一轮的虐待,然后这只小猫就会被视为没虐待过(小猫:?),最后输出答案就可以啦!


最后附上代码:

#include<bits/stdc++.h>
#define N 55
#define M 100005
#define int long long
using namespace std;
int n,l,r,a[N],f[N],ans;
void dfs(int x,int sum,int now)
{
	if(超重||找到了空气)return;
	if(重量在缆车能接受的范围内)ans++;
	for(int i=now+1;i<=n;i++)
	{
		if(没被虐待过)
		{
			标记为虐待过
			继续下一轮的虐待
			视为没虐待过
		}
	}
}
signed main()
{
	cin>>n>>l>>r;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	dfs(1,0,0);
	cout<<ans;
  return 0;
}

**虽然写的和翔一样,但是请各位大佬用你们的发财小手点个赞吧!

1 个赞

emm…

1 个赞

我好像在哪儿看过。。。

1 个赞

我发了两遍,一遍在智灵班学习贴,一遍在常规。

1 个赞