【USACO 2010FEB】 slowdown
【题目链接】
【算法】
dfs序 + 线段树
树链剖分同样可以解决这个问题
【代码】
#include<bits/stdc++.h>
using namespace std;
#define MAXN 100010 int i,n,p,a,b,timer;
int tag[MAXN<<],sum[MAXN<<],size[MAXN],fa[MAXN],dfn[MAXN]; vector< int > e[MAXN]; inline void dfs(int u)
{
int i,v;
dfn[u] = ++timer;
size[u] = ;
for (i = ; i < e[u].size(); i++)
{
v = e[u][i];
if (fa[u] != v)
{
fa[v] = u;
dfs(v);
size[u] += size[v];
}
}
}
inline void pushdown(int index)
{
if (tag[index])
{
sum[index<<] += tag[index];
sum[index<<|] += tag[index];
tag[index<<] += tag[index];
tag[index<<|] += tag[index];
tag[index] = ;
}
}
inline void update(int index)
{
sum[index] = sum[index<<] + sum[index<<|];
}
inline void modify(int index,int l,int r,int ql,int qr,int val)
{
int mid;
if (l == ql && r == qr)
{
sum[index] += val;
tag[index] += val;
return;
}
pushdown(index);
mid = (l + r) >> ;
if (mid >= qr) modify(index<<,l,mid,ql,qr,val);
else if (mid + <= ql) modify(index<<|,mid+,r,ql,qr,val);
else
{
modify(index<<,l,mid,ql,mid,val);
modify(index<<|,mid+,r,mid+,qr,val);
}
update(index);
}
inline int query(int index,int l,int r,int pos)
{
int mid;
if (l == r) return sum[index];
pushdown(index);
mid = (l + r) >> ;
if (mid >= pos) return query(index<<,l,mid,pos);
else return query(index<<|,mid+,r,pos);
} int main() { scanf("%d",&n);
for (i = ; i < n; i++)
{
scanf("%d%d",&a,&b);
e[a].push_back(b);
e[b].push_back(a);
}
dfs();
for (i = ; i <= n; i++)
{
scanf("%d",&p);
printf("%d\n",query(,,n,dfn[p]));
modify(,,n,dfn[p],dfn[p]+size[p]-,);
} return ; }
【USACO 2010FEB】 slowdown的更多相关文章
- 【USACO 2857】 Steady Cow Assignment
[题目链接] 点击打开链接 [算法] 二分答案,check的时候跑最大流,即可 [代码] #include<bits/stdc++.h> using namespace std; #def ...
- 【USACO 2011】 道路和航线
[题目链接] 点击打开链接 [算法] SPFA + SLF / LLL 优化 [代码] #include<bits/stdc++.h> using namespace std; #defi ...
- 【USACO 2017FEB】 Why Did the Cow Cross the Road III
[题目链接] 点击打开链接 [算法] 树状数组 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 100010 ...
- 【USACO 2017Feb】 Why Did the Cow Cross the Road
[题目链接] 点击打开链接 [算法] dist[i][j][k]表示当前走到(i,j),走的步数除以3的余数为k的最小花费 spfa即可 [代码] #include<bits/stdc++.h& ...
- 【USACO 2008FEB】 旅馆
[题目链接] 点击打开链接 [算法] 线段树 对于一个节点,记录它从左端点延伸的最多的空房间的个数,从右端点延伸的最多的空房间个数,和该区间最多的连续 空房间个数 [代码] #include<b ...
- 【USACO Mar08】 奶牛跑步 A-star k短路
Description Bessie准备用从牛棚跑到池塘的方法来锻炼. 但是因为她懒,她只准备沿着下坡的路跑到池塘,然后走回牛棚. Bessie也不想跑得太远,所以她想走最短的路经. 农场上一共有M( ...
- 【cogs182】【USACO Jan07】均衡队形【st表】
题目描写叙述 农夫约翰的 N (1 ≤ N ≤ 50,000) 头奶牛,每天挤奶时总会按相同的顺序站好. 一日.农夫约翰决定为奶牛们举行一个"终极飞盘"比赛.为简化问题.他将从奶牛 ...
- 【USACO 2.1.1】城堡
[题目描述] 我们憨厚的USACO主人公农夫约翰(Farmer John)以无法想象的运气,在他生日那天收到了一份特别的礼物:一张“幸运爱尔兰”(一种彩票).结果这张彩票让他获得了这次比赛唯一的奖品— ...
- 【USACO 1.1.1】你的飞碟在这儿
[问题描述] 一个众所周知的事实,在每一慧星后面是一个不明飞行物UFO. 这些不明飞行物时常来收集来自在地球上忠诚的支持者. 不幸地,他们的空间在每次旅行只能带上一群支持者. 他们要做的是用一种聪明的 ...
随机推荐
- 【转】Delphi 文件拖放
转自:万一的博客. 原理分析: 这需要用到 ShellAPI 单元的两个函数: DragAcceptFiles.DragQueryFile; 用 DragAcceptFiles(窗口句柄, True) ...
- nginx+redis安装配置(内存型数据库)实现session的共享
注意:借鉴原文章:http://www.cnblogs.com/roy-blog/p/7196054.html 感兴趣的可以加一下481845043 java交流群,共同进步. 1 session的概 ...
- json数据的格式,JavaScript、jQuery读取json数据
JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON的特点: JSON 是纯文本 JSON 具有“自我描述性”(人类可读) JSON 具有层级 ...
- 慕课笔记利用css进行布局【混合布局】
<html> <head> <title>混合布局学习</title> <style type="text/css"> ...
- python virtualenv 管理工具 - virtualenvwrapper
我们使用python virtualenv构建不同的python环境,python3 也加入了virtualenv 模块. virtualenvwrapper 提供了更便捷的 virtualenv环境 ...
- Leetcode 188.买卖股票的最佳时机IV
买卖股票的最佳时机IV 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你最多可以完成 k 笔交易. 注意: 你不能同时参与多笔交易(你必 ...
- 開啟活動監視器 (SQL Server Management Studio)
本主題描述如何開啟 [活動監視器] 來取得有關 SQL Server 處理序以及這些處理序如何影響目前 SQL Server 執行個體的資訊. 此外,本主題也描述如何設定 [活動監視器] 的重新整理間 ...
- hdu 4435 bfs+贪心
/* 题意:给定每个点在平面内的坐标,要求选出一些点,在这些点建立加油站,使得总花费最少(1号点必须建立加油站).在i点建立加油站需要花费2^i. 建立加油站要求能使得汽车从1点开始走遍全图所有的点并 ...
- 前端开发:CSS3
CSS介绍: CSS能够使页面具有美观一致的效果,并且能够让内容与格式分离,利于扩展 所以,CSS解决了下面两个问题: 1. 将HTML页面的内容与格式分离: 2. 提高web开发的工作效率. CSS ...
- Pull方式解析XML文件
package com.pingyijinren.test; import android.content.Intent; import android.os.Handler; import andr ...