传送锚点: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. springBoot集成RPC

    需求 : 项目开发到尾期,仓库系统需要对接我们这边的制造系统, 为的是制造系统所使用物料时,需向仓库系统发送请求物料信息,所以需要调用 仓库接口. 使用技术: RPC 数据传输格式: json 开发环 ...

  2. 深入解析C++的auto自动类型推导

    关键字auto在C++98中的语义是定义一个自动生命周期的变量,但因为定义的变量默认就是自动变量,因此这个关键字几乎没有人使用.于是C++标准委员会在C++11标准中改变了auto关键字的语义,使它变 ...

  3. ython 并不合适职场编程,SPL 才行

    职场人员使用 Excel 进行数据处理已经成为家常便饭.不过相信大家一定有过很无助的情况,比如复杂计算.重复计算.自动处理等,再遇上个死机没保存,整个人崩溃掉也不是完全不可能. 如果学会了程序语言,这 ...

  4. nginx重新整理——————开篇[一]

    前言 因为整理http协议,顺便把nginx 整理了. 正文 主要作用: 正向代理 反向代理(负载均衡.缓存等) 静态资源 nginx 的优点: 适合高并发,一个进程可以处理很多的请求. 扩展性强,有 ...

  5. redis 简单整理——持久化之RDB[十九]

    前言 简单介绍一下redis的持久化.先来整理一下RDB. 正文 redis 支持RDB 和 AOF两种持久化机制,他们能达到的效果不一致. 那么先来看一下RDB吧. RDB 是把当前进程数据生成快照 ...

  6. c# 如何在一般处理程序中返回json

    前言 迁移以前的笔记. 正文 无论是一般处理程序,还是其他程序,处理事项,肯定在于HttpResponse. 这种情况就可以操作,至于字符是自己转换还是由HttpResponse中的信息默认转换,都没 ...

  7. python3中os.renames()和os.rename()区别

    renames源码:def renames(old, new): head, tail = path.split(new) # 作用是分割为两部分,head为路径,tail为文件名: if head ...

  8. 【SSH通道数据库连接池】连接远程linix服务器上面的mysql

    首先,我用的是阿里的druid数据库连接池,其次,需要第三方jar包,maven坐标如下: <dependency> <groupId>com.jcraft</group ...

  9. 力扣442(java)-数组中重复的数据(中等)

    题目: 给你一个长度为 n 的整数数组 nums ,其中 nums 的所有整数都在范围 [1, n] 内,且每个整数出现 一次 或 两次 .请你找出所有出现 两次 的整数,并以数组形式返回. 你必须设 ...

  10. 力扣498(java)-对角线遍历(中等)

    题目: 给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素. 输入:mat = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,4 ...