2019ICPC亚洲区域赛(南京) C-Digital Path

题目链接 Digital Path

做这道题的时候Edge浏览器的翻译给我打来了很大的困扰,我再也不用翻译器读题了。(似乎也不太可能)

观察之后的第一想法是BFS,但是再确定BFS的根节点的过程中我发现,这个图看作DAG,入度为0的点就是起点。

然后自然而然地把思路转到了拓扑排序上,在拓扑排序的过程中更新dp数组。

状态转移方程为:

dp[xx][yy][k]+=dp[x][y][k−1],wherek≤3dp[xx][yy][k]+=dp[x][y][k-1], \,where\,k≤3dp[xx][yy][k]+=dp[x][y][k−1],wherek≤3

dp[xx][yy][4]+=dp[x][y][3]+dp[x][y][4]dp[xx][yy][4]+=dp[x][y][3]+dp[x][y][4]dp[xx][yy][4]+=dp[x][y][3]+dp[x][y][4]

其中dp[xx][yy][4]dp[xx][yy][4]dp[xx][yy][4]表示以(xx,yy)(xx,yy)(xx,yy)为终点的且长度大于等于4的路径个数。

代码如下:

#include<bits/stdc++.h>
using namespace std;
const int MOD=1e9+7;
const int MAXN=1e3+5;
struct node{int x,y;node(int a,int b):  x(a),y(b){}
};
int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1},n,m,mp[MAXN][MAXN],in[MAXN][MAXN],out[MAXN][MAXN],dp[MAXN][MAXN][5];
queue <node> Q;
int main(){cin>>n>>m;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>mp[i][j];for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)for(int k=0;k<4;k++){int newi=i+dx[k],newj=j+dy[k];if(newi<1||newi>n||newj<1||newj>m) continue;if(mp[i][j]==mp[newi][newj]+1) in[i][j]++;if(mp[i][j]==mp[newi][newj]-1) out[i][j]++;} for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(in[i][j]==0){dp[i][j][1]++;Q.push(node(i,j));}while(!Q.empty()){int x=Q.front().x,y=Q.front().y; Q.pop();for(int i=0;i<4;i++){int xx=x+dx[i];int yy=y+dy[i];if(xx>n||xx<1||yy>m||yy<1) continue;if(mp[xx][yy]!=mp[x][y]+1) continue;if(in[xx][yy]!=0){dp[xx][yy][1]=0;dp[xx][yy][2]=(dp[xx][yy][2]+dp[x][y][1])%MOD;dp[xx][yy][3]=(dp[xx][yy][3]+dp[x][y][2])%MOD;dp[xx][yy][4]=(dp[xx][yy][4]+dp[x][y][3]+dp[x][y][4])%MOD;in[xx][yy]--;if(in[xx][yy]==0) Q.push(node(xx,yy));}}}int ans=0;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(out[i][j]==0)ans=(ans+dp[i][j][4])%MOD;cout<<ans;return 0;
}

提交了5次才通过,原来是我把1e9+7写成了1e9
队友笑疯了

