摘要:
"RPG的地图" 题意 判断点是否在不规则多边形内, 分析 首先,所有横、纵坐标都+1000,方便标记和累加。 1. 在边上也满足条件,对于垂直或平行于 x 轴的线段,直接在枚举线段的时候标记下其中的所有点即可。对于其它线段,表示成 的形式,枚举 x 找到,整数 y 即可。 2. 对于在里面的点,通 阅读全文
摘要:
"Range Modular Queries" 题意 给出一个数列,q个查询,问查询区间内有几个数 a[i] % x == y。 分析 其实裸的分块就能过了,跑的还特别快。 这里分块的作用就是排序。 在x较小时可以暴力打表,x较大时枚举显得更加高效。 code cpp include using n 阅读全文
摘要:
"Maximum Subarray Sum" 题意 给你一个大小为N的数组和另外一个整数M。你的目标是找到每个子数组的和对M取余数的最大值。子数组是指原数组的任意连续元素的子集。 分析 "参考" 求出前缀和,问题变成了O(n n)复杂度的问题,但是仍然不能解决问题。 设prefix为前缀和,设i p 阅读全文
摘要:
"hdu4638" 题意 给定一个序列,序列由1 N个元素全排列而成,求任意区间可组成的连续的段数,比如[1,2,4]两段{[1,2],[4]},[1,2,4,3]一段{[1,2,3,4]}。 对于查询的区间询问的是可组成的连续的数的段数最小值。 分析 分块排好序,O(1)的维护就是每新添加一个元素 阅读全文
摘要:
"D. Powerful array" 题意 给定一个数列:a[i] (1 using namespace std; typedef long long ll; const int MAXN = 1e6 + 5; const int MAXT = 2e5 + 10; ll a[MAXN]; ll c 阅读全文
摘要:
"参考blog" "参考论文" "参考论文" 题目 & 题解 裸2 SAT "poj3683" "poj3207" "poj3678" "poj3648" 2 SAT + 二分法 "poj2723" "poj2749" "hdu3622" "hdu3715" 一点总结 1. 寻找对立关系,一般是每回 阅读全文
摘要:
"hdu3715" 题意 给出一个递归的伪代码,当 x[a[dep]] + x[b[dep]] != c[dep],就向下递归,给出a,b,c数组的值 问 dep 最大多少。其中 0 include include include include using namespace std; const 阅读全文
摘要:
"hdu3622" 题意 每回合给定两个坐标点,可以选择一个放置炸弹,自己决定炸弹的半径,问 n 个回合后,使炸弹半径最小值最大。 分析 存在对立关系:每回合只能选择一个地方放置炸弹。i 表示 第一个位置 i + n 表示第二个位置。 当 i 、j 存在交点时,i j + n,j i + n 。 c 阅读全文
摘要:
"poj2749" 题意 有 n 个农场,2个中转站,每个农场只能连接到一个中转站,2个农场可能不愿意连接到同一中转站,也可能只愿意连接到同一中转站,给出农场和中转站的坐标,求使得任意两个农场通过中转站连接的距离最大值最小,如果存在农场无法连接输出 1。 分析 对于农场 x, y 如果不愿意连接到同 阅读全文
摘要:
"poj2723" 题意 m道门,每道门两把锁,有n对钥匙,对应2 n把锁,已知一对钥匙内取出一把另一把就会消失,求按顺序最多可开多少门 。 分析 任意一道门都是一个子句,两把锁A和B是OR的关系。即 二分最大可以开门的数量,判断可行性。 code cpp include include inclu 阅读全文