[HDU5807] Keep In Touch
\(Keep\ In\ Touch\):保持联络
\(Informatik\ verbindet\ dich\ und\ mich.\) 信息将你我连结?
发现这个方程很容易列出来。
\(f[i][j][k]=f[l][m][n]\)
但是这个方程状态是\(n^3\)的,转移是\(n^3\)的,时间复杂度是\(O(n^6)\)的不够优秀。
发现可以牺牲一些空间。
\(f[i][j][k][p]\)表示第一个人在\(i\),第二个人在\(j\),第三个人在\(k\),现在轮到第\(p\)个人走了。
发现这样的话转移是\(n\)的,状态是\(n^3\)的,这样的话就复杂度降到了\(n^4\),就稳了。。。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
const int N=55,mod=998244353;
int T,f[N][N][N][3],w[N],K,Q,g[N][N],a,b,c,n,m;
bool pd(int x,int y) {return abs(w[x]-w[y])<=K;}
bool ck(int x,int y,int z) {
return pd(x,y)&&pd(y,z)&&pd(x,z);
}
int dfs(int x,int y,int z,int r) {
int &tp=f[x][y][z][r];
if(tp!=-1) return tp;
tp=0;
if(r==1&&ck(x,y,z)) tp=1;
for(int i=1;i<=n;i++) {
if(r==1&&g[x][i]) tp=(tp+dfs(i,y,z,2))%mod;
else if(r==2&&g[y][i]) tp=(tp+dfs(x,i,z,3))%mod;
else if(r==3&&g[z][i]&&ck(x,y,i)) tp=(tp+dfs(x,y,i,1))%mod;
}
return tp;
}
int main() {
scanf("%d",&T);
while(T--) {
memset(f,-1,sizeof f);
scanf("%d%d%d%d",&n,&m,&K,&Q);
memset(g,0,sizeof g);
for(int i=1;i<=n;i++) scanf("%d",&w[i]);
for(int i=1,x,y;i<=m;i++) scanf("%d%d",&x,&y),g[x][y]=1;
while(Q--) scanf("%d%d%d",&a,&b,&c),printf("%d\n",dfs(a,b,c,1));
}
return 0;
}
[HDU5807] Keep In Touch的更多相关文章
- 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][ ...
- HDU5807 Keep In Touch (BestCoder Round #86 D ) 分布式dp
#include <cstdio> #include <cstring> #include <cmath> #include <vector> #inc ...
- [HDU5807] [BestCoder Round #86 1004] Keep In Touch (DP)
[HDU5807] [BestCoder Round #86 1004] Keep In Touch (DP) 题面 有三个人从一张N个点无重边的有向无环图上的三个点出发,每单位时间,他们分别选择当前 ...
- mkdir,rmdir,cp,rm,mv,cat,touch用法
一.mkdir新建目录 1.进入tmp目录,查看该目录下面的子目录 [root@localhost ~]# cd /tmp[root@localhost tmp]# lshsperfdata_root ...
- UC浏览器中touch事件的异常记录
以前也在UC上面栽过几个坑,不过都是页面显示方面的.上个周的时候,商品详情页重做,要添加个上拉显示详情的效果. 有两个条件需要判断: 1.是否到达底部: 2.到达底部之后拖动的y轴距离. 效果写完后, ...
- 移动端web开发,click touch tap区别
转自: http://blog.csdn.net/sly94/article/details/51701188 移动端用tap时会有穿透问题 一:click与tap比较 click与tap都会触发点击 ...
- 手机端html5触屏事件(touch事件)
touchstart:触摸开始的时候触发 touchmove:手指在屏幕上滑动的时候触发 touchend:触摸结束的时候触发 而每个触摸事件都包括了三个触摸列表,每个列表里包含了对应的一系列触摸点( ...
- 移动端开发概览【webview和touch事件】
作为一个前端,而且作为一个做移动端开发的前端,那意味着你要有三头六臂,跟iOS开发哥哥一起打酱油,跟Android开发哥哥一起修bug... Android vs Ios 我在webkit内核的chr ...
- 手持设备点击响应速度,鼠标事件与touch事件的那些事
前言 现在一直在做移动端的开发,这次将单页应用的网页内嵌入了app,于是老大反映了一个问题:app应用点击响应慢!我开始不以为然,于是拿着网页版的试了试,好像确实有一定延迟,于是开始了研究,最后选择了 ...
随机推荐
- [WebGL入门]二十一,从平行光源发出的光
注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中假设有我的额外说明.我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语.假设翻译有误,欢迎大家指 ...
- Android开源框架ViewPageIndicator和ViewPager实现Tab导航
前言: 关于使用ViewPageIndicator和ViewPager实现Tab导航,在开发社区里已经有一堆的博客对其进行了介绍,假设我还在这里写怎样去实现.那简直就是老生常谈,毫无新奇感,并且.我也 ...
- PhoneGap:JS跨域请求
PhoneGap开发,理论上好处多多.但因为javascript是其中的主角,并且是直接存放于手机,跟服务器数据交互,就会有一个跨域访问的问题. 当然,这个问题肯定有解决方案,不然的话,这种利用Pho ...
- P1830 轰炸III
P1830 轰炸III 84通过 145提交 题目提供者wanglichao1121 标签模拟矩阵洛谷原创 难度普及/提高- 提交该题 讨论 题解 记录 最新讨论 暂时没有讨论 题目背景 一个大小为N ...
- ios13--购物车优化
// // ViewController.m // 03-综合练习 // #import "ViewController.h" @interface ViewController ...
- 利用SSL For Free工具3分钟获取Let's Encrypt免费SSL证书
https://www.sslforfree.com/
- eclipse----快速设置主题色
- poj1006生理周期(中国剩余定理)
生理周期 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 139224 Accepted: 44687 Descripti ...
- 如何解决error LNK2001(转载)
转自:http://www.cnblogs.com/myzhijie/articles/1658545.html 解决外部符号错误:_main,_WinMain@16,__beginthreadex ...
- ansible基础知识(二)
软件相关模块 yum yum和rpm的区别 rpm: (Redhat package manager)RPM管理支持事务机制.增强了程序安装卸载的管理. yum: YUM被称为 Yellow dog ...