摘要: 交互 问题就是如何确定点的顺序 只有一个点肯定不行 需要除$1$号点找一个基准点 也就是和$1$号点相邻的点 这个可以通过$n$次叉积问出来 然后就是确定顺序 通过叉积确定比较困难 因为一次只能问出来两个点的相对顺序 这样需要$n^2$次 考虑面积询问 可以通过面积询问确定 其他点到两点连线距离 凸 阅读全文
posted @ 2020-01-27 23:57 19992147 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 扫描线 先跑一个扫描线 统计不删除的答案 然后考虑对于每个线段计算删除的答案 思考一下什么情况下删除线段答案增加 当扫描线扫到了一个右端点 并且set里只有一条线段 这时set里的线段贡献+1 这里比较好思考 还要注意如果当前线段只有一条 那么答案-1 一条线段右端点也可能造成贡献 但是不用特别计算 阅读全文
posted @ 2020-01-27 23:45 19992147 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 贪心 从上级比赛向下级比赛枚举 用一个堆维护一下可以作为对手人选的价值 每次取最小即可 如果当前比赛不用花钱就能打赢就跳过 没做出来的原因在于还想维护每个对手的手下败将 其实根本不用维护 因为剩下的人总能合理分配 只要比这个人弱的人数量足够就行 因为只要弱就行 #include <bits/stdc 阅读全文
posted @ 2020-01-27 23:14 19992147 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 贪心 一条边的价值肯定大于其子树里边的价值 那么先将叶子节点对应的边放进一个$set$ 从后往前扫 每次选$set$里最小的配对 如果出现新的叶子加入$set$ 每条边的价值就是自己以及子树中最大的编号 有点类似超级钢琴的贪心 不过简单很多 #include <bits/stdc++.h> usin 阅读全文
posted @ 2020-01-27 23:07 19992147 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 计算几何 先枚举被围住的点 计算合法比较困难 考虑计算不合法方案数 枚举其他点 选一个点连线作为基准边 当其他三个点连线都在基准边的一侧时不合法 极角排序+双指针统计即可 时间复杂度$O(n^{2}logn)$ #include <bits/stdc++.h> using namespace std 阅读全文
posted @ 2020-01-27 23:00 19992147 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 状压dp 看起来不是很好状压 反过来考虑计算贡献 $dp[S]$表示当前已经放置了集合$S$的字母 $S$内部距离之和以及$S$内部摆放方法距离对于外部还未选的字母的贡献和 这样外面怎么放不会影响当前状态的最优 因为当添加一个字母在末尾 它和$S$的未计算的贡献只有一个间隔 之前的间隔已经计算了 其 阅读全文
posted @ 2020-01-27 22:54 19992147 阅读(154) 评论(0) 推荐(0) 编辑
摘要: A 枚举一下 #include <bits/stdc++.h> using namespace std; int n; string End; string s[55]; int t[55]; int main() { cin >> n; for(int i = 1; i <= n; ++i) { 阅读全文
posted @ 2020-01-27 22:37 19992147 阅读(240) 评论(0) 推荐(0) 编辑