博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj1785 Binary Search Heap Construction
阅读量:6271 次
发布时间:2019-06-22

本文共 2003 字,大约阅读时间需要 6 分钟。

此题可以先排序再用rmq递归解决。

当然可以用treap。

 

 

 

1 #include 
2 #include
3 #include
4 using namespace std; 5 const int maxn = 5e4 + 10; 6 struct Point{ 7 char str[15]; 8 int pr; 9 bool operator < (const Point& rhs) const{10 return strcmp(str, rhs.str) < 0;11 }12 }a[maxn];13 14 struct Data{15 int p, v;16 }st[maxn][20];17 18 int n;19 20 int query(int l, int r){21 int len = r - l, d = 0;22 while((1 << d) <= len) d++;23 if(st[l][d - 1].v > st[r - (1 << (d - 1))][d - 1].v) return st[l][d - 1].p;24 else return st[r - (1 << (d - 1))][d - 1].p;25 }26 27 void print(int l, int r){28 if(l > r) return;29 putchar('(');30 int maxp = query(l, r + 1);31 print(l, maxp - 1);32 printf("%s", a[maxp].str);33 print(maxp + 1, r);34 putchar(')');35 }36 37 void RMQ(){38 for(int j = 0; j < n; j++) st[j][0].v = a[j].pr, st[j][0].p = j;39 for(int i = 1; (1 << i) <= n; i++) for(int j = 0; j < n; j++){40 if(j + (1 << i) <= n){41 if(st[j][i - 1].v > st[j + (1 << (i - 1))][i - 1].v){42 st[j][i].v = st[j][i - 1].v;43 st[j][i].p = st[j][i - 1].p;44 }else{45 st[j][i].v = st[j + (1 << (i - 1))][i - 1].v;46 st[j][i].p = st[j + (1 << (i - 1))][i - 1].p;47 }48 }49 }50 }51 52 int main(){53 //freopen("in.txt", "r", stdin);54 //freopen("out.txt", "w", stdout);55 while(~scanf("%d", &n) && n){56 for(int i = 0; i < n; i++){57 scanf("%s", a[i].str);58 int len = strlen(a[i].str);59 a[i].pr = 0;60 for(int j = len - 1, p = 1; a[i].str[j] != '/'; j--, p *= 10)61 a[i].pr += p * (a[i].str[j] - '0');62 }63 sort(a, a + n);64 RMQ();65 print(0, n - 1);66 putchar('\n');67 }68 return 0;69 }
View Code

 

转载于:https://www.cnblogs.com/astoninfer/p/4832559.html

你可能感兴趣的文章
linux如何修改登录用户密码
查看>>
Kali Linux 2017中Scapy运行bug解决
查看>>
Python监控进程性能数据并画图保存为PDF文档
查看>>
Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
查看>>
Mac OS 10.10.3下Apache + mod_wsgi配置【一】
查看>>
Hibernate基于注解的双向one-to-many映射关系的实现
查看>>
算法竞赛入门经典 例题 3-2 蛇形填数
查看>>
remove-duplicates-from-sorted-list I&II——去除链表中重复项
查看>>
c++ 网络库
查看>>
Linux 格式化扩展分区(Extended)
查看>>
linux echo命令
查看>>
nginx 内置变量大全(转)
查看>>
lakala反欺诈建模实际应用代码GBDT监督学习
查看>>
java 解析excel工具类
查看>>
Google FireBase - fcm 推送 (Cloud Messaging)
查看>>
BBS论坛(二十七)
查看>>
html DOM 的继承关系
查看>>
装饰器的邪门歪道
查看>>
Dubbo常用配置解析
查看>>
【转】C#解析Json Newtonsoft.Json
查看>>