bzoj1471
转化补集的思想,首先求出任意两点之间路径数目
然后求两条路径第一次相交在点k(按照拓扑排序的顺序)的数目,显然这里要用到容斥
然后pascal有坑爹的范围检测,所以运算中有些不会影响到答案但会爆int64的地方要判断一下
const inf=1e18;
var w:array[..,..] of boolean;
f:array[..,..] of int64;
g:array[..] of int64;
q,rd:array[..] of longint;
a,b,c,d,n,m,x,y,i,j,k,h,t:longint;
ans:int64; begin
readln(n,m);
for i:= to m do
begin
readln(x,y);
w[x,y]:=true;
inc(rd[y]);
end;
for i:= to n do
if rd[i]= then
begin
inc(t);
q[t]:=i;
end;
h:=;
while h<=t do
begin
x:=q[h];
for i:= to n do
if w[x,i] then
begin
dec(rd[i]);
if rd[i]= then
begin
inc(t);
q[t]:=i;
end;
end; inc(h);
end;
readln(a,b,c,d);
for i:= to n do
for j:=i to n do
if q[i]=q[j] then f[q[i],q[j]]:=
else begin
for k:=i to j- do
if w[q[k],q[j]] then
if f[q[i],q[j]]+f[q[i],q[k]]<inf then f[q[i],q[j]]:=f[q[i],q[j]]+f[q[i],q[k]];
end; for i:= to n do
begin
if (f[q[i],b]<>) and (f[q[i],d]<>) then
begin
g[q[i]]:=f[a,q[i]]*f[c,q[i]];
for j:= to i- do
g[q[i]]:=g[q[i]]-g[q[j]]*f[q[j],q[i]]*f[q[j],q[i]];
end;
end;
for i:= to n do
ans:=ans-g[i]*f[i,b]*f[i,d];
ans:=ans+f[a,b]*f[c,d];
writeln(ans);
end.
bzoj1471的更多相关文章
- 不相交路径[BZOJ1471] 容斥原理 拓扑排序
最近学容斥的时候又碰到一道类似的题目,所以想分享一个套路,拿这题来举例 [题目描述] 给出一个\(N(N\leq 150)\)个结点的有向无环简单图.给出4个不同的点\(a,b,c,d\),定义不相交 ...
- 【BZOJ1471】不相交路径 题解(拓扑排序+动态规划+容斥原理)
题目描述 在有向无环图上给你两个起点和终点分别为$a,b,c,d$.问有几种路径方案使得能从$a$走到$b$的同时能从$c$走到$d$,且两个路径没有交点. $1\leq n\leq 200,1\le ...
随机推荐
- Hello World 的makefile模板及其分析
makefile模板: ifeq ($(KERNELRELEASE),) //判断KERNELRELEASE是否为空,只有执行make的当前目录为内核源代码目录时,该变量才不为空. KERNELDIR ...
- Inside of Jemalloc
INSIDE OF JEMALLOCThe Algorithm and Implementation of Jemalloc author: vector03mail: mmzsmm@163.co ...
- SQLite3中自增主键
SQLite清空表并将自增列归零 SQL标准中有TRUNCATE TABLE语句,用来清空表的所有内容. 但SQLite不支持这个语句.在SQLite中直接使用 DELETE FROM TableNa ...
- IOS 透视投影矩阵推导(转)
http://wenku.baidu.com/link?url=wDkyQR9fDI_tZas1BlMRUnNNoKwiQDygltm2wWxRr_sDwcDB51_QCDfR4Gb5wYrIUZ_t ...
- javascript高级编程笔记05(面向对象)
面向对象设计 es中有两种属性:数据属性和访问器属性 数据属性: 数据属性包含一个数据值的位置,在这个位置可以读取和写入值,数据属性有4个描述其行为的特性 [[Configurable]]:表示能否通 ...
- MySQL5.5版本安装失败问题
安装的时候前边都正常,总是到最后一步出问题.前几次是到最后一步没有响应,网上有一种方法是在安装MySQl的时候改变默认的服务名“MySQL”.但我试过这种方法,好几次都没成功. 这种情况下我用了第二种 ...
- storm sum aggregate 原语 聚合 本地测试
编写storm程序,对数据进行聚合并且写入到mysql, 本文 主要说明数据中有多个字段需要进行sum或其他操作时的程序写法 1.主程序main方法,storm 拓扑运行入口 public clas ...
- Rust入门篇 (1)
Rust入门篇 声明: 本文是在参考 The Rust Programming Language 和 Rust官方教程 中文版 写的. 个人学习用 再PS. 目录这东东果然是必须的... 找个时间生成 ...
- no appropriate service handler found The Connection descriptor used by the client was: localhost:1521:myorcl
参考网址:http://www.2cto.com/database/201205/133542.html http://www.cnblogs.com/kerrycode/p/4244493.html ...
- uva 437 hdu 1069
dp 将石块按三个面存入队列 按底面积排序 dp就最大高度 按嵌套矩形最长路做做法 #include <iostream> #include <cstdio> #inc ...