打卡信奥刷题(2989)用C++实现信奥题 P6093 [JSOI2015] 套娃
P6093 [JSOI2015] 套娃题目背景刚从俄罗斯旅游回来的 JYY 买了很多很多好看的套娃作为纪念品JYY 由于太过激动把所有的套娃全部都打开了。而由于很多套娃长得过于相像JYY 现在不知道该如何把它们装回去了他实在搞不清应该把哪个套娃装到哪个里面去了。题目描述JYY 一共有N NN个拆开的套娃每个套娃从1 11到N NN编号。编号为i ii的套娃有一个外径O u t i Out_iOuti和一个内径I n i In_iIniI n i O u t i In_iOut_iIniOuti。对于套娃i ii和套娃j jj如果满足O u t i I n j Out_iIn_jOutiInj那么套娃i ii就可以装到套娃j jj里面去。注意一个套娃内部不允许并排的放入多个套娃。也就是说如果我们将i ii装到j jj的内部之后还存在另一个套娃k kk也满足O u t k I n j Out_kIn_jOutkInj我们此时是不允许再将k kk放到j jj内部的因为j jj的内部已经放入了i ii。但是如果k kk还满足O u t k I n i Out_kIn_iOutkIni那么我们允许先将k kk放到i ii的内部然后再把k kk和i ii作为一个整体放入j jj的内部。JYY 认为一套好的套娃内部的空隙一定是尽量少的。如果套娃j jj内部装入了套娃i ii那么我们认为套娃j jj内部产生的空隙为I n j − O u t i In_j-Out_iInj−Outi如果套娃j jj的内部什么也没有装那么套娃j jj的空隙则就是I n j In_jInj。JYY 也希望那些长得更加好看的套娃里面可以填的尽量满一些而相对那些不那么好看的套娃JYY 也就相对不那么介意一些。为此 JYY 对于编号为i ii的套娃设置了一个好看度B i B_iBi如果这个套娃内部还存在K KK的空隙那么 JYY 对于这个套娃就会产生K × B i K\times BiK×Bi的不满意度。JYY 对于一个套娃安装方案的不满意度就是每个套娃产生的不满意度的总和。JYY 希望找出一个不满意度最小的套娃安装方案。输入格式第一行包含一个正整数N NN。接下来N NN行每行包含三个正整数O u t i , I n i , B i Out_i,In_i,B_iOuti,Ini,Bi表示i ii号套娃的外径内径以及好看度。输出格式输出文件包含一行一个整数表示不满意度的最小值。输入输出样例 #1输入 #13 5 4 1 4 2 2 3 2 1输出 #17说明/提示对于100 % 100\%100%的数据N ≤ 2 × 10 5 N\leq 2\times 10^5N≤2×1051 ≤ I n i O u t i ≤ 10 4 1\leq In_iOut_i\leq 10^41≤IniOuti≤1041 ≤ B i ≤ 10 9 1\leq B_i\leq 10^91≤Bi≤109。C实现#includebits/stdc.h#defineintlonglongusingnamespacestd;constintN2e510;intn,i,ans;structNode{intout,in,b;}doll[N];multisetintp;multisetint::iterator id;boolcmp(Node x,Node y){returnx.by.b;}//按照美丽值排序signedmain(){scanf(%lld,n);for(i1;in;i)scanf(%lld%lld%lld,doll[i].out,doll[i].in,doll[i].b),p.insert(doll[i].out);sort(doll1,dolln1,cmp);//排序for(i1;in;i){idp.lower_bound(doll[i].in);if(id!p.begin())id--,ans(doll[i].in-(*id))*doll[i].b,p.erase(id);elseansdoll[i].in*doll[i].b;}printf(%lld\n,ans);return0;}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2433424.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!