摘要:
题面传送门 代码难度稍大,思路其实不难。 题目求最大最小,那么就是二分。 那么怎么验证呢。 首先预处理出所有航线的时间,然后跑出大于$mid$的航线,在树上差分。 只有每一条航线都经过的路径才可能满足要求,所以先找出这样的路径。 对于每一条边,我们都把权值放在下面的节点上,这样的话就可以直接跑一遍验 阅读全文
摘要:
题面传送门 树剖裸题,感觉难度虚高。 当两个部落开战时,我们就把下面那个点的权值设为$1$,休战则设为$0$即可。 这样有一个好处就是查询时如果有$1$可以直接跳出。 其他基本操作。 代码实现: #include<cstdio> #include<cstring> using namespace s 阅读全文
摘要:
题面传送门 很裸的一道题。感觉难度虚高。 可以先把这棵树的欧拉序跑出来,然后每次询问是根节点到当前点的权值,那么树状数组随便维护一下就好了。 代码实现: #include<cstdio> #include<cstring> using namespace std; int n,m,k,x,y,ans 阅读全文
摘要:
题面传送门 因为只有一次贸易,所以可以枚举中转点。 从点$1$出发跑最小值$SPFA$,从点$n$出发跑最大值$SPFA$,这个贪心应该都懂。 然后枚举中转点,注意跑不到的点不能枚举。 代码实现: #include<cstdio> #include<cstring> #include<queue> 阅读全文