牛客国庆集训派对Day1 B. Attack on Titan
B. Attack on Titan
- #include<cstdio>
- #include<algorithm>
- #include<cstring>
- #include<iostream>
- #include<cmath>
- #include<cctype>
- #include<set>
- #include<queue>
- #include<vector>
- #include<map>
- using namespace std;
- typedef long long LL;
- inline int read() {
- int x=,f=;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-;
- for(;isdigit(ch);ch=getchar())x=x*+ch-'';return x*f;
- }
- const int N = ;
- const double g2 = sqrt(2.0), INF = 1e18, eps = 1e-;
- int dx[] = {, , -, , , , -, -};
- int dy[] = {, -, , , -, , -, };
- int nxt1[], nxt2[];
- bool vis[N][N][];
- double A[N][N], dis[N][N][], w[];
- struct Node{
- int x, y, now; double dis;
- bool operator < (const Node &A) const { return dis > A.dis; }
- }tmp[];
- priority_queue< Node >q;
- int main() {
- int n = read(), m = read(), C = read(), cnt = ;
- for (int i = ; i <= n; ++i)
- for (int j = ; j <= m; ++j) A[i][j] = read();
- for (int i = -; i <= ; ++i)
- for (int j = -; j <= ; ++j) {
- double v = i + j * g2;
- if (v >= && v <= C) w[++cnt] = v;
- }
- sort(w + , w + cnt + );
- for (int i = ; i <= cnt; ++i) {
- for (int j = i - ; ~j; --j) if (fabs(w[i] - w[j] - ) < eps) { nxt1[i] = j; break; }
- for (int j = i - ; ~j; --j) if (fabs(w[i] - w[j] - g2) < eps) { nxt2[i] = j; break; }
- }
- for (int i = ; i <= n; ++i)
- for (int j = ; j <= m; ++j)
- for (int k = ; k <= cnt; ++k) dis[i][j][k] = INF;
- dis[][][] = , q.push((Node){, , , });
- while (!q.empty()) {
- Node topp = q.top(); q.pop();
- int x = topp.x, y = topp.y, now = topp.now;
- if (vis[x][y][now]) continue;
- if (x == n && y == m) { printf("%.10lf",dis[x][y][now]); return ; }
- vis[x][y][now] = ;
- int t = ;
- if (w[now] + eps > ) {
- for (int i = ; i < ; ++i) {
- int nx = x + dx[i], ny = y + dy[i];
- if (nx >= && nx <= n && ny >= && ny <= m) tmp[++t] = (Node){nx,ny,nxt1[now],};
- }
- }
- if (w[now] + eps > g2) {
- for (int i = ; i < ; ++i) {
- int nx = x + dx[i], ny = y + dy[i];
- if (nx >= && nx <= n && ny >= && ny <= m) tmp[++t] = (Node){nx,ny,nxt2[now],};
- }
- }
- double d = dis[x][y][now];
- if(now<cnt) tmp[++t]=(Node){x,y,now+,(w[now+]-w[now])*A[x][y]};
- for (int i = ; i <= t; ++i) {
- if (dis[tmp[i].x][tmp[i].y][tmp[i].now] > d + tmp[i].dis)
- dis[tmp[i].x][tmp[i].y][tmp[i].now] = tmp[i].dis = d + tmp[i].dis, q.push(tmp[i]);
- }
- }
- return ;
- }
牛客国庆集训派对Day1 B. Attack on Titan的更多相关文章
- 牛客国庆集训派对Day1.B.Attack on Titan(思路 最短路Dijkstra)
题目链接 \(Description\) 给定\(n,m,C\)及大小为\((n+1)(m+1)\)的矩阵\(c[i][j]\).平面上有\((n+1)(m+1)\)个点,从\((0,0)\)编号到\ ...
- 牛客国庆集训派对Day1 L-New Game!(最短路)
链接:https://www.nowcoder.com/acm/contest/201/L 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语言20 ...
- 牛客国庆集训派对Day1 L New Game!(堆优化dijkstra+建图)
链接:https://ac.nowcoder.com/acm/contest/201/L来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1048576K,其他语言2097 ...
- 牛客国庆集训派对Day1 Solution
A Tobaku Mokushiroku Kaiji 水. #include <bits/stdc++.h> using namespace std; ], b[]; void Ru ...
- 2019牛客国庆集训派对day1(A, B E F K)
链接:https://ac.nowcoder.com/acm/contest/1099#question A:可知符合条件的图中间肯定存在一个由1构成的矩形,找到由1构成矩形的边界,判断出现的1的数量 ...
- 牛客国庆集训派对Day1:J:Princess Principal(栈模拟求括号匹配)
题目描述 阿尔比恩王国(the Albion Kingdom)潜伏着一群代号“白鸽队(Team White Pigeon)”的间谍.在没有任务的时候,她们会进行各种各样的训练,比如快速判断一个文档有没 ...
- 2019牛客国庆集训派对day1 K题 双向链表练习题 splay区间翻转
题目链接: 解法: 先建n颗平衡树,合并的时候将a中最右的结点翻转到根节点,b中最左的结点翻转到根节点,对合并后的根节点进行标记. #include <bits/stdc++.h> usi ...
- 2019牛客国庆集训派对day1
C 存每个值存在的位置,枚举末尾的值,再枚举前面的值,哈希二分出最长相同的,即剩下的为不同的 D \(f_{i,j,k}\)为前i位,最后一个3因子在j,次因子在k G bitset处理有多少位置符合 ...
- 牛客国庆集训派对Day6 A Birthday 费用流
牛客国庆集训派对Day6 A Birthday:https://www.nowcoder.com/acm/contest/206/A 题意: 恬恬的生日临近了.宇扬给她准备了一个蛋糕. 正如往常一样, ...
随机推荐
- eclipse导入spring aop xml约束
步骤: 1. 2. 3. 4.取 Location:中最后一个命名:spring-aop-4.2.xsd,放到Key的最后面,Key type:选择 Schema location.点击OK 5.编 ...
- [翻译] BAFluidView
BAFluidView https://github.com/antiguab/BAFluidView This view and it's layer create a 2D fluid anima ...
- [原创]获取JS数组最大值、最小值
核心关键 JS有Array数组对象,使用prototype内置属性扩展,增加Array数组max().min()方法 具体代码 //最小值 Array.prototype.min = function ...
- How To create extension in Hybris(创建Hybris的扩展)
How To create extension in Hybris What is an extension? An extension is an encapsulated piece of the ...
- zhuangxiu
红宝石家居广场国际家居馆 党湾综合市场(青年文明路)
- September 18th 2017 Week 38th Monday
The only person you should try to be better than is the person you were yesterday. 你唯一应该试着去超越的人,是昨天的 ...
- 走向Node与Webpack 之路 - CommonJS 模块化
走向Node与Webpack 之路 - CommonJS 模块化 1. 参考资料 JavaScript 标准参考教程(alpha) CommonJS规范(推荐 - 阮一峰写的) 官方网站 (看半天,不 ...
- 「GXOI / GZOI2019」旧词
题目 确定这不是思博题 看起来很神仙,本来以为是\([LNOI2014]LCA\)的加强版,结果发现一个点的贡献是\(s_i\times (deep_i^k-(deep_i-1)^k)\),\(s_i ...
- React 入门学习笔记2
摘自阮一峰:React入门实例教程,转载请注明出处. 一.获取真实的DOM节点 组件并不是真实的 DOM 节点,而是存在于内存之中的一种数据结构,叫做虚拟 DOM (virtual DOM).只有当它 ...
- Django输入 中文参数保存异常解决方法
WEB页面输入中文后保存,出现异常 cmd.exe打印如下信息: UnicodeEncodeError: 'ascii' codec can't encode characters in po ...