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 ...
随机推荐
- PHP实现冒泡算法
<?php //php函数:count($arr)返回array的数值总数. function bubble_sort($arr){ for ($i = 6;$i > 0;$i --){ ...
- PythonCrawl自学日志(3)
2016年9月21日09:21:431.爬虫的抓取周期:(1)首先生成初始请求爬第一个url,并指定一个回调函数被称为与下载这些请求的响应.(2)第一个请求执行通过调用 start_requests( ...
- C语言宏定义取得两数的最大值和最小值
/*本程序时为了验证用宏来做 * 两个数的大小比较的写法*/#include<stdio.h>#define MAX(x,y) ((x)<(y)?(y):(x))#define MI ...
- WPF中让TextBlock每一个字符显示不同的颜色
XAML代码: <TextBlock x:Name="tb"> <Run Foreground="Red">R</Run> ...
- PAT乙级真题1004. 成绩排名 (20)(解题)
题目: 读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第 ...
- PL/SQL中如何执行DDL、SCL?
PL/SQL程序中不能直接执行DDL语句.为什么? 假设我们在pl/sql程序中有这样的一条DDL语句—— drop table emp:在第一次解析pl/sql中的“drop table emp;” ...
- mvc权限,登陆,异常
public class FilterOfPer : ActionFilterAttribute { public override void OnActionExecutin ...
- 如何在JavaScript里防止事件函数的高频触发和调用
网页中JavaScript最基本的功能是监听或响应用户的动作,这非常的有用.用户的动作有些频率非常高,有的十分罕见.有些监听器函数的执行如闪电般完成,而有些繁重的会把浏览器拖死.拿浏览器窗口的resi ...
- ./configure详解
'configure'脚本有大量的命令行选项.对不同的软件包来说,这些选项可能会有变化,但是许多基本的选项是不会改变的.带上'--help'选项执行'configure'脚本可以看到可用的所有选项.尽 ...
- 可编辑的select框的实现(实用版)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEA ...