博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 3368 Frequent values(rmq)
阅读量:5244 次
发布时间:2019-06-14

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

离散化后rmq,新白书上对这个题有讲解。

1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 #define N 100000 7 int p[N]; 8 int dp[22][N+1]; 9 int hash[3*N];10 int que[N+1];11 int L[N+1];12 int R[N+1];13 int o[N+1];14 void init_rmq(int n)15 {16 int i,j;17 for(i = 1;i <= n;i ++)18 dp[0][i] = o[i];19 for(i = 1;(1<
<= n;i ++)20 {21 for(j = 1;j + (1<<(i-1)) <= n;j ++)22 {23 dp[i][j] = max(dp[i-1][j],dp[i-1][j+(1<<(i-1))]);24 }25 }26 }27 int rmq(int x,int y)28 {29 if(x > y) return 0;30 int k = log(y-x+1.0)/log(2.0);31 return max(dp[k][x],dp[k][y-(1<
<= n;i ++)52 {53 scanf("%d",&p[i]);54 }55 L[1] = 1;56 num = 1;57 temp = 1;58 hash[p[1]+N] = 1;59 for(i = 2;i <= n;i ++)60 {61 if(p[i] != p[i-1])62 {63 R[num] = i-1;64 o[num] = temp;65 hash[p[i-1]+N] = num;66 temp = 1;67 num ++;68 L[num] = i;69 }70 else71 {72 temp ++;73 }74 }75 R[num] = i-1;76 o[num] = temp;77 hash[p[i-1]+N] = num;78 init_rmq(num);79 while(m--)80 {81 scanf("%d%d",&x,&y);82 printf("%d\n",query(x,y));83 }84 }85 return 0;86 }

 

转载于:https://www.cnblogs.com/naix-x/archive/2013/04/19/3031305.html

你可能感兴趣的文章
常见浏览器兼容性问题与解决方式
查看>>
redis.conf 配置详解
查看>>
thinkphp volist if标签 bug
查看>>
Struts2 Action
查看>>
Strut2------源码下载
查看>>
[LeetCode] 152. Maximum Product Subarray Java
查看>>
Jquery中each的三种遍历方法
查看>>
数据库
查看>>
洛谷 P1967 货车运输(克鲁斯卡尔重构树)
查看>>
D2.Reactjs 操作事件、状态改变、路由
查看>>
ble学习笔记四---------------------控制lcd
查看>>
kali自定义分辨率(1920*1080)
查看>>
HDU4054_Hexadecimal View
查看>>
网页css效果调试技巧
查看>>
Python【第三课】 函数基础
查看>>
django的日志发往http server
查看>>
Scrapy项目 - 实现斗鱼直播网站信息爬取的爬虫设计
查看>>
音视频学习路线
查看>>
python基础数据类型
查看>>
Sql CLR创建一个简单的表值函数
查看>>