洛谷 P1600 天天爱跑步】的更多相关文章

小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是一个养成类游戏,需要玩家每天按时上线,完成打卡任务. 这个游戏的地图可以看作一一棵包含 nn个结点和 n-1n−1条边的树, 每条边连接两个结点,且任意两个结点存在一条路径互相可达.树上结点编号为从11到nn的连续正整数. 现在有mm个玩家,第ii个玩家的起点为 S_iS i​ ,终点为 T_iT i​ .每天打卡任务开始时,所有玩家在第00秒同时从自己的起点出发, 以每秒跑一条边的速度, 不间断地…
https://www.luogu.org/problemnew/show/P1600 (仅做记录) 自己的假方法: 每一次跑从a到b:设l=lca(a,b)对于以下产生贡献: a到l的链上所有的点(x)满足dep[x]+w[x]==dep[a] l到b的链上(不含l)所有的点(x)满足dep[x]-dep[l]+dep[a]-dep[l]==w[x]即dep[x]-w[x]==2*dep[l]-dep[a] 于是每一个点记两个map<int,int>,其中键值对(p,q)表示 “从该点到根的…
题目:https://www.luogu.org/problemnew/show/P1600 看博客:https://blog.csdn.net/clove_unique/article/details/53427248 思路好神啊... 树上差分是好东西. 代码如下: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std;…
天天放毒... 首先介绍一个树上差分. 每次进入的时候记录贡献,跟出来的时候的差值就是子树贡献. 然后就可以做了. 发现考虑每个人的贡献有困难. 于是考虑每个观察员的答案. 把路径拆成两条,以lca分开.x -> z -> y,完全分成A,B两部分. 那么A:d[x] = w[z] + d[z];B:len - d[y] + N = w[z] - d[z] + N; 这里+ N是为了防止负数. 然后发现右边只跟z有关,这里的z可以是路径上任一点. 那么对于每个人,把需要树上差分统计的左边数值用…
题意 题目链接 Sol 一步一步的来考虑 \(25 \%\):直接\(O(nm)\)的暴力 链的情况:维护两个差分数组,分别表示从左向右和从右向左的贡献, \(S_i = 1\):统计每个点的子树内有多少起点即可 \(T_i = 1\):同样还是差分的思想,由于每个点 能对其产生的点的深度是相同的(假设为\(x\)),那么访问该点时记录下\(dep[x]\)的数量,将结束时\(dep[x]\)的数量与其做差即可 满分做法和上面类似,我们考虑把每个点的贡献都转换到子树内统计 对于每次询问,拆为\(…
传送门 我们把每一条路径拆成$u->lca$和$lca->v$的路径 先考虑$u->lca$,如果这条路径会对路径上的某一个点产生贡献,那么满足$dep[u]-dep[x]=w[x],dep[u]=dep[x]+w[x]$,注意到$dep[x]+w[x]$是一个定值,所以我们只要去找它的子树里有多少个点的$dep$等于$dep[x]+w[x]$就可以了,这个可以直接开一个桶.然而如果点$x$在$lca$的上面,这一条路径是不会对他产生贡献的,那么我们就得在$lca$处把这一条路径的贡献给…
题目传送 首先要考虑入手点.先考虑一个一个玩家处理,显然不加优化的话,时间复杂度是O(n)的.发现对于玩家路径上的点都有一个观察员,一个都不能忽视,看起来是很难优化了.在做题时,发现一个思路很难想,就应该考虑一下换个角度思考.OI中如此,生活亦是如此. 那就尝试从观察员入手.对于每个玩家,他们在树上的路径一定能分为向上和向下的两段(分的段长度可以为0),设当前玩家x的路径的起点为st,终点为ed,st和ed的LCA为ca,路径长度为dis,当观察员u在玩家x向上走的那一段时,若玩家能在Wu秒时正…
正解:树上差分 解题报告: 传送门$QwQ$! 这题还挺妙的,,,我想了半天才会$kk$ 首先对一条链$S-T$,考虑先将它拆成$S-LCA$和$LCA-T$,分别做.因为总体上来说差不多接下来我就只港$S-LCA$的做法了$QwQ$ 考虑对于一个观察点$j$,若要观察到玩家$i$,则有$dep_j+w_j=dep_i$.发现现在就只用统计$j$的子树内所有起点深度等于$dep_j+w_j$的就行. 显然考虑树上差分呗.就开个桶记$dep_i$,对每条路径在$S$处给$dep_S$+1,到$LC…
待填坑 Code //Luogu P1600 天天爱跑步 //Apr,4th,2018 //树上差分+LCA #include<iostream> #include<cstdio> #include<vector> using namespace std; long long read() { long long x=0,f=1; char c=getchar(); while(!isdigit(c)){if(c=='-') f=-1;c=getchar();} whi…
天天爱跑步 思路: 树上差分+分层动态线段树: (伏地膜,跪烂xxy) 代码: #include <bits/stdc++.h> using namespace std; #define maxn 300005 #define maxtot maxn*19 int n,m,deep[maxn],top[maxn],size[maxn]; ],V[maxn<<]; int watch[maxn],st[maxn],en[maxn],tot,Count,ans[maxn]; int l…
[luogu]P1600 [NOIP 2016]天天爱跑步 题目描述 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.«天天爱跑步»是一个养成类游戏,需要玩家每天按时上线,完成打卡任务. 这个游戏的地图可以看作一一棵包含n个结点和n−1条边的树, 每条边连接两个结点,且任意两个结点存在一条路径互相可达.树上结点编号为从1到n的连续正整数. 现在有m个玩家,第i个玩家的起点为Si​,终点为Ti​ .每天打卡任务开始时,所有玩家在第0秒同时从自己的起点出发, 以每秒跑一条边的速…
题目描述 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是一个养成类游戏,需要玩家每天按时上线,完成打卡任务. 这个游戏的地图可以看作一一棵包含 nn个结点和 n-1n−1条边的树, 每条边连接两个结点,且任意两个结点存在一条路径互相可达.树上结点编号为从11到nn的连续正整数. 现在有mm个玩家,第ii个玩家的起点为 S_iSi,终点为 T_iTi .每天打卡任务开始时,所有玩家在第00秒同时从自己的起点出发, 以每秒跑一条边的速度, 不间断地…
来一发清新的80行 树剖 $LCA$ + 树上差分 题解. -----from Judge 本题题意大概是给出一棵 n 个节点的树以及 m 条有向路径, 并且每个点 i 都有一个权值 $w[i]$,如果某条路径包含了 i 号节点,并且 i 号节点是该路径上的第 $w[i]$ 个节点的话就会对答案产生贡献. 考虑暴力做法 我们可以十分理所当然的想到一个暴力: u 和 v 向上跑,沿路判断条件并累加,直到跑到 $LCA$ . 但是这个暴力的时间复杂度太高了: $O (n + m )$ .于是我们考虑…
传送门 1A此题暴祭 (下面记点\(x\)深度为\(de_x\),某个时间点记为\(w_x\)) 首先,每条路径是可以拆成往上和往下两条路径的 对于往上的路径,假设有个人往上跑,\(w_y\)在点\(y\),那么如果能对点\(x\)的观察员产生贡献,当且仅当\(w_x+de_x=w_y+de_y\) 对于往下的路径,假设有个人往下跑,\(w_y\)在点\(y\),那么如果能对点\(x\)的观察员产生贡献,当且仅当\(w_x-de_x=w_y-de_y\) 所以对于每个点开两个线段树,每个下表存\…
lca真心不太会,这里只介绍60分做法,100的太难辣简单了就不介绍了 n<=1000 zz回溯爆搜 S[i]全部相等 这dfs序都不用lca的,2333,差分,然后输出判断一下是否是0(1到i的时间是固定的) 退化成一条链子 一个点i的ans就是i-time[i]和i+tim[i]的起点个数(当然要合法啦) 乱搞就好了,这里写的nlogn的 #include <iostream> #include <queue> #include <cstdio> #inclu…
号称是noip2016最恶心的题 基本上用了一天来搞明白+给sy讲明白(可能还没讲明白 具体思路是真的不想写了(快吐了 如果要看,参见洛谷P1600 天天爱跑步--题解 虽然这样不好但我真的不想写了 直接放代码: #include<bits/stdc++.h> #include<vector> using namespace std; inline int read() { int ans=0; char last=' ',ch=getchar(); while(ch>'9'…
阅读体验: https://zybuluo.com/Junlier/note/1303550 为什么这一篇的Markdown炸了? # 天天爱跑步题解(Noip2016)(桶+树上差分 ^ 树剖+主席树)标签:比较综合的题? 综合整理自:[洛谷P1600 天天爱跑步 题解](https://www.luogu.org/problemnew/solution/P1600)提供两种方法,因为网上讲的很详细,~~我也就不需要再多说了~~因为自己的代码不是完全按下面任意一种方法来的(有不同的地方)~~所…
必须得说,这是一道难题(尤其对于我这样普及组205分的蒟蒻) 提交结果(NOIP2016 天天爱跑步): OJ名 编号 题目 状态 分数 总时间 内存 代码 / 答案文件 提交者 提交时间 LibreOJ #141034 #2359. 「NOIP2016」天天爱跑步 Accepted 100 2454 ms 72492 KiB C++ / 6.3 K hkxadpall 2018-07-28 16:12:23 Vijos 5b5c3486d3d8a169f1b83bb0  P2004 天天爱跑步…
P1600 天天爱跑步 题目描述 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是一个养成类游戏,需要玩家每天按时上线,完成打卡任务. 这个游戏的地图可以看作一一棵包含 n个结点和 n−1条边的树, 每条边连接两个结点,且任意两个结点存在一条路径互相可达.树上结点编号为从1到n的连续正整数. 现在有m个玩家,第i个玩家的起点为 Si​,终点为 Ti​ .每天打卡任务开始时,所有玩家在第00秒同时从自己的起点出发, 以每秒跑一条边的速度, 不间断地…
原文链接https://www.cnblogs.com/zhouzhendong/p/9275606.html 题目传送门 - 洛谷P1600 题目传送门 - LOJ#2359 题目传送门 - Vijos P2004 题意 给定一个有 $n$ 个节点的树,每一个节点有一个观察员,编号为 $i$ 的节点上的观察员会在 $W_i$ 时刻出来观察. 现在有 $m$ 个热爱健身的人,其中第 $i$ 个从节点 $S_i$ 开始,到 $T_i$ 结束. 从时刻 $0$ 开始,每一个人同时以每秒一条边的速度沿…
题目:https://www.luogu.org/problemnew/show/P1600 看TJ:https://blog.csdn.net/clove_unique/article/details/53427248 树上差分真好. 首先要发现向上和向下的……是定值.然后想到可以差分. 本题的差分略特殊之处在于它的对象是一条连到根的链.把链上的差分值记到非根的端点上. 总之看明白TJ之后感觉真精妙. 而且 从各种中选自己需要的 只需把所有都加进桶中! #include<iostream>…
传送门 Description 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是一个养成类游戏,需要玩家每天按时上线,完成打卡任务. 这个游戏的地图可以看作一一棵包含 $n$个结点和 $n-1$条边的树, 每条边连接两个结点,且任意两个结点存在一条路径互相可达.树上结点编号为从$1$到$n$的连续正整数. 现在有$m$个玩家,第$i$个玩家的起点为 $S_i$,终点为 $T_i$ .每天打卡任务开始时,所有玩家在第$0$秒同时从自己的起点出发,…
[LG1600][NOIP2016]天天爱跑步 题面 洛谷 题解 考虑一条路径\(S\rightarrow T\)是如何给一个观测点\(x\)造成贡献的, 一种是从\(x\)的子树内出来,另外一种是从\(x\)的子树外进去. 令\(S,T\)的最近公共祖先为\(lca\),那么这条路径可表示为\(S\rightarrow lca\rightarrow T\)(如果\(lca=S\;or\;T\)可以特判). 考虑两种情况如何贡献, 首先在\(S\rightarrow lca\)上的点,需要满足\…
noip好难呀. 上一个感觉有点长了,重开一个. 36.Vigenère 密码 粘个Openjudge上的代码 #include<cstdio> #include<iostream> #include<cstring> #include<cmath> #include <cstdlib> #include <algorithm> #include <iomanip> using namespace std; char a[…
#261. [NOIP2016]天天爱跑步 描述 提交 自定义测试 小C同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是一个养成类游戏,需要玩家每天按时上线,完成打卡任务. 这个游戏的地图可以看作一棵包含 nn 个结点和 n−1n−1 条边的树,每条边连接两个结点,且任意两个结点存在一条路径互相可达.树上结点编号为从 11 到 nn 的连续正整数. 现在有 mm 个玩家,第 ii 个玩家的起点为 SiSi,终点为 TiTi.每天打卡任务开始时,所有玩…
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类似于匈牙利(⊙o⊙) (匈牙利的复杂度惊人,1e6秒过) #include <cstdio> ]; ],fir[],to[],nex[]; int N,n,p,q; void add(int p,int q) { nex[++N]=fir[p];to[N]=q;fir[p]=N; } bool f…
没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员有一个快乐指数.现在有个周年庆宴会,要求与会职员的快乐指数最大.但是,没有职员愿和直接上司一起与会. 输入描述 Input Description 第一行一个整数N.(1<=N<=6000)接下来N行,第i+1…
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它.买的次数越多越好!你的目标是在遵循以上建议的前提下,求你最多能购买股票的次数.你将被给出一段时间内一支股票每天的出售价(2^16范围内的正整数),你可以选择在哪些天购买这支股票.每次购买都必须遵循“低价购买:再低价购买”的原则.写一个程序计算最大购买次数. 这里是某支股票的价格清单: 日期 1 2…
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N x N 的方格.输入数据中包括有树的方格的列表.你的任务是计算并输出,在他的农场中,不需要砍树却能够修建的最大正方形牛棚.牛棚的边必须和水平轴或者垂直轴平行. EXAMPLE 考虑下面的方格,它表示农夫约翰的农场,‘.'表示没有树的方格,‘#'表示有树的方格 1 2 3 4 5 6 7 8 1 .…
P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够啊... 如果强制在线会怎么样 请问为什么第二段铁路变化后- 话说这题和初赛的最后一个大- 题目背景 本题开O2优化,请注意常数 题目描述 博艾市除了有海底高铁连接中国大陆.台湾与日本,市区里也有很成熟的轨道交通系统.我们可以认为博艾地铁系统是一个无向连通图.博艾有N个地铁站,同时有M小段地铁连接两…