• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
泳裤王子
不要挂科..
博客园 首页 新随笔 联系 订阅 订阅 管理

2011年10月28日

[图论] 2-sat 入门
摘要: ps.写topsort输出解的时候各种混乱。还是没理解透。写点东西理清思路先。_10_282-sat 就是n个元素,可取0或1(2的含义),然后加上一些附加条件。问题的解为n个元素的取值。感觉就是离散数学里面的数理逻辑什么的,一堆0、1。问题的做法是通过建图来解。一般将n个元素拆点为2*n个点,表示取0或取1。然后,根据条件连边,边u->v表示,u发生,v一定发生。(这不就是数理逻辑里的那什么条件运算吗....)所以,若至少存在一组解,则元素 i 取0的点和 i 取1的点不能在一个强连通分支(SCC)里。所以这里就要用到tarjin。(还有另外一个神马的算法忘了...)可以证明不存在上述 阅读全文
posted @ 2011-10-28 17:08 泳裤王子 阅读(129) 评论(0) 推荐(0)
 
[2-sat][裸题] HDU3062 Party
摘要: 这题只判断可行性,不用输出解,应该是2-sat入门题里最水的一道....代码://n个元素。i=0~n-1. //i表示0、i+n表示1、i+2n表示0'、i+3n表示1'。 //1wa。这题竟然有多组数据。... #include<cstdio> #include<cstring> #include<iostream> using namespace std; #define MAXN 4002 //4倍的点 //#define MAXM 8000002 //n*n/2 #define MAXM 30000100 //??? struct 阅读全文
posted @ 2011-10-28 11:56 泳裤王子 阅读(188) 评论(0) 推荐(0)
 
有向图的强连通分量 SCC tarjin算法
摘要: 这个本来是暑假的时候学图连通性的时候一起学的。没整理出来,又有些遗忘。现在在 2-sat 里用到它来缩点。先写个简略版的。算法:dfn[]、low[]初始为++num(排除0),tarjin到u入栈s,ins[u] = 1;遍历u的所有邻点v(邻接表),对没有tarjin的点(dfn[v]=0),tarjin(v),low[u] = min(low[u], low[v])。对tarjin过,并还在栈中的点,low[u] = min(low[u], dfn[v])。遍历完后,如果dfn[u] == low[u],栈顶v出栈,直到u==v。同一时间出栈的即为一个强连通分量。代码:// 求 有向图 阅读全文
posted @ 2011-10-28 10:25 泳裤王子 阅读(480) 评论(0) 推荐(0)
 
 

公告


博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3