摘要:
题意:给定X轴上的一些三角形,求面积并。 每个三角形的给出形式是Li,Ri,Xi,Yi,表示三个顶点分别是(Li,0);(Ri,0);(Xi,Yi),且满足Li<=Xi<=Ri; 思路:我们把这些三角形全部涂黑,就会发现只需要找到这些关键的“拐点”即可,最后求出每两个拐点之间形成的梯形的面积即可。 阅读全文
摘要:
题意:给定N个点,然后给定一个半径为R的圆,问这个圆最多覆盖多少个点。 思路:在圆弧上求扫描线。 如果N比较小,不难想到N^3的算法。 一般这种覆盖问题你可以假设有两个点在圆的边界上,那么每次产生的圆去看多少个点在园内即可。 但是我们现在要更高效的做法。题目等价于,有N个半径为R的圆,问二维平面上一 阅读全文
摘要:
题意:有N个不同的商品,每个商品原价是Pi元,如果选择打折,可以减少Di元。 现在加一种规则,每个商品有一个友好商品Fai,如果i用原价买,则可以免费买Fai。 现在问买到所有物品的最小价格。 思路:显然是一个内向树基环。 先把悬在环上的树都求出DP[][],然后再在链上同理跑一遍DP。 我们先看树 阅读全文
摘要:
题意:给定N点N边的无向连通图,现在让你在图中找一点作为餐厅,使得最远点距离这点最近。 思路:为了保留整数,我们求最小直径,最后去除2。 直径来源于两部分: 1,在外向树中; 那么就是树的直接,一棵树求直径直接跑一边DP就可以了。(或者两遍BFS吧,麻烦一点而已),假设最大值为ans1。 2,可能通 阅读全文
摘要:
(有向图)基DP:https://ac.nowcoder.com/acm/contest/140/B (无向图):bzoj3242 ,最小化最远距离。 (无向图):bzoj1791,求基环树直径。 (无向图):bzoj1040,基环树最大独立基。 #include<bits/stdc++.h> #d 阅读全文
摘要:
题意:给定N,K,P,表示现在有一个集合{0, 1, ..., 2n - 1},问有多少个非空子集的异或和为K; 答案%P。(1 ≤ n ≤ 1018, 0 ≤ k ≤ min(2n - 1, 1018), 2 ≤ p ≤ 109, p is prime.) 思路:先抽离出一个线性基出来,然后非基部 阅读全文
摘要:
题意:给定数组,求所有异或起来为0的集和的大小之和。 思路:由于是集合大小,我们换成考虑每个元素在多少个集合里有贡献。 先生成线性基。 对于没有插入线性基的元素x,贡献是2^(N-base-1),因为x选择之后,其他非基元素无论选还是不选,都可以调整基来使得异或和为0。 对于插入线性基的元素x,我们 阅读全文
摘要:
题意:有N个宿舍(N<200),给出第一年每个宿舍有哪4个同学。现在给出N个4元组y[][4],表示这4个人想住一起,问最少多少人需要换宿舍。 思路:费用流,每个4元组y[]到每个宿舍连边,流量是1,费用是4-same。 阅读全文
摘要:
#include<bits/stdc++.h> #define ll long long #define rep(i,a,b) for(int i=a;i<=b;i++) using namespace std; const int maxn=600010; const int Mod=1e9+7; int c[maxn],fa[maxn]; int Laxt[maxn],Next[maxn],T 阅读全文
摘要:
题意:给定N*M的矩阵,'*'表示可以通过,'#'表示不能通过,现在要找两条路径从[1,1]到[N,M]去,使得除了起点终点,没有交点。 思路:没有思路,就是裸题。 Lindström–Gessel–Viennot lemma a到b,c到d,两条路径完全没有交点的方案数=w[a,b]*w[c,d] 阅读全文