【题解】[SDOI2010]捉迷藏】的更多相关文章

[SDOI2010]捉迷藏 链接 luogu 思路 k-dtree模板题 代码 #include <bits/stdc++.h> #define ls (t[u].ch[0]) #define rs (t[u].ch[1]) #define cmin(a,b) (a>b?a=b:a) #define cmax(a,b) (a>b?a:a=b) using namespace std; const int N=5e5+7; const int INF=0x3f3f3f3f; int…
题目链接:https://www.luogu.com.cn/problem/P2479 题目大意:求平面\(n\)个点中,到其它\(n-1\)个点的曼哈顿距离最大和最小距离之差最小的点,求出这个这个距离差. 用\(K-D-Tree\)维护区间,剪枝搜索. 值得一提的是,对于\(maxdis\)的查询还是比较显然的,找到它到当前点所维护区间的端点的距离的最大值即可.对于最小距离--还是(对我来说)有点坑的. 首先,判断最小距离的时候,当这个点在当前询问区间的话,它的距离显示为0,就炸了qwq,所以…
题面 题解 题目所求即为 \[ G ^ {\sum_{d | n}C_{n}^{d}} \bmod {999911659} \] 考虑到有这样一个式子 \[ a ^ b \equiv a ^ {b \bmod \varphi(p)} \pmod p \] 由于999911659是一个质数, 所以\(\varphi(999911659) = 999911658\), 所以原式就变为了 \[ G^{\sum_{d | n} C_n^d \bmod 999911568} \bmod 999911659…
嘟嘟嘟 k-d tree板儿题. 建完树后对每一个点求一遍最小和最大曼哈顿距离,是曼哈顿,不是欧几里得. #include<cstdio> #include<iostream> #include<cmath> #include<algorithm> #include<cstring> #include<cstdlib> #include<cctype> #include<vector> #include<…
https://www.luogu.org/problemnew/show/P2479 据说可以用线段树做但是我不会,只能写一个 KD-Tree 了 对于每个点求出距离它最远的点和最近的点的距离,然后取 min 即可 因为这个东西是可以剪枝的,所以跑的挺快的 #include <bits/stdc++.h> #define For(i, a, b) for(int i = a; i <= b; i++) using namespace std; typedef unsigned long…
传送门 KDtree是个吼东西啊-- 枚举每一个点,然后求出离他距离最远和最近的点的距离,更新答案 然而为什么感觉KDtree只是因为剪枝才能跑得动呢-- //minamoto #include<bits/stdc++.h> #define R register #define inf 0x3f3f3f3f #define fp(i,a,b) for(R int i=a,I=b+1;i<I;++i) #define fd(i,a,b) for(R int i=a,I=b-1;i>I…
题面 解析 这题似乎不是那么难啊 首先,显而易见, 如果要摧毁一个城市,必须要满足两个条件: 机器人摧毁了保护它的城市. 机器人到达了这个城市. 而这两个条件可以同时进行(毕竟有无数机器人) 那么显然,我们只需要在上面的条件的时间取\(max\)就行了. 具体来说,我们可以魔改dijkstra, 设\(d1[i]\)是到达\(i\)的时间,\(d2[i]\)是摧毁保护\(i\)的所有城市的时间, 对于保护\(j\)的城市\(i\),从\(i\)到\(j\)连边(新建一张图),就可以更新\(d2\…
#include<algorithm> #include<iostream> #include<cstdio> #include<cmath> #define LL long long #define MAXN 1000100 using namespace std; inline LL min(LL a,LL b){return a<b?a:b;} int n,cmpid; struct point { ]; friend bool operator…
\[ Preface \] 看到这题洛谷标签有 主席树 ,还以为是什么二维主席树的玄学做法(雾 \[ Description \] 给出一个 \(R×C\) 的矩阵. 一共 \(m\) 次询问,每次询问给出一个五元组 \((x1,y1,x2,y2,h)\) . 求:在矩阵 \((x1,y1,x2,y2)\) 里至少取多少个数,它们的和大于等于 \(h\) 无解输出 Poor QLW . \[ Solution \] 显然是贪心地取数,数取的越大,就可以越早使和大于等于 \(h\) . 因此我们都…
传送门 保分题再度爆零,自闭ing×2 tarjan没写vis数组,点权算的也有点问题 这题情况3的连边有点麻烦,考场上想了暴力想了二分就是没想到可以直接拿map水过去 不过map果然贼慢,所以这也是一个哈希表的板子题 Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 100010 #define ll long long #define ld long double #de…