摘要: 很多的边会被删掉,需要排除一些干扰进行优化。和UVA - 1279 Asteroid Rangers类似,本题最关键的地方在于,对于一个单源的最短路径来说,如果最短路树上的边没有改变的话,那么最短路肯定是不会变的,所以只要枚举删掉最短路树上的边。这样的时间复杂度就能过了。#includeusing ... 阅读全文
posted @ 2015-09-02 23:50 陈瑞宇 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 求出家到其他点的最短路径,题目的条件变成了u->v不是回头路等价于d[u]>d[v]。然后根据这个条件建DAG图,跑dp统计方案数,dp[u] = sum(dp[v])。#includeusing namespace std;const int maxn = 1001, maxm = 2002;st... 阅读全文
posted @ 2015-09-02 18:47 陈瑞宇 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 题目只有一条路径会发生改变。常见的思路,预处理出S和T的两个单源最短路,然后枚举商业线,商业线两端一定是选择到s和t的最短路。路径输出可以在求最短路的同时保存pa数组得到一棵最短路树,也可以用dist数组检查。#includeusing namespace std;const int maxn = ... 阅读全文
posted @ 2015-09-02 10:20 陈瑞宇 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 用布尔变量表示状态,把限制条件转化为XνY的形式以后跑2SAT,根据变量取值输出方案。#includeusing namespace std;const int maxn = 1e5+5;#define PB push_backbool vis[maxn*2];vector G[maxn*2];in... 阅读全文
posted @ 2015-09-02 08:37 陈瑞宇 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 题目的要求一个最小值最大,二分即可,但是怎么判断呢?飞机早或者晚两种状态,可以用一个布尔变量表示,假设当前猜测为m,那么根据题意,如果x和y所对应的时间冲突那么就是¬(xΛy)化成或的形式(¬x)V(¬y),就可以套用twoSAT了。关于2-SAT,简单理解是,把逻辑推导变成一条有向边,然后跑图判断... 阅读全文
posted @ 2015-09-02 00:23 陈瑞宇 阅读(270) 评论(0) 推荐(0) 编辑