NOI Online 2021 入门组 T1
Description
题目描述
Alice、Bob 和 Cindy 三个好朋友得到了一个圆形蛋糕,他们打算分享这个蛋糕。
三个人的需求量分别为 \(a, b, c\),现在请你帮他们切蛋糕,规则如下:
- 每次切蛋糕可以选择蛋糕的任意一条直径,并沿这条直径切一刀(注意切完后不会立刻将蛋糕分成两部分)。
- 设你一共切了 \(n\) 刀,那么你将得到 \(2n\) 个扇形的蛋糕(特别地,切了 \(0\) 刀被认为是有一个扇形,即整个圆形蛋糕),将这些蛋糕分配给 Alice,Bob 和 Cindy,要求每个扇形蛋糕只能完整地分给一个人。
- 三人分到的蛋糕面积比需要为 \(a, b, c\)(不保证是最简比例,且如果 \(a, b, c\) 中某个数为 \(0\),表示那个人不吃蛋糕)。
为了完成这个任务,你至少需要切几刀?
输入格式
本题单个测试点包含多组数据。
第一行包含一个整数 \(T\),表示数据组数。
接下来 \(T\) 行,每行包含三个整数 \(a, b, c\),表示三人的需求量。
输出格式
输出 \(T\) 行,第 \(i\) 行的输出表示第 \(i\) 组数据中你至少需要切蛋糕的次数。
Solution
显然的,\(2\) 刀可以分出任意比例的蛋糕(\(a, b, c\) 的比例分别是 \(\dfrac{a}{a + b + c},\dfrac{b}{a + b + c},\dfrac{c}{a + b + c}\)),所以给 \(3\) 个人分蛋糕最多只需要 \(2 \times 3 = 6\) 刀。但注意,这 \(6\) 刀中有 \(3\) 刀必然是可以重合的,所以最多只需要 \(6 - 3 = 3\) 刀。
以下约定答案为 \(s\)。
现在来进行分类讨论:
首先将 \(a, b, c\) 排序,使 \(a \leq b \leq c\)。
如果 \(a = 0\)
- 如果 \(b = 0\),\(s = 0\)
- 如果 \(b = c\),\(s = 1\)
- 否则 \(s = 2\)
如果 \(a \neq 0\),说明 \(a, b, c\) 三值都是非零的
- 如果 \(a + b = c\) 或 \(a = b\) 或 \(b = c\),\(s = 2\)
- 否则 \(s = 3\)
Code
#include <bits/stdc++.h>
void solve()
{
int a[3];
int answer;
for (int i = 0; i < 3; i++)
{
scanf("%d", &a[i]);
}
std::sort(a, a + 3);
if (a[0] == 0)
{
if (a[1] == 0) { answer = 0; }
else
{
if (a[1] == a[2]) { answer = 1; }
else { answer = 2; }
}
}
else
{
if (a[0] + a[1] == a[2] || a[0] == a[1] || a[1] == a[2]) { answer = 2; }
else { answer = 3; }
}
printf("%d\n", answer);
return;
}
int main()
{
int tests;
scanf("%d", &tests);
while (tests--)
{
solve();
}
return 0;
}
NOI Online 2021 入门组 T1的更多相关文章
- P7473 [NOI Online 2021 入门组] 重力球
P7473 [NOI Online 2021 入门组] 重力球 题意 给你一个正方形平面,某些位置有障碍,对于平面上两个球,每次你可以改变重力方向使两个球下落到最底端,求使两个球位置重合的最小改变重力 ...
- [NOI 2020 Online] 入门组T1 文具采购(洛谷 P6188)题解
原题传送门 题目部分:(来自于考试题面,经整理) [题目描述] 小明的班上共有 n 元班费,同学们准备使用班费集体购买 3 种物品: 1.圆规,每个 7 元. 2.笔,每支 4 元. 3.笔记本,每本 ...
- [题解] [NOI Online 2021 入门组 T3] 重力球
题目大意 在一个 \(n\times n\) 的矩形中,题目会给出 \(m\) 个障碍物.有两个小球,你可以选定四个方向(上下左右)的其中一个,小球会朝着这四个方向一直滚动,直到遇到障碍物或是矩形的边 ...
- P6474 [NOI Online #2 入门组] 荆轲刺秦王
P6474 [NOI Online #2 入门组] 荆轲刺秦王 bfs+差分+卡常 本来我其实是场内选手,但是因为记错提交时间,晚了半小时才交,交不上了,就自动降级为了场外选手 题面复杂,不简述了 首 ...
- [NOI Online 2021 提高组] 积木小赛
思路不说了. 想起来自己打比赛的时候,没睡好.随便写了个\(HASH\),模数开小一半分都没有. 然后学了\(SAM\),发现这个判重不就是个水题. \(SAM\)是字串tire的集合体. 随便\(d ...
- 洛谷 P6189 - [NOI Online #1 入门组]跑步(根号分治+背包)
题面传送门 题意: 求有多少个数列 \(x\) 满足: \(\sum x_i=n\) \(x_i\geq x_{i+1}\) 答案对 \(p\) 取模. ...你确定这叫"入门"组 ...
- NOI Online #3 提高组 T1水壶 题解
题目描述 有 n 个容量无穷大的水壶,它们从 1∼n 编号,初始时 i 号水壶中装有 Ai 单位的水. 你可以进行不超过 k 次操作,每次操作需要选择一个满足 1≤x≤n−1 的编号 x,然后把 x ...
- CCF NOI Online 2021 提高组 赛后心得
T1 做个,不会,拿到 20 pts 跑路. 注意后面有个 K = 1 的部分分,这个可以递推求 b 的个数,然后直接乘上 a0 . 官方正解讲得极其详细,我还是第一次见到可以 O(K2) 做 1~n ...
- NOI Online #1 入门组 魔法
全网都是矩阵快速幂,我只会倍增DP 其实这题与 AcWing 345. 牛站 还是比较像的,那题可以矩阵快速幂 / 倍增,这题也行. 先 \(Floyd\) 预处理两点之间不用魔法最短距离 \(d_{ ...
随机推荐
- DEEP DOUBLE DESCENT: WHERE BIGGER MODELS AND MORE DATA HURT
目录 概 主要内容 Effective Model Complexity(EMC) label noise data augmentation 下降方式 SGD vs Adam Adam SGD SG ...
- [数据结构]FHQ-Treap
前言(个人评价FHQ-Treap) 这是一个巨佬(名叫范浩强)在冬令营交流的时候提出的数据结构(FHQ:\(\text{你干嘛非要旋转呢?Think Functional!}\))(可以看出FHQ大佬 ...
- Spring 处理请求和响应相关的注解
@Controller 默认返回 templates 目录下的 string.html 页面内容. 在方法中加上 @ResponseBody 注解,可以返回JSON.XML或自定义mediaType的 ...
- Python_jsonPath模块的使用
jsonpath简介 如果有一个多层嵌套的复杂字典,想要根据key批量提取value,还是比较繁琐的.jsonPath模块就能解决这个痛点,接下来我们来学习一下jsonpath模块. 因为jsonpa ...
- mysql数据库存放的路径以及安装路径
mysql数据库存放的路径以及安装路径 1.查看mysql的存放路径 1.查看数据库的存放路径 进入mysql终端 mysql>show variables like '%datadir%'; ...
- Linux上天之路(一)之Linux前世今生
0. Linux的前世今生 linux是什么 linux是一个计算机的操作系统,与windows类似,是一款系统软件 操作系统 说到操作系统其实我们首先要思考三个问题: 1)操作系统是什么? 2)操作 ...
- 阿里云服务器ECS Ubuntu16.04 初次使用配置教程(图形界面安装)
原文链接:? 传送门 前一阵子购买了阿里云的云服务器ECS(学生优惠),折腾了一阵子后对有些东西不太满意,所以就重新初始化了磁盘,刚好要重新安装图形界面,于是就顺手写了这么一篇文章. 第一次登陆服务器 ...
- HDU-1004(C语言描述)
Let the Balloon Rise 输入 输入包含多个测试用例.每个测试用例都以数字 N (0 < N < = 1000) 为起点, 分布的气球总数.下 N 行包含一个颜色.气球的颜 ...
- JUC之读写锁问题
读写锁 读写锁在同一时刻可以允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞.读写锁维护了一对锁,一个读锁和一个写锁,通过分离读锁和写锁,使得并发性相比一般的排他锁有了很大提升 ...
- Solon Web 开发,九、跨域处理
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...