题意:求和
解题思路:排序+dp
解题代码:
1 // File Name: 433b.cpp 2 // Author: darkdream 3 // Created Time: 2014年07月24日 星期四 10时28分17秒 4 5 #include<vector> 6 #include<list> 7 #include<map> 8 #include<set> 9 #include<deque> 10 #include<stack> 11 #include<bitset> 12 #include<algorithm> 13 #include<functional> 14 #include<numeric> 15 #include<utility> 16 #include<sstream> 17 #include<iostream> 18 #include<iomanip> 19 #include<cstdio> 20 #include<cmath> 21 #include<cstdlib> 22 #include<cstring> 23 #include<ctime> 24 25 using namespace std; 26 long long a[100005]; 27 long long b[100005]; 28 int main(){ 29 long long n; 30 scanf("%I64d",&n); 31 b[0] = 0 ; 32 for(long long i =1 ;i <= n;i ++) 33 { 34 35 scanf("%I64d",&a[i]); 36 b[i] =b[i-1]+a[i]; 37 } 38 sort(a+1,a+1+n); 39 a[0] = 0 ; 40 for(long long i =1;i <= n;i ++) 41 { 42 a[i] = a[i-1]+a[i]; 43 } 44 long long m ; 45 scanf("%I64d",&m); 46 while(m--) 47 { 48 long long t,l,r; 49 scanf("%I64d %I64d %I64d",&t,&l,&r); 50 if(t == 1 ) 51 { 52 printf("%I64d ",b[r] -b[l-1]); 53 }else 54 printf("%I64d ",a[r] -a[l-1]); 55 } 56 return 0; 57 }