suoi38 賣XY序列 (貪心+前綴和)
阿新 • • 發佈:2018-10-13
前綴和 ace 重新 pac getchar() for 價格 memset set
因為只能帶一個,買賣價格又一樣,所以只要右邊的比左邊的大,就從這買下來然後帶到下一個賣掉就行了(我想到別處再賣的話大不了再重新買回來嘛)
所以給max(w[i]-w[i-1],0)維護一個前綴和就行了
1 #include<bits/stdc++.h> 2 #define pa pair<int,int> 3 #define CLR(a,x) memset(a,x,sizeof(a)) 4 using namespace std; 5 typedef long long ll; 6 const int maxn=1e6+10; 7 8 inline ll rd(){9 ll x=0;char c=getchar();int neg=1; 10 while(c<‘0‘||c>‘9‘){if(c==‘-‘) neg=-1;c=getchar();} 11 while(c>=‘0‘&&c<=‘9‘) x=x*10+c-‘0‘,c=getchar(); 12 return x*neg; 13 } 14 15 int N,M; 16 ll s[maxn]; 17 18 int main(){ 19 //freopen(".in","r",stdin); 20 int i,j,k;21 N=rd(); 22 for(i=2,j=rd();i<=N;i++){ 23 k=rd(); 24 s[i]=s[i-1]+max(k-j,0); 25 j=k; 26 }M=rd(); 27 for(i=1;i<=M;i++){ 28 int l=rd(),r=rd(); 29 printf("%lld\n",s[r]-s[l]); 30 } 31 return 0; 32 }
suoi38 賣XY序列 (貪心+前綴和)