Codeforces Round #420 D题翻译(17.6.25)

D. Okabe and City

Okabe和苟城

时间限制:4秒

空间限制:256M

输入:标准输入

输出:标准输出

Okabe喜欢沿着有路灯的小路穿行城市。但是如果沿途的路灯没有点亮,在一片漆黑中,他就会被他那些跑得超级快的小伙伴抛弃。

Okabe居住的苟城可以用一个二维网格表示。行从上到下编为1~N,列从左到右编为1~N。有K盏路灯是亮着的。初始时左上角的路灯已点亮。

Okabe开始了他的旅程。他从左上角出发,目的地是右下角。.当然,Okabe只会经过点亮的灯,而且只能向相邻的上、下、左、右单元走。然而,Okabe也可以支出1s的寿命来暂时点亮某一行或某一列的灯,从而通过一些最初没有点亮的区域。

值得注意的是,Okabe在同一时间内只能点亮某一行或某一列的路灯,且在每次点亮新的行列时都必须重新-1s。要更改临时点亮的行和列时,他必须站在一开始就亮着的地方。而当他更改时,被点亮的一整行或一整列灯会同时熄灭。

由于Okabe的寿命是有限的,请帮助Okabe找出最少需要支出多少寿命来完成这次旅行。

输入

输入的第一行包括三个整数n、m、k,中间用空格隔开。(2 ≤ n, m, k ≤ 104).

接下来的k行,每行有两个整数 ri 和 ci (1 ≤ ri ≤ n, 1 ≤ ci ≤ m) ,表示初始时已经点亮的灯的行和列。

输入保证每个被点亮的灯的坐标不重合,且左上角的灯一定是亮的。

输出

输出Okabe到达目的地需要支出的最少寿命。如果不可能到达,输出-1。

样例输

4 4 5
1 1
2 1
2 3
3 3
4 3

样例输出

2

样例输入

5 5 4
1 1
2 1
3 1
3 2

样例输出

-1

样例输入

2 2 4
1 1
1 2
2 1
2 2

样例输出

0

样例输入

5 5 4
1 1
2 2
3 3
4 4

样例输出

3

注释

在第一个样例中,Okabe可以通过以下路线: , 在(2, 3) 和 (4, 4)两处-1s,到达目的地.

在第四个样例中,Okabe可以通过以下路线: ,在(1, 2), (3, 4), 和 (5, 4)三处-1s,到达目的地.

时间: 2024-11-05 11:48:52

Codeforces Round #420 D题翻译(17.6.25)的相关文章

Codeforces Round #420 A题翻译(17.6.25)

A.Okabe and Future Gadget Laboratory Okabe和未来科技实验室 时间限制:两秒 空间限制:256M 输入:标准输入 输出:标准输出 Okabe要改进他的实验室.实验室用一个n*n的正方形网格表示(n为正整数).他认为,一个“好实验室”的网格内每一个不等于1的数字都可以用同一行和同一列的某个数字之和表示.换句话说,对于任意x,y(1 ≤ x, y ≤ n 且 ax, y ≠ 1,),存在两个数s和t,使得ax, y = ax, s + at, y,其中ai, 

Codeforces Round #420 (Div. 2) E. Okabe and El Psy Kongroo(矩阵)

题目链接:Codeforces Round #420 (Div. 2) E. Okabe and El Psy Kongroo 题意: 在一个二维方格子里有n条线段,有三种走法 (x?+?1,?y?+?1), (x?+?1,?y), or (x?+?1,?y?-?1). 现在要求每次都要在线段下行走,问你有多少种走法, 可以从(0,0)到(k,0). 题解: 考虑dp f[i][j]=f[i-1][j]+f[i-1][j+1]+f[i-1][j-1]. 由于k比较大c比较小,可以考虑用矩阵来优化

Codeforces Round #420 (Div. 2) A-E

本来打算划划水洗洗睡了,突然听到这次的主人公是冈部伦太郎 石头门(<steins;gate>)主题的比赛,岂有不打之理! 石头门真的很棒啊!人设也好剧情也赞曲子也特别好听. 推荐http://music.163.com/#/m/song?id=26259014&userid=115264555 (强行跑题) Okabe and Future Gadget Laboratory O(n^4)暴力妥妥的 1 #include<iostream> 2 #include<al

Codeforces Round #420 (Div. 2)

/****************************************************************************************************************** 因为发现不敲题会变蠢...所以没事还是做两道题吧.... 很久没做过题然后发现C和E全都是因为没用LL给卡住了......  我真的是太蠢了 ***************************************************************

Educational Codeforces Round 62 做题记录

A. 题解: 发现就是找前缀 max = i 的点的个数,暴力扫一遍 1 #include<bits/stdc++.h> 2 #define ll long long 3 #define pii pair<int,int> 4 #define mp(a,b) make_pair(a,b) 5 using namespace std; 6 #define maxn 10005 7 int n; 8 int a[maxn]; 9 int main() 10 { 11 scanf(&qu

Educational Codeforces Round 79做题记录

这套题感觉出的不咋滴,第四题和第五题难度差了1000分!!! 前四题都还简单,第五题就31人做出……我算了…… 懒得写题解了,做个记录吧(这就是偷懒的理由???) 比赛传送门 A.New Year Garland 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 #include <vector> 6 #define re

Educational Codeforces Round 21 A-E题题解

A题      ............太水就不说了,贴下代码 #include<string> #include<iostream> #include<cstring> #include<cmath> #include<algorithm> #include<vector> #include<queue> #include<cstdio> using namespace std; int n,m; int m

codeforces Round #1 C题 Ancient Berland Circus (计算几何)

这题的思路很好想,分成以下4步: 1:求外切园半径 2:求三个圆心角 3:求三个圆心角的最大公约数 4:最大公约数就是最大的正多边形内角,求面积即可. 但是每一步都不会求啊....sad...当想到第3步的时候甚至觉得应该用别的方法来求..要换方法..几何太渣了. 代码如下: #include <iostream> #include <string.h> #include <math.h> #include <queue> #include <algo

Educational Codeforces Round 23 补题小结

昨晚听说有教做人场,去补了下玩. 大概我的水平能做个5/6的样子? (不会二进制Trie啊,我真菜) A. 傻逼题.大概可以看成向量加法,判断下就好了. #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> using namespace std; int x1,x2,yy1,y2,x,y; int main(){ scanf("%d%d%d%d%d%d&qu