[HackerRank 101 Hack 51] Small Cubes
来源:互联网 发布:iphone8知乎 编辑:程序博客网 时间:2024/06/10 00:45
题意
给定一个
题解
如果确定了
那么如何求得
如何进行
代码
/// by ztx/// blog.csdn.net/hzoi_ztx#include <bits/stdc++.h>#define Rep(i,l,r) for(i=(l);i<=(r);i++)#define rep(i,l,r) for(i=(l);i< (r);i++)#define Rev(i,r,l) for(i=(r);i>=(l);i--)#define rev(i,r,l) for(i=(r);i> (l);i--)#define Each(i,v) for(i=v.begin();i!=v.end();i++)#define r(x) read(x)typedef long long ll ;typedef double lf ;int CH , NEG ;template <typename TP>inline void read(TP& ret) { ret = NEG = 0 ; while (CH=getchar() , CH<'!') ; if (CH == '-') NEG = true , CH = getchar() ; while (ret = ret*10+CH-'0' , CH=getchar() , CH>'!') ; if (NEG) ret = -ret ;}#define kN 100010LLstruct node { int val,id; bool operator < (const node&b)const{ if (val==b.val) return id<b.id; return val<b.val; }};int N, M, K, Q, P;int lef[kN], dow[kN], rig[kN], up[kN];bool ok(int d) { //std::set<node>su,sd,sl,sr; std::deque<int>su,sd,sl,sr; node tmp; for(int i=1,tu,td,tl,tr;i<=N;i++) { while (!su.empty()&&up[i]<=up[su.back()]) su.pop_back(); su.push_back(i); while (!sr.empty()&&rig[i]<=rig[sr.back()]) sr.pop_back(); sr.push_back(i); while (!sd.empty()&&dow[i]>=dow[sd.back()]) sd.pop_back(); sd.push_back(i); while (!sl.empty()&&lef[i]>=lef[sl.back()]) sl.pop_back(); sl.push_back(i); if (i<d) continue; if (su.front()<=i-d) su.pop_front(); if (sd.front()<=i-d) sd.pop_front(); if (sl.front()<=i-d) sl.pop_front(); if (sr.front()<=i-d) sr.pop_front(); tu = up[su.front()]; tr = rig[sr.front()]; td = dow[sd.front()]; tl = lef[sl.front()]; if (tu-td+1>=d && tr-tl+1>=d) return true; } return false;}ll tot, ans, now, num;int main() { int i,L,R,mid,Max; r(N), r(M), r(K), r(P), r(Q); tot=0; Rep (i,1,N) r(lef[i]), r(dow[i]), r(rig[i]), r(up[i]),tot+=(rig[i]-lef[i]+1LL)*(up[i]-dow[i]+1LL); L = 1, R = N+1; while (R-L > 1) { // [L,R) mid = (L+R)/2; if (ok(mid)) L=mid; else R=mid; } ans = 0; Max = L; Rep (i,1,Max) { num = tot+1LL-1LL*i*i*i; now = 1LL*i*P+num*Q; if (now>ans) ans = now; } printf("%lld\n", ans); END: getchar(), getchar(); return 0;}
阅读全文
0 0
- [HackerRank 101 Hack 51] Small Cubes
- [HackerRank 101 Hack 51] Train Trip
- [HackerRank 101 Hack 51] Testing the Game
- Hackerrank 101 Hack 42 Array Pairs
- [HackerRank 101 Hack 42]Array Pairs
- 【Hackerrank 101Hack 43】【JZOJ5135】K-Inversion Permutations 题解
- [Hackerrank 101 Hack 43&& MenciOJ P321] K-Inversion Permutations
- [线段树][单调栈]HackerRank 101 Hack 50 .Boxes for Toys
- [线段树 || 主席树][Hash] HackerRank 101 Hack 49. Sorting Lists
- Close Window in IE from javascript. (Small Hack)
- Close Window in IE from javascript. (Small Hack)
- hackerRank
- HackerRank
- HackerRank
- HackerRank
- HackerRank
- HackerRank
- HackerRank
- 数位dp--cf96e Horse races
- swagger快速开发
- java中的this关键字
- 图片转成base64的字符串, 如何让图片在html中显示
- hammerJs 快速使用---入门教程
- [HackerRank 101 Hack 51] Small Cubes
- PostgreSQL 10 Beta 3 发布,和对所有受支持版本的安全修复
- leetcode 334. Increasing Triplet(三连) Subsequence
- Miller Rabbin 大素数测试
- SpringMVC异常处理使用@ControllerAdvice注释
- 移动端关于点击输入框,因字体变化,导致布局变形的问题
- 极客学院 Mybatis 与 Spring3 集成 完整applicationContext.xml
- window.getComputedStyle
- hdu6105