学习笔记(3)
来源:互联网 发布:2016年网络热议话题 编辑:程序博客网 时间:2024/06/05 06:24
RMQ问题与LCA问题的转化,刚才在找博客的时候看到了,因为没有学DP,所以只好先放到以后再学,先拿个HDU3183练练手····又坑了···实在挑不出来了····
#include<iostream>
#include<cstdio>
#include<string.h>
#include<string>
#include<set>
#include<algorithm>
#include<cmath>
#define ll __int64
#define MAX 1000009
using namespace std;
int a[MAX];
int dp[1009][1009];
int n;
int RMQ_init()
{
for(int i=1;i<=n;i++)
dp[i][0] = a[i];
for(int j=1;(1<<j)<=n;j++)
for(int i=1;i+j-1<=n;i++)
dp[i][j] = max(dp[i][j-1],dp[i+(1<<(j-1))][j-1]);
}
int RMQ(int l,int r)
{
int k = 0;
while((1<<(k+1))<=r-l+1) k++;
return max(dp[l][k],dp[r-(1<<k)][k]);
}
int main()
{
string b;
int x,i,xx,yy;
int MAXN = -1000000;
while(cin>>b>>x)
{
int k = 1;
int len = b.size();
n = len;
for(i=0;i<len;i++)
a[k++] = b[i] - '0';
RMQ_init();
//cout<<RMQ(1,3)<<endl;
for(i = 1;i<=n-x+1;i++)
{
if(MAXN<=RMQ(i,i+x-1))
{
MAXN = RMQ(i,i+x-1);
cout<<MAXN<<endl;
//cout<<RMQ(i,i+x-1)<<endl;
xx = i;
yy = i+x-1;
cout<<xx<<yy<<endl;
}
}
// for(i = 1;i<=n;i++)
// {
// if(i<xx||i>yy)
// {
// cout<<a[i];
// }
// }
// cout<<endl;
}
return 0;
}
目前写到这里····等明天接着挑吧,额,2014年11月13日21:45:01了,要回去了,今天就到这吧····明天线段树了···
- 学习笔记(3)
- 学习笔记(3)
- 学习笔记(3)
- Log4J学习笔记(3)
- Log4J 学习笔记(3)
- 学习.net笔记(3)
- Log4J 学习笔记(3)
- J2ME学习笔记(3)
- Quixote学习笔记(3)
- Log4J学习笔记(3)
- Spring学习笔记(3)
- Hibernate学习笔记(3)
- 网络工程师学习笔记(3)
- petshop学习笔记(3)
- AS3学习笔记(3)
- Hibernate 学习笔记(3)
- Mnesia 学习笔记(3)
- bpel学习笔记(3)
- WIN 2008 R2 :AD域安装
- IOS中给号码添加下划线,并拨号
- 大富豪是地方钙化的快乐时公司的
- 双向链表-C语言版
- USB接口类型大全
- 学习笔记(3)
- hdu3339(dp+最短路径)
- js1
- 第十二周上机项目1 阅读程序(2)
- 《Java并发编程实战》---线程安全性---加锁
- 《unix高级环境编程》线程控制——线程私有数据
- MapReduce的Reducer数量确定
- gSOAP学习体会
- 第十二周项目一 阅读程序(三)