打卡信奥刷题(3065)用C++实现信奥题 P6874 [COCI 2013/2014 #6] KOCKICE

张开发
2026/6/3 20:16:08 15 分钟阅读
打卡信奥刷题(3065)用C++实现信奥题 P6874 [COCI 2013/2014 #6] KOCKICE
P6874 [COCI 2013/2014 #6] KOCKICE题目背景堆积木题目描述Mirko 和 Slavko 在玩积木。他们俩都有自己的一堆砖头。一共有N NN列砖头其中N NN为奇数。Mirko 桩的第i ii列中有m i m_imi​块砖而 Slavko 每列有s i s_isi​个。他们决定创建两堆一样的砖头这几堆的高度首先是严格下降然后是严格上升参见下方右图相邻列的高度恰好相差1 11见图。最低的列的左右两侧的砖头数量必须相同。允许两种操作从某一列的顶部移除一块砖。在某一列的顶部加上一块砖。问在满足上述要求的情况下最少要几次操作输入格式输入的第一行包含一个奇数N NN即两个人砖头的堆数。输入的第二行包含N NN个整数m i m_imi​即 Mirko 堆中的列高。输入的第三行包含N NN个整数s i s_isi​即 Slavko 堆中的列高。输出格式输出所需的最少操作次数。输入输出样例 #1输入 #13 1 2 3 3 2 2输出 #13输入输出样例 #2输入 #25 2 3 0 1 4 3 3 2 3 1输出 #210说明/提示样例 1 解释Mirko 在其桩的第一列的顶部放置了两块砖而 Slavko 在他桩的第三列的顶部放置了一块砖。【数据规模与约定】对于40 % 40\%40%的数据满足1 ≤ N ≤ 1000 1\le N\le 10001≤N≤10000 ≤ m i , s i ≤ 1000 0\le m_i,s_i\le 10000≤mi​,si​≤1000。对于100 % 100\%100%的数据满足1 ≤ N ≤ 3 × 10 5 1\le N\le 3\times 10^51≤N≤3×1050 ≤ m i , s i ≤ 10 12 0\le m_i,s_i\le 10^{12}0≤mi​,si​≤1012。【说明】题目译自 COCI2013-2014 CONTEST #6T3 KOCKICE。C实现#includebits/stdc.husingnamespacestd;typedeflonglongll;ll l,r,a[300009],b[300009],n;llabs_(ll x){return(x0?x:-x);}llchk(ll t){ll ans0;for(ll i0;in;i)ansabs_(t-a[i]abs_(n/2-i));for(ll i0;in;i)ansabs_(t-b[i]abs_(n/2-i));returnans;}voidprint(ll t){printf(%lld\n,chk(t));return;}intmain(){scanf(%lld,n);for(ll i0;in;i)scanf(%lld,ai);for(ll i0;in;i)scanf(%lld,bi);l0ll;r1000000000001ll;while(lr){//二分ll mid(lr)/2;if(chk(mid1)chk(mid))rmid;elselmid1;}print(l);return0;}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容

更多文章