COGS 827. [Tyvj Feb11] 网站计划
生活随笔
收集整理的這篇文章主要介紹了
COGS 827. [Tyvj Feb11] 网站计划
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
輸入文件:web.in?? 輸出文件:web.out???簡單對比
時間限制:1 s?? 內存限制:128 MB
?
| 描述 Description | ? | |
| ? | Tyvj的Admin--zhq同學將在寒假開始實行Tyvj new web計劃,把Tyvj打造成為中國一流的信息學在線評測系統。Tyvj的new web計劃里一共有n項,編號1~n,每項的重要度為v[i],Admin—zhq同學共工作m次,第j次從編號為l[j]~r[j]的項目里選擇重要度最大的一項任務完成,所獲得的進展量為(l[j]+r[j])*該任務的重要度。完成該任務后該任務的重要度變為0。請問Admin在工作m次后可以有多少進展量呢? 注:數據保證初始情況下所有任務的重要度不同。 | |
?
輸入格式 Input Format
?第一行為n,m
第二行n個整數v[i]。
接下來m行,每行兩個整數l,r,表示Admin這一次將會從編號為l~r的項目里選擇(包括l,r)重要度最大的來完成。
輸出格式 Output Format | ? | |
| ? | 最終的進展量。由于結果可能會比較大,你只需要輸出mod2011之后的結果即可。 | |
輸出格式 Output Format | ? | |
| ? | 最終的進展量。由于結果可能會比較大,你只需要輸出mod2011之后的結果即可。 | |
?
樣例輸入:
5 3
1 2 3 4 5
1 3
2 3
1 5
?
樣例輸出:
?
52
?
線段樹
RMQ 單點修改
屠龍寶刀點擊就送
#include <iostream> #include <cstdio> using namespace std;typedef long long LL; struct node {LL l,r,dis,v; }t[200000*4+1]; LL whr,to,maxn,n,m; void up(LL k) {if(t[k<<1].dis>t[k<<1|1].dis){t[k].dis=t[k<<1].dis;t[k].v=t[k<<1].v;}else {t[k].dis=t[k<<1|1].dis;t[k].v=t[k<<1|1].v;} } void build(LL l,LL r,LL k) {t[k].l=l;t[k].r=r;if(l==r){scanf("%d",&t[k].dis);t[k].v=t[k].l;return; }LL mid=(l+r)>>1;build(l,mid,k<<1);build(mid+1,r,k<<1|1);up(k); } void query(LL l,LL r,LL k) {if(t[k].l==l&&t[k].r==r){if(t[k].dis>maxn){maxn=t[k].dis;whr=t[k].v;}return;}LL mid=(t[k].l+t[k].r)>>1;if(r<=mid) query(l,r,k<<1);else if(l>mid) query(l,r,k<<1|1);else {query(l,mid,k<<1);query(mid+1,r,k<<1|1);} } void delet(LL now,LL k) {if(t[k].l==t[k].r){t[k].dis=0;t[k].v=0;return;}LL mid=(t[k].l+t[k].r)>>1;if(mid>=now) delet(now,k<<1);else if(mid<now) delet(now,k<<1|1);up(k); } int main() {freopen("web.in","r",stdin);freopen("web.out","w",stdout);cin>>n>>m;build(1,n,1);LL u,v;long long ans=0;while(m--){cin>>u>>v;maxn=0;whr;query(u,v,1);delet(whr,1);ans+=(u+v)*maxn%2011;ans%=2011;}cout<<ans;return 0; }?
轉載于:https://www.cnblogs.com/ruojisun/p/6683714.html
總結
以上是生活随笔為你收集整理的COGS 827. [Tyvj Feb11] 网站计划的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JES-java emil server
- 下一篇: 概率论的学习和整理12: 正态分布