摘要:
论水题与难题的差距:在于一个upper_bound 那么,这题一看就很显然了:因为答案满足二分性质所以我们二分。 然后我们再建造一个二维前缀和,每次判断的时候怎么办呢? 我先以为是贪心:选择以每个点为角落的正方形。后来瞬间构造反例: ————— 丨 · 丨 丨 · 丨 丨· 丨 丨 · 丨 ———— 阅读全文
摘要:
哈,就这样水过去了?? 不科学呀。 好吧,平面最近点对(伪)。 就是一个二分的事: 1.以x排序。 2.二分,递归求解。 具体来讲,主要难在如何求 横跨两个区域的最近点对 这一环节。 那么是这样做的:首先我们会有个ans是左右的最小值对吧。 我们只考虑在划分线左右两边不超过ans的那些点(即为[_l 阅读全文
摘要:
神题。这题是巨毒瘤... 自己写真可谓是: 排空驭气奔如电,上天入地求之遍 上穷碧落下黄泉,两处茫茫皆不见 由于我们知道:不是树形时,不停选值最大的节点可以得到最小代价。 那么我们就能想出一个错误的贪心:每次从能选的中选出最大的。 下面我们来构造反例: root ↙ ↘ 1 2 ↓ 100 贪心:2 阅读全文
摘要:
真·水题。 环形均分纸牌模板题。 只需求出前缀和,然后取中位数求前缀和总和即可。 1 #include <cstdio> 2 #include <algorithm> 3 using namespace std; 4 typedef long long LL; 5 const int N = 100 阅读全文
摘要:
我一开始的想法是间断性的输出空格和solve(k-1) 但是发现问题很大。 雨菲:可以用一个数组保存啊 我:那不爆了? 雨菲:不会爆。 我一算:729 × 729,还真没爆。 然后就直接WA了...... 仔细观察,发现要输出X,而我输出x 然后就A了。 大水题。 1 #include <cstdi 阅读全文
摘要:
大水题一道。纯模拟代码才60行。 1 #include <cstdio> 2 using namespace std; 3 4 int pile[14][5], open[13]; 5 6 inline bool ban(char c) { 7 if(c <= '9' && c >= '0') re 阅读全文
摘要:
这题有人用毒瘤的高斯消元做,也有人DFS,BFS,还有人证明性质然后直接计算,而我选择了最暴力的方法: 2^16枚举! 一算复杂度发现最坏情况是65536×16×4,无压力...... 秒A 1 #include <cstdio> 2 using namespace std; 3 4 bool a[ 阅读全文
摘要:
我们一眼就看出了这是一个贪心,只要排序即可。 具体来说:按照x排序,然后尽量靠右放探测器。 实际上我们还要用到一个转化:把一个点转化为x轴上的一段区间。 然后我就成功WA了! 然后发现少了一个关键语句:else if(a[i].r < now) now = a[i].r; 之前的贪心策略是错误的。这 阅读全文
摘要:
我一开始想用线段树,但是发现还要记录每头cow所在的棚...... 无奈之下选择正解:贪心。 用priority_queue来维护所有牛棚中结束时间最早的那个牛棚,即可得出答案。 注意代码实现的细节。 1 #include <cstdio> 2 #include <algorithm> 3 #inc 阅读全文
摘要:
两个难点。 怎么想到的贪心? 首先确定算法: 显然不是数据结构题。转成图论也不太可能。 考虑DP:f[i][j]表示前i个人取j状态的最小最大值......2^1000,直接放弃。 因为出现了“最大值最小”,考虑二分答案:如果我们有一个ans是最大值,我们怎么判断是否可行? 要确保每一个数都不会超过 阅读全文