打卡信奥刷题(3329)用C++实现信奥题 P9311 [EGOI 2021] Twin Cookies / 姐妹分饼干

发布时间:2026/5/28 17:21:32

打卡信奥刷题(3329)用C++实现信奥题 P9311 [EGOI 2021] Twin Cookies / 姐妹分饼干 P9311 [EGOI 2021] Twin Cookies / 姐妹分饼干题目背景Day 1 Problem C.题面译自 EGOI2021 twincookies。本题官方没给交互库由于交互库实现原因数据可能较弱。如果您会写自适应交互库可以与 rui_er 取得联系。题目描述本题是一道 I/O 交互题。索菲在准备她们姐妹的生日派对。她们都喜欢饼干。这次生日她们准备尝试一些新东西不同饼干口味公司UCTC生产的饼干。UCTC 生产的每一个饼干都有一个在1 11到10 16 10^{16}1016之间的整数美味度。索菲姐妹会嫉妒彼此因此她们收到的饼干的总美味度必须相同。UCTC 只接受恰好n nn个饼干的订单。在每个订单中顾客详细说明他们想要的每个饼干的美味度。顾名思义不同饼干口味公司拒绝为同一个顾客生产两块美味度相同的饼干。索菲必须确保她从不订购同一种美味度两次——不管是同一个订单或者两个不同的订单。索菲以前从来没有从 UCTC 订购过所以她可以购买每种口味的饼干最多一次。还有一件事阻碍着索菲众所周知 UCTC 的物流服务极为糟糕。当一个顾客订购n nn个饼干只有其中一个会被送达。其余的饼干都被物流的员工偷吃了。顾客无法决定到底哪块饼干会被送达。鉴于生日临近索菲只有时间订购至多101 101101次。你的任务是帮助她。具体地你需要做的事情如下首先订购饼干。你可以订购至多101 101101次每次包含恰好n nn个想要的美味度。你可以分多次订购。在每笔订单发出后你会立刻知道送达的饼干的美味度。请记住你不能多次订购同一个美味度的饼干即使在不同订单中也不行。特别地如果你订购了一些美味度的饼干但没有送达你也不能重复订购同一美味度的饼干。然后分饼干。当你收到足够多饼干的时候你应该给姐妹分配一些饼干。每个人应该收到至少一个饼干并且她们收到的饼干的总美味度应该相同。你不需要分配所有送达的饼干。输入格式无输出格式你的程序每次输出后你必须刷新输出流。为了保证交互库立即得到你的输出这是必须的。一些例子在 C 语言中有多种选择fflush(stdout);std::cout std::flush;std::cout std::endl;注意这会打印一个换行从std::cin读入也会刷新输出流。在 Java 语言中你可以使用System.out.flush()在 Python 语言中你可以使用sys.stdout.flush()交互方式你的程序应该进行如下的若干操作从标准输入读入n nn。至多101 101101次首先向标准输出打印一行描述n nn个饼干的一个订单。然后输入送达的饼干美味度。保证这个数在当前订单的n nn个美味度当中。输出三行描述一种给姐妹分配一些饼干的方式。交互库会在每一行写一个整数。为了订购饼干输出一行以?打头并跟着n nn个整数订购的饼干美味度。在每个整数之前输出一个空格。请记住你可以订购至多101 101101次并且不被允许多次订购相同美味度的饼干。当你订购了足够多的饼干的时候输出最后三行描述分配方式。第一行的格式是! m k其中m , k 0 m,k0m,k0两个人分别分到饼干的数量。第二行包含m mm个正整数用一个空格隔开第一个人收到的饼干美味度。第三行包含k kk个正整数用一个空格隔开第二个人收到的饼干美味度。输出必须满足以下要求每个人至少收到一个饼干。每个人收到饼干的总美味度相同。你只能使用送达的饼干。每个饼干只能分给至多一个人。任何符合要求的输出都将被判为 AC。特别地你可以以任意顺序输出选择的饼干。在你输出完最后三行后最后刷新一次输出流并正常结束程序。输入输出样例 #1输入 #11 13 7 31 12 5 3输出 #1? 13 ? 7 ? 31 ? 12 ? 5 ? 3 ! 2 3 7 13 12 5 3输入输出样例 #2输入 #22 7 2 5输出 #2? 3 7 ? 2 8 ? 1 5 ! 2 1 2 5 7说明/提示提示样例输入输出应该一行一行阅读。你的程序交替从标准输入读一个整数以及向标准输出打印一行或最后三行。交互库任意地选择送达的饼干。这意味着在某些测试点中交互库可能是自适应的但在另一些测试点中交互库可能随机选择。特别地对于n 2 n2n2如果你跟样例2 22输出相同的订单你可能得到不同的结果。数据范围对于全部数据1 ≤ n ≤ 5 × 10 3 1\le n\le 5\times 10^31≤n≤5×103。子任务一8 88分n 1 n1n1。子任务二9 99分n ≤ 2 n\le 2n≤2。子任务三18 1818分n ≤ 25 n\le 25n≤25。子任务四16 1616分n ≤ 200 n\le 200n≤200。子任务五13 1313分n ≤ 10 3 n\le 10^3n≤103。子任务六36 3636分无特殊限制。C实现#includebits/stdc.husingnamespacestd;#definelllonglongvectorllseletc;vectorllout;vectorarrayll,2oknum;ll n,pos,mv,ans,anspos;intmain(){cinn;posn1;for(ll _0;_13;_){cout?;for(ll __n;__0;__--){cout ;pos;coutpos;}coutendl;ll tmp;cintmp;seletc.push_back(tmp);pos1;posn;}oknum.push_back({0,0});for(ll i0;i13;i)for(ll k0;k(1i);k)oknum.push_back({oknum[k][0]seletc[i],oknum[k][1](1i)});cout?;for(ll i1;in;i)cout i(ll)(1e15);coutendl;cinmv;cout?;for(ll i1;in;i)cout mvoknum[i][0];coutendl;cinans;for(ll i1;in;i)if(ans-mvoknum[i][0])ansposi;ll mskoknum[anspos][1];for(ll k0;k13;k){if(msk%21)out.push_back(seletc[k]);msk/2;}cout! 1 out.size()1endlansendlmv;for(ll i:out){cout i;}coutendl;return0;}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容

相关新闻