摘要: "C. Friends" 题意 对于任一点,求到此点距离不超过6的节点数。 分析 第一次dfs,形成一个以 1 为根的有向树,设 down[i][j] 为以i为根节点,距离 i 点距离不超过 j 的节点数(这些节点都是 i 的子孙节点) 第二次dfs,设 up[i][j] 以 i 为起点,距离 i 阅读全文
posted @ 2017-05-01 10:49 ftae 阅读(167) 评论(0) 推荐(0) 编辑
摘要: "RPG的地图" 题意 判断点是否在不规则多边形内, 分析 首先,所有横、纵坐标都+1000,方便标记和累加。 1. 在边上也满足条件,对于垂直或平行于 x 轴的线段,直接在枚举线段的时候标记下其中的所有点即可。对于其它线段,表示成 的形式,枚举 x 找到,整数 y 即可。 2. 对于在里面的点,通 阅读全文
posted @ 2017-05-01 10:47 ftae 阅读(324) 评论(0) 推荐(0) 编辑
摘要: "Range Modular Queries" 题意 给出一个数列,q个查询,问查询区间内有几个数 a[i] % x == y。 分析 其实裸的分块就能过了,跑的还特别快。 这里分块的作用就是排序。 在x较小时可以暴力打表,x较大时枚举显得更加高效。 code cpp include using n 阅读全文
posted @ 2017-05-01 10:43 ftae 阅读(173) 评论(0) 推荐(0) 编辑
摘要: "Maximum Subarray Sum" 题意 给你一个大小为N的数组和另外一个整数M。你的目标是找到每个子数组的和对M取余数的最大值。子数组是指原数组的任意连续元素的子集。 分析 "参考" 求出前缀和,问题变成了O(n n)复杂度的问题,但是仍然不能解决问题。 设prefix为前缀和,设i p 阅读全文
posted @ 2017-05-01 10:40 ftae 阅读(336) 评论(0) 推荐(0) 编辑
摘要: "hdu4638" 题意 给定一个序列,序列由1 N个元素全排列而成,求任意区间可组成的连续的段数,比如[1,2,4]两段{[1,2],[4]},[1,2,4,3]一段{[1,2,3,4]}。 对于查询的区间询问的是可组成的连续的数的段数最小值。 分析 分块排好序,O(1)的维护就是每新添加一个元素 阅读全文
posted @ 2017-05-01 10:38 ftae 阅读(211) 评论(0) 推荐(0) 编辑
摘要: "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 阅读全文
posted @ 2017-05-01 10:31 ftae 阅读(290) 评论(0) 推荐(0) 编辑
摘要: "参考blog" "参考论文" "参考论文" 题目 & 题解 裸2 SAT "poj3683" "poj3207" "poj3678" "poj3648" 2 SAT + 二分法 "poj2723" "poj2749" "hdu3622" "hdu3715" 一点总结 1. 寻找对立关系,一般是每回 阅读全文
posted @ 2017-05-01 10:26 ftae 阅读(751) 评论(0) 推荐(0) 编辑
摘要: "hdu3715" 题意 给出一个递归的伪代码,当 x[a[dep]] + x[b[dep]] != c[dep],就向下递归,给出a,b,c数组的值 问 dep 最大多少。其中 0 include include include include using namespace std; const 阅读全文
posted @ 2017-05-01 10:16 ftae 阅读(213) 评论(0) 推荐(0) 编辑
摘要: "hdu3622" 题意 每回合给定两个坐标点,可以选择一个放置炸弹,自己决定炸弹的半径,问 n 个回合后,使炸弹半径最小值最大。 分析 存在对立关系:每回合只能选择一个地方放置炸弹。i 表示 第一个位置 i + n 表示第二个位置。 当 i 、j 存在交点时,i j + n,j i + n 。 c 阅读全文
posted @ 2017-05-01 10:14 ftae 阅读(242) 评论(0) 推荐(0) 编辑
摘要: "poj2749" 题意 有 n 个农场,2个中转站,每个农场只能连接到一个中转站,2个农场可能不愿意连接到同一中转站,也可能只愿意连接到同一中转站,给出农场和中转站的坐标,求使得任意两个农场通过中转站连接的距离最大值最小,如果存在农场无法连接输出 1。 分析 对于农场 x, y 如果不愿意连接到同 阅读全文
posted @ 2017-05-01 10:10 ftae 阅读(325) 评论(0) 推荐(0) 编辑
摘要: "poj2723" 题意 m道门,每道门两把锁,有n对钥匙,对应2 n把锁,已知一对钥匙内取出一把另一把就会消失,求按顺序最多可开多少门 。 分析 任意一道门都是一个子句,两把锁A和B是OR的关系。即 二分最大可以开门的数量,判断可行性。 code cpp include include inclu 阅读全文
posted @ 2017-05-01 10:05 ftae 阅读(406) 评论(0) 推荐(0) 编辑
摘要: "poj3648" 题意 有一对新人结婚,n 1对夫妇去参加婚礼.有一个很长的座子,新娘与新郎坐在座子的两边(相反).接下来n 1对夫妇就坐,其中任何一对夫妇都不能坐在同一边,且(有一些人有奸情)这些有奸情的两个人不能同时坐在新娘对面.(只能分开做,或者都坐到新娘一边去)。对于每个输入实例,输出应该 阅读全文
posted @ 2017-05-01 10:02 ftae 阅读(244) 评论(0) 推荐(0) 编辑
摘要: "poj3678" 题意 某组合电路有N个输入,M个与(AND) 或(OR) 异或(XOR) 门将其两两相连构成多个输出,问是否存在满足给定输出的输入。 分析 建图,注意当 ( i && j) == 1 时,即要求 i 、j 都为真 ,此时连边 i‘ i , j’ j 。 (i || j) == 0 阅读全文
posted @ 2017-05-01 09:57 ftae 阅读(492) 评论(0) 推荐(0) 编辑
摘要: "poj3207" 题意 平面上,一个圆,圆的边上按顺时针放着n个点。现在要连m条边, 比如a,b,那么a到b可以从圆的内部连接,也可以从圆的外部连接。 给你的信息中,每个点最多只会连接的一条边。问能不能连接这m条边, 使这些边都不相交。 分析 建图 见代码, 2 SAT模板 code 阅读全文
posted @ 2017-05-01 09:54 ftae 阅读(347) 评论(0) 推荐(0) 编辑
摘要: "poj3683" 题意 n对新人举行婚礼,婚礼在不同时间段但可能重叠,婚礼有开始(Si)、结束(Ti)、仪式举行时间(Di),问能否给出一种举行方案,使得神父能参加所有的婚礼并举行仪式。 分析 xi为真 在开始时举行仪式, xj为假 在结束时举行仪式。 设x' 为 非x。(若 x 为真,则 x' 阅读全文
posted @ 2017-05-01 09:52 ftae 阅读(554) 评论(0) 推荐(0) 编辑
摘要: "poj2186" 题意 A B表示 A 认为 B是红人,且如果 B C,则 A C。问有几头牛被所有牛都认为是红人。 分析 如果A被所有牛认为是红人,那么A所在的强连通分量里的牛也被所有牛认为是红人。 至多只有一个强连通分量满足满足题目的条件。(否则这两个强连通分量合并,仍然是一个强连通分量) 按 阅读全文
posted @ 2017-05-01 09:43 ftae 阅读(187) 评论(0) 推荐(0) 编辑
摘要: sg 函数 "参考" 通俗易懂 "论文" 几类经典的博弈问题 1. 阶梯博弈: 只考虑奇数号楼梯Nim,若偶数楼梯只作容器,那么游戏变为Nim。 "题目" 2. 翻转硬币: 局面的SG值为局面中每个正面朝上的棋子单一存在时的SG值的异或和。 "题目" 3. Multi SG游戏: 对于一个单一游戏, 阅读全文
posted @ 2017-05-01 09:37 ftae 阅读(347) 评论(0) 推荐(0) 编辑
摘要: 在图论中,由一个有向无环图的顶点组成的序列,当且仅当满足下列条件时,称为该图的一个拓扑排序(英语:Topological sorting)。 每个顶点出现且只出现一次; 若A在序列中排在B的前面,则在图中不存在从B到A的路径。 也可以定义为:拓扑排序是对有向无环图的顶点的一种排序,它使得如果存在一条 阅读全文
posted @ 2017-05-01 09:34 ftae 阅读(156) 评论(0) 推荐(0) 编辑
摘要: "hdu3308" 题意 更新单个点,对于询问的区间,求最长连续子序列的长度。 分析 区间合并模板题。 分析见代码。 code cpp include include include include include define lson l, m, rt 2 define rson m + 1, 阅读全文
posted @ 2017-05-01 09:28 ftae 阅读(593) 评论(0) 推荐(0) 编辑