传送锚点:https://www.luogu.com.cn/problem/P2036

题目描述

Perket 是一种流行的美食。为了做好 Perket,厨师必须谨慎选择食材,以在保持传统风味的同时尽可能获得最全面的味道。你有 \(n\) 种可支配的配料。对于每一种配料,我们知道它们各自的酸度 \(s\) 和苦度 \(b\)。当我们添加配料时,总的酸度为每一种配料的酸度总乘积;总的苦度为每一种配料的苦度的总和。

众所周知,美食应该做到口感适中,所以我们希望选取配料,以使得酸度和苦度的绝对差最小。

另外,我们必须添加至少一种配料,因为没有任何食物以水为配料的。

输入格式

第一行一个整数 \(n\),表示可供选用的食材种类数。

接下来 \(n\) 行,每行 \(2\) 个整数 \(s_i\) 和 \(b_i\),表示第 \(i\) 种食材的酸度和苦度。

输出格式

一行一个整数,表示可能的总酸度和总苦度的最小绝对差。

样例 #1

样例输入 #1

1
3 10

样例输出 #1

7

样例 #2

样例输入 #2

2
3 8
5 8

样例输出 #2

1

样例 #3

样例输入 #3

4
1 7
2 6
3 8
4 9

样例输出 #3

1

提示

数据规模与约定

对于 \(100\%\) 的数据,有 \(1 \leq n \leq 10\),且将所有可用食材全部使用产生的总酸度和总苦度小于 \(1 \times 10^9\),酸度和苦度不同时为 \(1\) 和 \(0\)。

思路

此题顺序是对每种调料选择是放还是不放

此题我们要注意用has_tl来标记是否放调料,如果不放调料,可能在运行res = min(res, abs(add_bitter - mul_acid));一直会出现res = 1,因为abs(add_bitter - mul_acid)初始化分别为0和1导致最小绝对差为1

code

#include<iostream>
#include<vector>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 15;
int n;
int res = 1e9;//存储最小绝对差
int acid[maxn], bitter[maxn];
int st[maxn];//记录每种调料,0代表未考虑,1代表放,2代表不放
void dfs(int x) {//x代表遍历到第几种调料
if (x > n) {//遍历完n中调料,剪枝
int mul_acid = 1, add_bitter = 0;//注意将mul_acid标记为1
bool has_tl = false;//标记是否放调料,题目要求必须放一种调料 for (int i = 1; i <= n; i++) {
if (st[i] == 1) {
mul_acid *= acid[i];
add_bitter += bitter[i];
has_tl = true;
}
}
if (has_tl) {
res = min(res, abs(add_bitter - mul_acid));
}
return;
}
//放
st[x] = 1;
dfs(x + 1);
st[x] = 0;
//不放
st[x] = 2;
dfs(x + 1);
st[x] = 0; }
int main()
{
cin >> n ;
for (int i = 1; i <= n; i++) {
cin >> acid[i] >> bitter[i];
}
dfs(1);
cout << res;
return 0;
}

[COCI2008-2009 #2] PERKET的更多相关文章

  1. BZOJ 2039: [2009国家集训队]employ人员雇佣

    2039: [2009国家集训队]employ人员雇佣 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 1369  Solved: 667[Submit ...

  2. Step by Step 安装 BizTalk Server 2009

    原创地址:http://www.cnblogs.com/jfzhu/p/4020444.html 转载请注明出处 演示环境为Windows Server 2008 Enterprise, SQL Se ...

  3. BZOJ 2038: [2009国家集训队]小Z的袜子(hose) [莫队算法]【学习笔记】

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 7687  Solved: 3516[Subm ...

  4. BZOJ 2463: [中山市选2009]谁能赢呢?

    2463: [中山市选2009]谁能赢呢? Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1887  Solved: 1390[Submit][Sta ...

  5. BZOJ 2038: [2009国家集训队]小Z的袜子(hose)

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 7676  Solved: 3509[Subm ...

  6. SACS +Petrel 2009地震

    Bentley SACS V8i SS4 05.07.01.01 海洋平台分析Schlumberger Petrel 2009地震解释油藏模拟课程 Trimble Tekla Structural D ...

  7. 彻底卸载 RAD Studio 2009/2010/XE

    彻底卸载 RAD Studio 2009/2010/XE: 控制面板-->添加/删除程序中执行了卸载操作以后, 还需要做以下工作: 1. 删除以下目录(注意有些目录是隐藏的): %ALLUSER ...

  8. DataSnap 2009 系列之三 (生命周期篇)

    DataSnap 2009 系列之三 (生命周期篇) DataSnap 2009的服务器对象的生命周期依赖于DSServerClass组件的设置 当DSServer启动时从DSServerClass组 ...

  9. 莫队算法 2038: [2009国家集训队]小Z的袜子(hose)

    链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2038 2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 ...

  10. Delphi 2009 泛型容器单元(Generics.Collections)[1]: TList<T>

    Delphi 2009 新增了泛型容器单元: Generics.Collections, 同时还有一个 Generics.Defaults 单元做支持. Generics.Collections 包含 ...

随机推荐

  1. QImage 与 Mat 互转

    QImage 转 Mat Mat QImage2Mat(QImage &img) { cv::Mat mat; switch (img.format()) { case QImage::For ...

  2. 电脑开机时报错No Bootable Device找不到索引的解决方法

      本文介绍笔记本电脑出现No Bootable Device错误提示,且无法开机的多种解决办法. 1 问题产生   最近,笔记本电脑正在正常使用时,突然蓝屏,出现你的设备遇到问题,需要重启.的提示: ...

  3. LTV预估的一些思考

    什么是LTV 用户生命周期价值(Lifetime Value, LTV)是一个非常重要的指标,定义为单个用户在某种生命周期内(i.e. 从开始使用产品到停止使用期间) 为产品创造的总价值. 比如GMV ...

  4. mysql 必知必会整理—安全管理[十七]

    前言 简单介绍一下安全管理. 正文 MySQL服务器的安全基础是:用户应该对他们需要的数据具有适当的访问权,既不能多也不能少. 换句话说,用户不能对过多的数据具有过多的访问权. 多数用户只需要对表进行 ...

  5. 重新点亮linux 命令树————selinux[二十六]

    简介 简单整理selinux. 正文 selinux 是安全增强软件. 以前是系统安全是用户权限配置(用户自主控制),但是害怕用户自己设置问题,故而增加了一个selinux,也就是强制访问控制. 一般 ...

  6. node require的循环引用是怎么一回事

    require 运行过程 require 引用是同步的,没有异步这么一说,它会先运行一遍. setouttime(function(){ export=a; }) 如果我们require的时候,那么这 ...

  7. mysql 重新整理——索引简介[七]

    前言 百度百科索引: 在关系数据库中,索引是一种单独的.物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单. ...

  8. mmcls 多标签模型部署在torch serve

    GitHub仓库:gy-7/mmcls_multi_label_torchserve (github.com) 各个文件说明: cls_requests_demo:分类模型请求api服务的demo d ...

  9. SVM简单分类的使用 sklearn机器学习

    # sklearn 库中导入 svm 模块 from sklearn import svm # 定义三个点和标签 X = [[2, 0], [1, 1], [2,3]] y = [0, 0, 1] # ...

  10. c#采用toml做配置文件的坑过

    这几天在玩个程序,突然看到c#采用图toml文件,好用,直观,确实也简单. 不过...... github上示例写的 TOML to TomlTable TOML input file:v Enabl ...