HDU5807 Keep In Touch DP
// HDU5807 Keep In Touch DP
// 思路:直接暴力是O(n^6).所以要优化一下
// dp[i][j][k][0]:当前点i j k的方案数
// dp[i][j][k][1]:j在当前时刻,i k还在上次
// dp[i][j][k][2]:j k在当前时刻,i还在上次
// 那么就可以转移了 本题u<v 所以转移的时候从大到小 从后往前 #include <bits/stdc++.h>
using namespace std;
#define clc(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
const int N = ;
const int MOD = ;
#define LL long long
double const pi = acos(-);
void fre() {freopen("in.txt","r",stdin);} int n,m,c,q;
int w[];
int g[][];
int dp[][][][]; int check(int a,int b,int c){
return max(abs(a-b),max(abs(b-c),abs(a-c)));
}
void DP(){
for(int i=n;i>=;i--){
for(int j=n;j>=;j--){
for(int k=n;k>=;k--){
dp[i][j][k][]=,dp[i][j][k][]=dp[i][j][k][]=;
for(int h=i+;h<=n;h++){
if(g[h][i]) dp[i][j][k][]=(dp[i][j][k][]+dp[h][j][k][])%MOD;
}
for(int h=j+;h<=n;h++){
if(g[h][j]) dp[i][j][k][]=(dp[i][h][k][]+dp[i][j][k][])%MOD;
}
for(int h=k+;h<=n;h++){
if(g[h][k]) dp[i][j][k][]=(dp[i][j][h][]+dp[i][j][k][])%MOD;
}
if(check(w[i],w[j],w[k])>c) dp[i][j][k][]=;
}
}
}
} int main(){
int T;
scanf("%d",&T);
while(T--){
scanf("%d%d%d%d",&n,&m,&c,&q);
for(int i=;i<=n;i++) scanf("%d",&w[i]);
clc(g,);
clc(dp,);
for(int i=;i<=m;i++) {
int u,v;
scanf("%d%d",&u,&v);
g[v][u]=;
}
DP();
while(q--){
int u,v,z;
scanf("%d%d%d",&u,&v,&z);
printf("%d\n",dp[u][v][z][]);
}
}
return ;
}
HDU5807 Keep In Touch DP的更多相关文章
- [HDU5807] [BestCoder Round #86 1004] Keep In Touch (DP)
[HDU5807] [BestCoder Round #86 1004] Keep In Touch (DP) 题面 有三个人从一张N个点无重边的有向无环图上的三个点出发,每单位时间,他们分别选择当前 ...
- HDU5807 Keep In Touch (BestCoder Round #86 D ) 分布式dp
#include <cstdio> #include <cstring> #include <cmath> #include <vector> #inc ...
- HDU 5807 Keep In Touch DP
Keep In Touch Problem Description There are n cities numbered with successive integers from 1 to n ...
- [HDU5807] Keep In Touch
\(Keep\ In\ Touch\):保持联络 \(Informatik\ verbindet\ dich\ und\ mich.\) 信息将你我连结? 发现这个方程很容易列出来. \(f[i][j ...
- hdu_5807_Keep In Touch(分段dp)
题目链接:hdu_5807_Keep In Touch 题意: 在Byteland一共有nn个城市,编号依次为11到nn,同时有mm条单向道路连接着这些城市,其中第ii条道路的起点为u_iui, ...
- HDU5807分段dp
DAG图. [题意] n(50)个城市m(c(n,2))条单向边(x,y),保证x<y 对于三个点(x,y,z)如果abs(w[x]-w[y])<=K && abs(w[x ...
- 【Codeforces720D】Slalom 线段树 + 扫描线 (优化DP)
D. Slalom time limit per test:2 seconds memory limit per test:256 megabytes input:standard input out ...
- 浅谈数位DP
在了解数位dp之前,先来看一个问题: 例1.求a~b中不包含49的数的个数. 0 < a.b < 2*10^9 注意到n的数据范围非常大,暴力求解是不可能的,考虑dp,如果直接记录下数字, ...
- Codeforces Testing Round #12 C. Subsequences 树状数组维护DP
C. Subsequences Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/597/probl ...
随机推荐
- iOS UICollectionView简单使用
UICollectionView 和 UICollectionViewController 类是iOS6 新引进的API,用于展示集合视图,布局更加灵活,可实现多列布局,用法类似于UITableVie ...
- ios(苹果公司的移动操作系统)
iOS是由苹果公司开发的移动操作系统. 苹果公司最早于2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的, 后来陆续套用到iPod touch.iPad以及Appl ...
- qt外部数据传入实现动态的折线图绘制
在嵌入式开发中,实现数据收集与显示很常见,对于希望数据稳定的应用来说, 折现图的表现形式很符合条件. 本实现是通过qt的signal-slot来 ...
- C++工具系列博文合集
http://www.cnblogs.com/itech/category/240779.html
- Apache编译与安装 RedHat enterprises 6.2
引自:http://blog.chinaunix.net/uid-26881541-id-3336614.html http://apr.apache.org/download.cgi 命令: yum ...
- 机器学习 —— 概率图模型(Homework: Factors)
Talk is cheap, I show you the code 第一章的作业主要是关于PGM的因子操作.实际上,因子是整个概率图的核心.对于有向图而言,因子对应的是CPD(条件分布):对无向图而 ...
- PCL—综述—三维图像处理
点云模型与三维信息 三维图像是一种特殊的信息表达形式,其特征是表达的空间中三个维度的数据.和二维图像相比,三维图像借助第三个维度的信息,可以实现天然的物体-背景解耦.除此之外,对于视觉测量来说,物体的 ...
- 车牌识别LPR(八)-- 字符识别
第八篇:字符识别 车牌定位.车牌倾斜校正.车牌字符分割都是为车牌字符识别做的前提工作,这些前提工作直接关系到车牌识别系统的性能.车牌字符识别是车牌识别系统的核心部分,车牌字符识别的准确率是衡量车牌识 ...
- Log4j具体使用实例
首先,下载log4j.jar架包(网上很多,随便下载一个就可以了), 第一步:新建java项目,Testlog4j,再在src中建立com.Testlog4j包,再建一个testlog4j.java文 ...
- Qt之自定义界面(右下角冒泡)
简述 网页右下角上经常会出现一些提示性的信息,桌面软件中也比较常见,类似360新闻.QQ消息提示一样! 这种功能用动画实现起来很简单,这节我们暂时使用定时器来实现,后面章节会对动画框架进行详细讲解. ...