首页 > 其他分享 >165.小猫爬山

165.小猫爬山

时间:2023-11-08 11:35:39浏览次数:33  
标签:小猫 int Cars 爬山 枚举 ans 165 include 冗余

这类分组问题无非就是两种搜索顺序:

1.对于每个元素,枚举它可能分配到哪一个组

2.对于每个组,枚举它可能容纳哪些元素

这道题先把猫的体重从大到小排序,可以减小状态空间:

#include <iostream>
#include <algorithm>
#include <stdlib.h>
using namespace std;

const int N = 20, INF = 1e9;
int n, m, ans = INF;
int a[N], w[N];

void dfs(int Now, int Cars)
{
    if(Cars >= ans) return;
    if(Now == n + 1)
    {
        ans = Cars;
        return ;
    }
    for(int i = 1; i <= Cars; i++)
     if(w[i] + a[Now] <= m) 
      {
        w[i] += a[Now];
        dfs(Now + 1, Cars);
        w[i] -= a[Now];
      }
    w[Cars + 1] = a[Now];
    dfs(Now + 1, Cars + 1);
    w[Cars + 1] = 0;
}

int main()
{
    cin >> n >> m;
    for(int i = 1; i <= n; i++)
     cin >> a[i];
    sort(a + 1, a + n + 1);
    reverse(a + 1, a + n + 1);
    dfs(1,0);
    cout << ans << endl;
    return 0;
}

这里用的是方式1,他会不会存在像2一样的问题呢?即虽然避免了组内冗余,但是无法消除组间冗余:

例如,{1,2,3,4}最后的理想分组是{1,3}和{2,4}    

但是在枚举到{1,3}{2,4}之后,又枚举到了{2,4}{1,3}

幸运的是,枚举方式1不会出现组间冗余

因为我们在枚举1号猫的时候,还不存在任何一组,我们只能把他放到第一组来,它不可能会被放到第二组

又因为我们是按照猫的编号从小到大枚举的,所以第一个被处理的只可能是1号猫

因此它只可能出现在组1,不可能出现在组2

对于规模更大的情况,同理

标签:小猫,int,Cars,爬山,枚举,ans,165,include,冗余
From: https://www.cnblogs.com/smartljy/p/17816984.html

相关文章

  • Oracle ORA-01653:无法在表空间中扩展表
    OracleORA-01653:无法在表空间中扩展表在本文中,我们将介绍Oracle数据库中的一个常见错误,即ORA-01653。该错误是由于无法在表空间中扩展表而引起的。我们将解释该错误的原因,并提供一些解决该问题的示例。阅读更多:Oracle教程什么是ORA-01653错误?ORA-01653错误是Oracle数据库中......
  • 世微 60V高端电流采样降压恒流驱动IC LED电源驱动器AP51656
    1产品描述AP51656是一款连续电感电流导通模式的降压恒流源,用于驱动一颗或多颗串联LED输入电压范围从5V到60V,输出电流最大可达1.5A。根据不同的输入电压和外部器件,可以驱动高达数十瓦的LED。内置功率开关,采用高端电流采样设置LED平均电流,通过DIM引脚可以接受模拟调......
  • 题解 CF1651F【Tower Defense】
    题解CF1651F【TowerDefense】problem一个塔防游戏。一共有\(n\)个塔按\(1\simn\)的顺序排成一列,每座塔都有魔力容量\(c_i\)和魔力恢复速率\(r_i\)。对于一座塔\(i\),每过一秒它的魔力\(m_i\)会变为\(\min(m_i+r_i,c_i)\)。每座塔初始时满魔力。一共有\(q\)个......
  • CF1657E
    题目传送门description给定\(n,k\),求\(n\)个点的无向完全图满足其边权为\([1,k]\)中的正整数且其最小生成树边权和等于与1号点相连的边的权值和。\(n,k\leq250\)solution不妨先确定1号点到剩下\(n-1\)个点中\(i\)号点的边权为\(a_i\)。可以发现,对于其他每条......
  • 光伏行业集成供应链管理整体解决方案 P165
    在制造业发展的过程中,供应链管理始终是一个重要的环节。从单一的供应商到多元化供应商,从单一的生产工厂到分布式的生产基地,供应链的复杂性不断提升,使得传统的供应链管理模式难以满足企业的需求。集成供应链管理的出现,为企业解决了这个难题。集成供应链管理的目标是在保证供应链高效......
  • Go每日一库之165:go-callvis(可视化调用链)
    本文介绍一款工具go-callvis,它能够将Go代码的调用关系可视化出来,并提供了可交互式的web服务。go-callvis使用依赖Go1.17+Graphviz(可选,当工具指定了-graphviz时需要)工具安装goget-ugithub.com/ofabry/go-callvis#orgitclonehttps://github.com/ofabry/......
  • [CF1654F] Minimal String Xoration
    MinimalStringXoration有点智慧但不是特别智慧反正是我达不到的智慧。打表可以看出长度为\(2^x\)的\(i\oplusk\)出现次数为\(2^{n-k}\)。进一步发现,设\(f(k,x)\)当前选取k时,数列前\(2^k\)的下标。则\(f(k,x)=f(k,x-1)+f(k\oplus{2^{x-1}},x-1)\)因为对于\(......
  • AtCoder Regular Contest 165
    Preface这场前三题是上周四写的,今天课有点多本来想着把最近两场CF的博客先写下的但后面发现还有CCLCC的杂谈没写,写完发现由于晚上要上课没时间了,只能先把这场先写一下A-SumequalsLCM设\(n=\prod_{i=1}^kp_i^{c_i}\),不难发现令\(A_1=p_1^{c_1},A_2=p_2^{c_2},\cdots\),然......
  • Some Recent Thoughts Wrritten By NiuJiawen-2019141490165
    Recently,manystudentswhoarejunioryeararetakingpartininterviewsforexemptstudents.Somehaveobtainedsatisfactoryoffers,whereas,othersthinkitistoohardtogetawonderfuloffer. Andthereisnodoubtthatthelatterwillbefrustrated......
  • 题解 ARC165F【Make Adjacent】
    区间排序问题,主席树优化建图,最小字典序拓扑排序(priority_queue)problem给定一个长度为\(n*2\)的序列,其中每种元素恰好出现了2次。允许每次选择任意两个相邻的元素交换。那么必定存在一个最小\(k\):使得\(k\)次交换以后所有相同的元素都是相邻的。问恰好操作\(k\)次后,......