HaiHongOJ 1003 God Wang
题目连接:http://oj.haihongblog.com/problem.php?id=1003
线段树维护区间最小值,并且求解下标
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std; const int maxn=+ ;
const int INF=0x7FFFFFFF;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
int N,K,zzt;
vector<int> ans; int MIN[maxn<<]; void PushUP(int rt)
{
MIN[rt]=min(MIN[rt<<],MIN[rt<<|]);
} void Build(int l,int r,int rt)
{
if(l==r)
{
scanf("%d",&MIN[rt]);
return;
}
int m=(l+r)>>;
Build(lson);
Build(rson);
PushUP(rt);
} void Update(int p,int add,int l,int r,int rt)
{
if(l==r)
{
MIN[rt]=add;
return;
}
int m=(l+r)>>;
if(p<=m)
Update(p,add,lson);
else
Update(p,add,rson);
PushUP(rt);
} int Query(int L,int R,int l,int r,int rt)
{
if(L<=l&&R>=r) return MIN[rt];
int m=(l+r)>>;
int ret=INF;
if(L<=m) ret=min(ret,Query(L,R,lson));
if(R>m) ret=min(ret,Query(L,R,rson));
return ret;
} void Find(int L,int R,int l,int r,int rt)
{ if(L<=l&&R>=r)
{
int lx=l,rx=r,node=rt;
while()
{
int mx=(lx+rx)/;
if(lx==rx) {zzt=lx;break;}
if(K>=MIN[*node])
{
node=*node;
rx=mx;
continue;
} if(K>=MIN[*node+])
{
node=*node+;
lx=mx+;
continue;
}
}
return;
} int m=(l+r)>>;
if(K>=MIN[rt<<]&&L<=m) Find(L,R,lson);
if(zzt!=-) return;
if(K>=MIN[rt<<|]&&R>m) Find(L,R,rson);
if(zzt!=-) return;
} int main()
{
// freopen("F:\\test (1).in","r",stdin);
// freopen("F:\\out.txt","w",stdout); while(~scanf("%d%d",&N,&K)){
Build(,N,); bool fail=;
int pos=;
ans.clear(); for(int i=;i<=N;i++)
{
int P=Query(pos,N,,N,);
if(K>=P) //后面一段存在可以吃的点
{
zzt=-; //找到第一个大于等于K的位置 zzt
Find(pos,N,,N,);
ans.push_back(zzt);
pos=zzt;
//该位置的值更新为INF
Update(zzt,INF,,N,);
K++;
}
else //后面一段不存在可以吃的点,从头开始找
{
P=Query(,N,,N,);
if(K>=P)
{
zzt=-; //找到第一个大于等于K的位置 zzt
Find(,N,,N,);
ans.push_back(zzt);
pos=zzt;
//该位置的值更新为INF
Update(zzt,INF,,N,);
K++;
} else //找不到了,失败
{
fail=;
break;
}
}
} if(fail) printf("-1\n");
else
{
for(int i=;i<ans.size();i++)
{
printf("%d",ans[i]);
if(i<ans.size()-) printf(" ");
else printf("\n");
}
}
}
return ;
}
HaiHongOJ 1003 God Wang的更多相关文章
- Bestcoder#5 1003
Bestcoder#5 1003 Poor RukawTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- Codeforces Round #262 (Div. 2) 1003
Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...
- dp 动态规划 hdu 1003 1087
动态规划就是寻找最优解的过程 最重要的是找到关系式 hdu 1003 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 题目大意:求最大字序列和, ...
- PKU 1003解题
首先庆祝一下,今天连A了3题.感觉后面这题太简单了.. 由于英文不好 ,找了个翻译: 若将一叠卡片放在一张桌子的边缘,你能放多远?如果你有一张卡片,你最远能达到卡片长度的一半.(我们假定卡片都正放在桌 ...
- POJ做题笔记:1000,1004,1003
1000 A+B Problem 题目大意:输入两个数a和b,输出他们的和. 代码: #include <stdio.h> int main() { int a, b; while (sc ...
- 未注册wang域名批量查询工具
一.支持规则查询 可自定义生成域名进行查询,可生成任意位数的字母数字域名,根据[声母].[韵母]生成单拼,双拼,三拼等域名,还可根据字典生成,支持全拼.首拼识别,全国城市区号.城市全拼.城市首拼.热门 ...
- 迪杰斯特拉算法——PAT 1003
本文主要是将我对于我对于迪杰斯特拉算法的理解写出来,同时通过例题来希望能够加深对于算法的理解,其中有错误的地方希望大家指正. 迪杰斯特拉算法 我将这个算法理解成一个局部到整体的算法,这个方法确实越研究 ...
- hdu5024 Wang Xifeng's Little Plot (水
http://acm.hdu.edu.cn/showproblem.php?pid=5024 网络赛 Wang Xifeng's Little Plot Time Limit: 2000/1000 M ...
- Codeforces Round #270 1003
Codeforces Round #270 1003 C. Design Tutorial: Make It Nondeterministic time limit per test 2 second ...
随机推荐
- python unitest基本
基本 import unittest class OneTest(unittest.TestCase): def setUp(self): self.verificationErrors = [] s ...
- hdu_2111_Saving HDU(贪心)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2111 题意:给你n个物品的单位体积价值和体积,求装满容量v的背包的最大价值. 题解:乍一看还以为是背包 ...
- Entity Framework教程
随着Code First一起出现的DbContext和DbSet类绝对可以称得上EF的功能核心,其取代了之前的ObjectContext和ObjectSet类,提供了与数据库通信,管理内存中实体的重要 ...
- Away 3d 框架
卷 工作资料 的文件夹 PATH 列表 卷序列号为 00000200 F8B8:EE5E E:. │ tree.txt │ tree1.txt │ ├─away3d │ │ .DS_Sto ...
- json的引号之伤
最近读他们的jquery解读的源码,由于版本不同,我可能看的是他们解读的1.7的,但是我本身运行的可能是1.9的,所以有些出处,但是中心思想不变,我有疑问的时候,直接debug,让例子自己走一遍,好处 ...
- 笨方法学python--打印
1 print 语句 尾端的逗号 end1 = "C" end2 = "h" end3 = "e" end4 = "e" ...
- Spring Boot 系列教程1-HelloWorld
入门 如果你用过Spring JavaConfig的话,会发现虽然没有了xml配置的繁琐,但是使用各种注解导入也是很大的坑, 然后在使用一下Spring Boot,你会有一缕清风拂过的感觉, 真是爽的 ...
- UVA 10277 Boastin' Red Socks
#include <iostream> #include<cstdio> #include<cstring> using namespace std; unsign ...
- HUD 1541/BIT(数状数组)
题目链接 /* 按从左到右,从下到上的顺序给出星星的坐标,计算出level为[0,n)的星星的个数. 星星的level为该星星左下边(包括自己正下方的星星,但是不包括自己)星星的个数. BIT模板题. ...
- Android摄像头:只拍摄SurfaceView预览界面特定区域内容(矩形框)---完整(原理:底层SurfaceView+上层绘制ImageView)
Android摄像头:只拍摄SurfaceView预览界面特定区域内容(矩形框)---完整实现(原理:底层SurfaceView+上层绘制ImageView) 分类: Android开发 Androi ...