loj #6046. 「雅礼集训 2017 Day8」爷
#6046. 「雅禮集訓 2017 Day8」爺
題目描述
如果你對山口丁和 G&P 沒有興趣,可以無視題目背景,因為你估計看不懂 ……
在第 63 回戰車道全國高中生大賽中,軍神西住美穗帶領大洗女子學院的大家打敗了其他所有高中,取得了勝利,當然也就不用廢校了。
然而一群戰車道的領導表示他們是口胡的,廢校還是要廢的。
軍神的母親西住志穗怒斥廢校男,為了不造個大新聞,廢校男承諾如果大洗學院可以打敗大學隊,就不用廢校。
(有種 OI 選手 PK ACM 選手的感覺呀)
然而實力差距太大了,大洗女子學院最強的車是虎式 P 型,而大學隊清一色的 M26 潘興,M24 霞飛(突然發現現在霞飛被砍的好慘),還有能跑到 20 的 T95 和卡爾臼炮,感覺根本沒法打呀。
這時候一個光頭的胖子謝爾蓋 ? 布爾卡托夫斯基和一個身患癌癥急需錢來治病的王姓 CEO 來幫助她們了。
他們把一堆真實性堪憂的坦克圖紙給了大洗學院的妹子們,并說這些圖紙是真的,而且還原了歷史。
大洗學院汽車部的大家看到了這些圖紙后非常高興,開始膜改她們的戰車。
虎式 P 型 -> 蟋蟀 17
四號 D 型 -> 四號坦克武器運載車
38(t) 型 -> 萊茵金屬公司武器運載車
B1-bis -> 105leFH18B2
即使這樣,只有 8 輛戰車的大洗女子學院仍然無法打敗有 30 輛戰車的大學隊。
這時候按照劇本其他高中的小伙伴要來幫忙了,然而她們最近正在學習 OI,碰到了一道很神奇的數據結構題,不會做所以來不了。 你作為一個三次元的國家隊選手,當然能秒殺二次元的 OI 題啦。 請幫幫她們吧!
給你一個?n nn?個點的有根樹,1 11?為根,帶邊權,有?m mm?次操作。
保證每次操作 2 的?k kk?以及原樹的邊權小于等于一個數?len \text{len}len。
如果操作 2 中?x xx?為?1 11,那么視為將?x xx?的基礎深度加上了?k kk。
輸入格式
第一行三個數?n nn、m mm、len \text{len}len。
之后?n?1 n - 1n?1?行每行兩個數表示?2~n 2 \sim n2~n?每個點的父親編號,以及他們到父親的邊權。
之后?m mm?行每行三個數?opt \text{opt}opt、x xx、k kk,opt \text{opt}opt?表示操作種類,x xx、k kk?意義如題所述。
輸出格式
對于每個操作 1,輸出一個數表示答案。
樣例
樣例輸入
3 5 3 1 3 2 3 1 1 3 2 3 3 1 1 3 2 1 2 1 1 3樣例輸出
6 9 11數據范圍與提示
對于?10% 10\%10%?的數據,n,m≤1000 n, m \leq 1000n,m≤1000;
對于?30% 30\%30%?的數據,n,m≤30000 n, m \leq 30000n,m≤30000;
對于?100% 100\%100%?的數據,n,m≤100000,len≤10 n, m \leq 100000, \text{len} \leq 10n,m≤100000,len≤10。
本水題采用捆綁測試,你只有通過該部分分的所有數據才可以得到該部分分的分數。
如果你對山口丁和 G&P 沒有興趣,可以無視結局。
如果你做出來了這個題
妹子們看了你的 STD 之后都 A 了這個題,然后去幫助軍神。
她們找了 30 個 183 射了對面一臉。
如果你沒做出來這個題
妹子們雖然很想幫助軍神,但是也愛莫能助,畢竟學戰車道不能保送。
沒有辦法,只能 8 打 30 了。
萊茵蹲在草里,大學隊沒有人發現它,成功擊殺五輛敵方坦克后因為車體無法承受火炮后坐力而解體。
三突也蹲在草里,大學隊沒有人發現它,它也沒有發現任何人,最后蹲不住了去突擊,擊毀一輛潘興后被擊毀。
四運文藝倒車,大學隊看到之后目瞪口呆,成功擊殺八輛敵方坦克后因為車體無法承受火炮后坐力而解體。
虎 P 炮一發帶走了 95,然后因為轉場的時候發動機故障而燒毀。
最后法五金刺刀了 15 個,成功翻盤。
?
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxn 100010 using namespace std; int head[maxn],sz[maxn],dep[maxn],dfn[maxn],l[maxn],r[maxn],a[maxn],fa[maxn],b[maxn],dfv[maxn]; int n,m,num,len,id; struct node{int to,pre,v;}e[maxn*2]; void Insert(int from,int to,int v){e[++num].to=to;e[num].v=v;e[num].pre=head[from];head[from]=num; } void dfs(int x){dfn[x]=++id;dfv[id]=x;l[x]=id;for(int i=head[x];i;i=e[i].pre){int to=e[i].to;dep[to]=dep[x]+e[i].v;dfs(to);}r[x]=id; } int main(){scanf("%d%d%d",&n,&m,&len);int x,y;for(int i=2;i<=n;i++){scanf("%d%d",&fa[i],&x);Insert(fa[i],i,x);}dfs(1);for(int i=1;i<=n;i++)a[i]=dep[dfv[i]];int op,k;while(m--){scanf("%d%d%d",&op,&x,&k);if(op==1){if(r[x]-l[x]+1<k){puts("-1");continue;}else {for(int j=l[x];j<=r[x];j++)b[j]=a[j];sort(b+l[x],b+r[x]+1);printf("%d\n",b[k+l[x]-1]);}}else {for(int i=l[x];i<=r[x];i++)a[i]+=k;}}return 0; } 50分 暴力?
轉載于:https://www.cnblogs.com/thmyl/p/8969762.html
總結
以上是生活随笔為你收集整理的loj #6046. 「雅礼集训 2017 Day8」爷的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高等数学 函数极限求法(三) 等价无穷
- 下一篇: rdlc和rdl的区别