当前位置: 首页 > news >正文

[蓝桥杯 2023 省 A] 买瓜 --暴力DFS+剪枝优化

题目来自洛谷:

暴力思路:

①根据题目,可以知道有三种操作,第一种操作选择这个瓜,第二种操作不选择这个瓜,第三种操作选择这个瓜的一半。我们可以用一个res来记录这三种操作返回的结果,最后在返回这三种操作的最小值。

②从数据样例中知道,对于第三种操作,在进行切一半操作的时候,数据类型会发生改变,int只能存整数,这样会导致答案错误。因此我们存数据前对数据进行*2操作,同时我们的总重量也要 m*2。

③由于本题数据过大,会爆int,我们要用long long 来存。

#include<bits/stdc++.h>
//long long 来存数据
#define int long long
using namespace std;
const int N = 40;

int n, m;
int arr[N];//存数据
int w[N]; //后缀和

//x表示枚举瓜 sum 表示当前重量
int dfs(int x, int sum){
    if(sum == 2*m){
        return 0;
    }
    //遍历完了所有瓜
    if(x > n){
        return N;
    }
    //当前重量超过总重量 不合法
    if(sum > 2*m){
        return N;
    }
    //当前重量+加上当前点后缀和小于总重量 不合法
    if(sum + w[x] < 2*m){
        return N;
    }
    //直接选
    int res1 = dfs(x+1, sum + arr[x]);
    //选一半
    int res3 = dfs(x+1, sum + arr[x] / 2) +1;
    //不选
    int res2 = dfs(x+1, sum);
    return min({res1, res2, res3});
}

signed main(){
    cin >> n >> m;
    //在存入数据之前 将数据*2 
    //后续操作不需要使用 double
    for(int i = 1; i <= n; i++){
        int x; cin >> x;
        arr[i] = 2*x;
    }
    //将arr数组从大到小排序
    sort(arr+1, arr+n+1);reverse(arr+1, arr+n+1);
    //后缀和
    for(int i = n; i >= 1; i--){
        w[i] = w[i+1] + arr[i];
    }
    //得到答案
    int res =  dfs(1, 0);
    //判断一下 能不能买到总重量恰好为m的瓜
    if(res == N){
        cout << "-1" << endl;
    }else{
        cout << res << endl;
    }
    return 0;
}

相关文章:

  • L1-078 吉老师的回归(C++)
  • 202503执行jmeter压测数据库(ScyllaDB,redis,lindorm,Mysql)
  • 前缀和的例题
  • 麒麟系统使用-安装 SQL Developer
  • 【MIMIC数据库教程】十二、使用Python提取所有患者的高密度脂蛋白(HDL)指标
  • 【C++】 —— 笔试刷题day_6
  • [网络] socket编程--udp_echo_server
  • 深度解析前端面试八股文:核心知识点与高效应对策略
  • BigEvent项目后端学习笔记(一)用户管理模块 | 注册登录与用户信息全流程解析(含优化)
  • docker入门篇
  • 【极光 Orbit·STC8x】05. GPIO库函数驱动LED流动
  • 牛客周赛84 题解 Java ABCDEFG AK实录
  • Tauri + Vite + SvelteKit + TailwindCSS + DaisyUI 跨平台开发详细配置指南(Windows)
  • langchain4j对接阿里云百炼平台
  • Java 学习记录:基础到进阶之路(二)
  • 解锁MySQL 8.0.41源码调试:Mac 11.6+CLion 2024.3.4实战指南
  • 63. Three.js案例-不同材质属性来增强3D对象的真实感
  • [c语言日寄]浮点数的排序
  • 鸿蒙next 多行文字加图片后缀实现方案
  • goweb中文件上传和文件下载
  • 国家税务总局网站官网发票查询/关键词优化方法有什么步骤
  • 仿淘宝网站源码 php/手机怎么制作网页
  • 第三方平台网站的建设规划/app优化排名
  • 苏州做网站的网络公司诈骗/护肤品推广软文
  • 互联网客户做网站/百度竞价排名软件
  • asp新闻发布网站模板/seo关键词平台