충성 선분 수
8327 단어 선분 수
Time Limit: 1 Sec Memory Limit: 131072KiBSubmit: 9619 Solved: 3287
제목 연결
http://www.tyvj.cn/p/1038
Description
늙 은 집사 는 총명 하고 유능 한 사람 이다.그 는 10 년 동안 재 주 를 위해 일 했 고, 재 주 는 자신의 장 부 를 더욱 명확 하 게 하기 위해 서 였 다.집사 에 게 매일 k 번 의 장 부 를 기록 하 라 고 요구 하 는데 집사 가 똑똑 하고 유능 하기 때문에 관 리 는 항상 부자 들 을 매우 만족 시 켰 다.그러나 일각 의 이간질 로 재력 가 들 은 집사 에 대한 의구심 을 갖 게 됐다.그래서 그 는 특별한 방법 으로 집사 의 충성 을 판단 하기 로 결정 했다. 그 는 매번 의 장 부 를 1, 2, 3. 번호 로 누 른 다음 에 비정 기적 으로 집사 에 게 문 제 를 물 었 다. 문 제 는 다음 과 같다. a 에서 b 번 장부 에서 가장 적은 금액 은 얼마 입 니까?집사 가 가식 을 부 릴 시간 이 없 도록 그 는 항상 한 번 에 여러 가지 질문 을 한다.
Input
입력 중 첫 번 째 줄 은 두 개의 수 m 가 있 고 n 은 m (m < = 100000) 의 장부 가 있 음 을 나타 내 며 n 은 n 개의 문제 가 있 음 을 나타 낸다. n < = 100000.
두 번 째 행위 m 개 수 는 각각 장부 의 돈 수 이다.
뒤에 n 줄 은 각각 n 개의 문제 이 고 줄 마다 2 개의 숫자 가 끝 난 장부 번 호 를 설명 합 니 다.
Output
출력 파일 에 있 는 모든 문제 의 답 입 니 다.구체 적 으로 샘플 을 살펴보다.
Sample Input
10 3
1 2 3 4 5 6 7 8 9 10
2 7
3 9
1 10
Sample Output
2 3 1
HINT
문제 풀이:
선분 나무 누 드 문제 ~
코드:
//qscqesze
#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <sstream>
#include <queue>
#include <typeinfo>
#include <fstream>
#include <map>
typedef long long ll;
using namespace std;
//freopen("D.in","r",stdin);
//freopen("D.out","w",stdout);
#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
#define maxn 400001
#define mod 10007
#define eps 1e-9
//const int inf=0x7fffffff; //
const int inf=0x3f3f3f3f;
/*
inline ll read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
*/
//**************************************************************************************
int n,q,a[maxn];
struct data
{
int l,r,mn;
}tr[maxn];
void build(int k,int s,int t)
{
tr[k].l=s;tr[k].r=t;
if(s==t)
{
tr[k].mn=a[s];
return;
}
int mid=(s+t)>>1;
build(k<<1,s,mid);
build(k<<1|1,mid+1,t);
tr[k].mn=min(tr[k<<1].mn,tr[k<<1|1].mn);
}
int ask(int k,int s,int t)
{
int l=tr[k].l,r=tr[k].r;
if(s==l&&t==r)
return tr[k].mn;
int mid=(l+r)>>1;
if(t<=mid)
return ask(k<<1,s,t);
if(s>mid)
return ask(k<<1|1,s,t);
return min(ask(k<<1,s,mid),ask(k<<1|1,mid+1,t));
}
int main()
{
int n,q;
scanf("%d%d",&n,&q);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
build(1,1,n);
for(int i=1;i<=q;i++)
{
int x,y;
scanf("%d%d",&x,&y);
printf("%d ",ask(1,x,y));
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
HDU - 1166 - 적병 포진 (나무형 수조 또는 선분 수)C 국 의 앙 숙 A 국 은 그동안 군사훈련 을 하고 있 었 기 때문에 C 국 간첩 두목 인 데 릭 과 그의 수하 인 티 디 는 또 바 빠 지기 시작 했다.A 국 가 는 해안선 을 따라 직선 으로 N 개 공병 캠프 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.