CF1983C.Have Your Cake and Eat It Too
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Alice、Bob 和 Charlie 想要分享一个被切成 n 块的矩形蛋糕。每个人对每一块蛋糕的价值评估都不同。第 i 块蛋糕对 Alice 的价值为 ai,对 Bob 的价值为 bi,对 Charlie 的价值为 ci。
所有 ai 的和、所有 bi 的和以及所有 ci 的和都相等,记为 tot。
给定每个人对每块蛋糕的价值,你需要将蛋糕分给每个人一段连续的子区间。也就是说,分配给 Alice、Bob 和 Charlie 的子区间分别可以表示为 (la,ra)、(lb,rb) 和 (lc,rc)。分配需要满足以下约束:
- 没有任何一块蛋糕被分配给多于一个人,即 [la,ra]、[lb,rb] 和 [lc,rc] 这三个区间两两不相交。
- ∑i=laraai,∑i=lbrbbi,∑i=lcrcci≥⌈3tot⌉。
这里,⌈ba⌉ 表示向上取整除法,即不小于 a/b 的最小整数。例如,⌈310⌉=4,⌈315⌉=5。
输入格式
第一行包含一个整数 t,表示测试用例数量,1≤t≤104。
对于每个测试用例:
第一行包含一个整数 n,3≤n≤2⋅105。
接下来的三行每行包含 n 个整数:
一行 n 个整数 a1,a2,…,an,表示 Alice 对每块蛋糕的价值(1≤ai≤106)。
一行 n 个整数 b1,b2,…,bn,表示 Bob 对每块蛋糕的价值(1≤bi≤106)。
一行 n 个整数 c1,c2,…,cn,表示 Charlie 对每块蛋糕的价值(1≤ci≤106)。
保证 ∑i=1nai=∑i=1nbi=∑i=1nci。
所有测试用例中 n 的总和不超过 2⋅105。
输出格式
对于每个测试用例,如果无法满足条件,输出 −1。
否则,输出六个数——la,ra,lb,rb,lc,rc,分别表示 Alice、Bob 和 Charlie 所获得子区间的起始和结束下标(下标从 1 开始)。
输入输出样例
输入#1
10 5 5 1 1 1 1 1 1 5 1 1 1 1 1 1 5 6 1 2 3 4 5 6 5 6 1 2 3 4 3 4 5 6 1 2 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 10 5 2 10 9 6 9 7 1 10 7 10 2 3 3 4 5 2 6 1 4 1 8 2 3 10 4 10 8 7 9 10 4 10 7 57113 65383 19795 53580 74452 3879 23255 12917 16782 89147 93107 27365 15044 43095 33518 63581 33565 34112 46774 44151 41756 6 6 3 1 8 7 1 10 2 6 2 2 4 10 9 2 1 2 2 5 5 5 4 5 5 1 6 3 8 6 2 4 1 9 8 10 1 1 1 1 1001 1 1 1001 1 1 1 1 1 1 1 1 2001 1 1 1 1 1 1 1 1 1001 1 1 1 1001
输出#1
1 1 2 3 4 5 5 6 1 2 3 4 -1 -1 1 1 3 3 2 2 -1 1 2 3 4 5 7 3 6 1 1 2 2 1 2 3 4 5 5 1 5 6 7 8 10
说明/提示
在第一个测试用例中,三组数组的总和都是 9。每个人需要获得一段总价值至少为 ⌈39⌉=3 的蛋糕。
如果将区间 (1,1) 分配给 Alice,其总价值为 5,满足 ≥3;将区间 (2,3) 分配给 Bob,其总价值为 1+5=6,满足 ≥3;将区间 (4,5) 分配给 Charlie,其总价值为 1+5=6,也满足 ≥3。每个人获得的蛋糕区间互不重叠,没有任何一块蛋糕被分配给多于一个人。
可以证明,对于第三个测试用例,无法满足题目要求的分配方式。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?