데이터 구조 - 트 리 배열 (흑룡강성 제8 회 대학생 프로 그래 밍 경기 - post office)
9045 단어 Office
제목:
1468: Post office
제목 설명
There are N(N<=1000) villages along a straight road, numbered from 1 to N for simplicity. We know exactly the position of every one (noted pos[i],pos[i] is positive integer and pos[i]<=10^8). The local authority wants to build a post office for the people living in the range i to j(inclusive). He wants to make the sum of |pos[k]-position_of_postoffice| (i<=k<=j) is minimum.
입력
For each test case, the first line is n. Then n integer, representing the position of every village and in acending order. Then a integer q (q<=200000), representing the queries. Following q lines, every line consists of two integers i and j. the input file is end with EOF. Total number of test case is no more than 10. Be careful, the position of two villages may be the same.
출력
For every query of each test case, you tell the minimum sum.
샘플 입력
3
1 2 3
2
1 3
2 3
샘플 출력
2
1
: x n , i j , post office, post office 。
: , j-i+1 , !
:
1 #include "stdio.h"
2 #include "string.h"
3
4 long long sum[1005];
5
6 long long Low(long long x)
7 {
8 return x&(-x);
9 }
10
11 long long SUM(long long x) //
12 {
13 long long ans = 0;
14 for(long long i=x; i>0; i-=Low(i))
15 ans += sum[i];
16 return ans;
17 }
18
19 int main()
20 {
21 long long n;
22 long long i,j,k;
23 long long x,y,Q;
24 long long mid;
25 while(scanf("%lld",&n)!=EOF)
26 {
27 memset(sum,0,sizeof(sum));
28 for(i=1; i<=n; ++i)
29 {
30 scanf("%lld",&k);
31 for(j=i; j<=n; j += Low(j))
32 sum[j] += k;
33 }
34 scanf("%lld",&Q);
35 while(Q--)
36 {
37 scanf("%lld %lld",&x,&y);
38 mid = x+(y-x+1)/2;
39 if((y-x+1)%2==0)
40 printf("%lld
",SUM(y)-SUM(mid-1)-(SUM(mid-1)-SUM(x-1)));
41 else
42 printf("%lld
",SUM(y)-SUM(mid)-(SUM(mid-1)-SUM(x-1)));
43 }
44 }
45 return 0;
46 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Office 365 License 자동 할당텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.