ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

打卡信奥刷题(3526)用C++实现信奥题 P10957 环路运输

打卡信奥刷题(3526)用C++实现信奥题 P10957 环路运输 P10957 环路运输题目描述在一条环形公路旁均匀地分布着NNN座仓库编号为1∼N1 \sim N1∼N编号为iii的仓库与编号为jjj的仓库之间的距离定义为dist(i,j)min⁡⁡(∣i−j∣,N−∣i−j∣)dist(i,j)\min⁡(|i-j|,N-|i-j|)dist(i,j)min⁡(∣i−j∣,N−∣i−j∣)也就是逆时针或顺时针从iii到jjj中较近的一种。每座仓库都存有货物其中编号为iii的仓库库存量为AiA_iAi​。在iii和jjj两座仓库之间运送货物需要的代价为AiAjdist(i,j)A_iA_jdist(i,j)Ai​Aj​dist(i,j)。求在哪两座仓库之间运送货物需要的代价最大。输入格式第一行包含一个整数NNN。第二行包含NNN个整数A1∼ANA_1 \sim A_NA1​∼AN​。输出格式输出一个整数表示最大代价。输入输出样例 #1输入 #15 1 8 6 2 5输出 #115说明/提示数据保证2≤N≤1062 \le N \le 10^62≤N≤1061≤Ai≤1071 \le A_i \le 10^71≤Ai​≤107。C实现#includecstdio#includeiostreamusingnamespacestd;constintN2000010;typedeflonglongll;inta[N],q[N],h1,t0,n;ll ans;llMax(ll a,ll b){returnab?a:b;}intmain(){scanf(%d,n);for(inti1;in;i){scanf(%d,a[i]);a[in]a[i];}intlenn/2;q[t]1;for(inti2;inlen;i){while(q[h]i-lenht)h;ansMax(ans,(ll)(a[i]ia[q[h]]-q[h]));while(a[q[t]]-q[t]a[i]-ith)t--;q[t]i;}printf(%lld,ans);return0;}后续接下来我会不断用C来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现记录日常的编程生活、比赛心得感兴趣的请关注我后续将继续分享相关内容
返回列表