2019ICPC亚洲区域赛(南京) C-Digital Path 题解相关推荐

  1. 2019ICPC亚洲区域赛南京网络赛

    Problem F Greedy Sequence 题目链接:https://nanti.jisuanke.com/t/41303 题意: 给出n个整数,构造s1,s2,s3-sns1,s2,s3-s ...

  2. 2019ICPC亚洲区域赛日程与2019CCPC比赛日程

    银川 8.31 10.19-20 南京 9.01 10.26-27 徐州 9.07 11.02-03 南昌 9.08 11.09-10 沈阳 9.14 11.16-17 上海 9.15 11.23-2 ...

  3. 2019ICPC亚洲区域赛南昌网络赛

    Problem B Fire-Fighting Hero 题目链接:https://nanti.jisuanke.com/t/41349 题意: 判断消防英雄去其他消防点的最短路径的最大值与消防队去其 ...

  4. Evil Coordinate亚洲区域赛(南京)

    Evil Coordinate 亚洲区域赛(南京) 你好! 我是一个刚刚接触acm的小菜鸡,今天对南京站的E有一点想法,写在这里和大家分享一下. 由于自己的代码能力比较弱,所以写的比较繁琐.欢迎大家优 ...

  5. 第44届ICPC国际大学生程序设计亚洲区域赛(南京站)心得体会

    2019年10月27日在南京航天航空大学举行第44届ICPC国际大学生程序设计亚洲区域赛(南京站).我有幸能与袁应师兄.胡富云一起去参赛.这一次比赛深感愧疚,我们队没能做出一个题,还有自身实力太弱. ...

  6. 2018 ACM-ICPC亚洲区域赛 北京赛区

    2018 ACM-ICPC亚洲区域赛 北京赛区 A - Jin Yong's Wukong Ranking List HihoCoder - 1870 题意 给N对关系,每对关系表示为A 比B 厉害, ...

  7. 2018 焦作站亚洲区域赛校内选拔赛题解

    SUST_2018 焦作站亚洲区域赛校内选拔赛 A.高速        by yoyo tag:图论.最短路 //最短路 #include<bits/stdc++.h> using nam ...

  8. SUST_2018 焦作站亚洲区域赛校内选拔赛题解

    SUST_2018 焦作站亚洲区域赛校内选拔赛 A.高速        by yoyo tag:图论.最短路 //最短路 #include<bits/stdc++.h> using nam ...

  9. 第43期ACM_ICPC亚洲区域赛(焦作站)感想

    2018年11月25日在焦作河南理工大学举办了第43期ACM_ICPC亚洲区域赛,本次比赛我很荣幸的代表了学校参加了比赛,但是很可惜只是去打了个铁(嘤嘤嘤~~).不过虽然没有拿到牌,但是这也是一场不错 ...

  10. 2018年ACM-ICPC亚洲区域赛(焦作)赛后总结

    昨天刚参加完人生中的第一场ACM-ICPC亚洲区域赛焦作站,对于这次比赛两个字"自闭". 正式赛前一天早上七点起床,从西安坐高铁去郑州,然后坐城际高铁去焦作,因为热身赛马上就要开始 ...

最新文章

  1. java 值类型与引用类型_JAVA 关于值类型和引用类型的区别
  2. Python-OpenCV 笔记3 -- 霍夫变换(Hough)
  3. 使用using与typedef来定义别名
  4. 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛(同步赛)解题报告
  5. Linux系统内存管理实验报告,Linux 内存管理 综合实验报告.pdf
  6. nginx学习之详细安装篇(二)
  7. 【PS基本操作】如何使用PS把图片背景去掉、透明背景
  8. 小学五年级计算机考试试题,小学信息技术考试题库中五年级试题——选择题
  9. Spring拦截器和过滤器的区别
  10. 强大视频电影播放软件——乐鱼影音盒!
  11. 【模拟电子技术Analog Electronics Technology 6】—— 共射放大电路的原理与改进
  12. Spring Boot为什么不需要额外安装Tomcat?
  13. local_listener参数(2)---elaine
  14. python装在固态还是机械好_大容量与高性能SSD硬盘的比较
  15. android学习笔记之GoogleMap 【转】
  16. 【转】WebMagic-总体流程源码分析
  17. 不限空间大小 会赚钱的网盘 收益模式详解
  18. 计算机等级分图表,计算机二级Office:Excel模拟分析和图表知识点讲解
  19. practice是什么意思_practice是什么意思
  20. android加载ftp图片,按键安卓版网络访问之 图片处理,FTP,HTTP 实现

热门文章

  1. MATLAB LSTM多输入单输出 模式分类 示例解析(含代码)
  2. Hadoop学习心得
  3. 解决cuda官网安装包下载速度慢的问题
  4. 水电远程预付费管理系统
  5. cplex java_【CPLEX教程02】配置Cplex的Java环境以及API说明
  6. android sdk根目录,Android SDK位置
  7. 关于E-Prime 2.0 无法呈现音频的一种解决方案
  8. css怎么设置数字的字体格式,css设置字母数字字体库信息
  9. html 字体样式 幼圆,设置字体样式:字号大小,字体种类,字体粗细
  10. 二分查找在java中的实现