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_{ ...
随机推荐
- 【剑指Offer】数组中重复的数字 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 Set 快慢指针 日期 题目地址:https://leetcod ...
- IT6516替代方案|CS5212替代IT6516|CapstoneCS5212
IT6516/IT6516BFN:是一款DP显示端口转VGA转换器的嵌入式MCU单片机. IT6516/IT6516BFN结合DisplayPort接收器和三重DAC,通过转换功能支持DisplayP ...
- 新环境chart包helmlint校验
在iot目录内可以执行helm lint iot-api 去校验
- 过年有燃放烟花爆竹禁令那我们用css写一个仙女棒烟花看看吧
先是去找了一张简易画的烟花照片,可以看出主要结构为歪曲的线条结构. 方案一: 弯曲的线条第一反应到的就是"圆角边框": width: 200px; height: 200px; b ...
- MongoDB性能诊断工具
1. mongostat * dirty 超过20%时阻塞新请求 * used 超过95%时阻塞新请求 * qrw 排队的请求 * conn 连接数量 mongostat:用于了解MongoDB运行状 ...
- awk流程控制
awk 中if和for while 一.awk嵌套if判断语句 格式如下: if(表达式) {语句1} else if(表达式) {语句2} else {语句3} 如果if后边的语句块是的单个语句,{ ...
- 初识python: while循环 猜年龄小游戏
知识点: 1.python注释方法: 单行注释: # 多行注释: '''注释内容 ''' (单引号或双引号都可以),亦可打印多行 例: #此处是单行注释信息 print('这里是打印内容') #这里 ...
- 在quasar 注册全局filter
A common use case for Quasar applications is to run code before the root Vue app instance is instant ...
- android studio 获取 SHA1 值
1. 生成密钥文件 2.找到控制台 输入指令 cd c: cd C:\Users\[当前登录的用户文件夹]\.android 如 cd C:\Users\cenxi\.android 就是这里 然后输 ...
- 怎样查看Jenkins的版本
where to check jenkins version To identify your current version of Jenkins, you can do one of two th ...