codeforces 1214
D
比赛的时候居然看漏了条件。。。
若在(x, y)格子,那么只能移动到(x+1, y)或(x, y+1)
这样的话就好做了,直接dp,然后统计每一种路径长度经过的点数。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<queue>
#include<cmath>
#include<map>
#include<stack>
#include<set>
#include<bitset>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
#define pb(x) push_back(x)
#define cls(x, val) memset(x, val, sizeof(x))
#define fi first
#define se second
#define mp(x, y) make_pair(x, y)
#define inc(i, l, r) for(int i=l; i<=r; i++)
const int inf = 0x3f3f3f3f;
const int maxn = 1e6+10;
char a[maxn], b[maxn];
int n, m;
bool vis[maxn], vis1[maxn];
void bfs(int x, int y, bool *vis){
vis[x*m+y] = true;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
if(a[i*m+j] == '#') continue;
if(i>=1&&vis[(i-1)*m+j]) vis[i*m+j] = true;
if(j>=1&&vis[i*m+j-1]) vis[i*m+j] = true;
}
}
}
void bfs1(int x, int y, bool *vis){
vis[x*m+y] = true;
for(int i=n-1; i>=0; i--){
for(int j=m-1; j>=0; j--){
if(a[i*m+j] == '#') continue;
if(i<n-1&&vis[(i+1)*m+j]) vis[i*m+j] = true;
if(j<m-1&&vis[i*m+j+1]) vis[i*m+j] = true;
}
}
}
int diag[maxn];
int main(){
ios::sync_with_stdio(false);
scanf("%d%d", &n, &m);
for(int i=0; i<n; i++){
scanf("%s", b);
for(int j=0; j<m; j++)
a[i*m+j]=b[j];
}
bfs(0, 0, vis);
// for(int i=0; i<n; i++){
// for(int j=0; j<m; j++){
// cout<<vis[i*m+j]<<" ";
// }
// cout<<endl;
// }
bfs1(n-1, m-1, vis1);
// for(int i=0; i<n; i++){
// for(int j=0; j<m; j++){
// cout<<vis1[i*m+j]<<" ";
// }
// cout<<endl;
// }
if(vis[(n-1)*m+m-1]==false) {
printf("0\n");
return 0;
}
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
if(vis[i*m+j]&&vis1[i*m+j]){
//路径长度为i+j经过的点数
diag[i+j]++;
}
}
}
for(int i=1; i<n+m-2; i++){
if(diag[i] == 1){
printf("%d\n", 1);
return 0;
}
}
printf("%d\n", 2);
return 0;
}
E 构造
构造一棵树,使得2i与2i-1两个节点之间的权重为di.
codeforces 1214的更多相关文章
- codeforces -1214 E
题目https://codeforces.com/problemset/problem/1214/E 就是得知奇数之间不产生影响,先造出一条链,再用偶数往里插就行.链要di从大到小排个序呀!! #in ...
- Codeforces 1214 F G H 补题记录
翻开以前打的 #583,水平不够场上只过了五题.最近来补一下题,来记录我sb的调试过程. 估计我这个水平现场也过不了,因为前面的题已经zz调了好久-- F:就是给你环上一些点,两两配对求距离最小值. ...
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- 【Codeforces 738A】Interview with Oleg
http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...
- CodeForces - 662A Gambling Nim
http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...
- CodeForces - 274B Zero Tree
http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...
- CodeForces - 261B Maxim and Restaurant
http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...
随机推荐
- loadrunner录制脚本时登录密码转md5
在录制用户注册登录脚本时,常常会遇到web程序对用户密码进行加密处理.在很多时候采用的加密方式为MD5. 这时有两种处理方式: 一.所有用户采用同一密码 例如:每个用户名的密码都为e10adc3949 ...
- Ajax.dll使用方法和步骤(比较方便的实现ajax)
转载自 博客频道 - CSDN.NET http://blog.csdn.net/houhanxin1/article/details/6671470 1. 有直接用框架的:Ajaxpro和Aja ...
- Object Pool 对象池的C++11使用(转)
很多系统对资源的访问快捷性及可预测性有严格要求,列入包括网络连接.对象实例.线程和内存.而且还要求解决方案可扩展,能应付存在大量资源的情形. object pool针对特定类型的对象循环利用,这些对象 ...
- phpExcel 操作示例
片段 1 片段 2 phpExcel 操作示例 <?php //写excel //Include class require_once('Classes/PHPExcel.php'); requ ...
- 第一周<单元一聚类>
K-means 聚类算法 初始随机选择 而后不断更新 kmeans 应用 省份归类 调用kmeans方法所需要的参数 n_clusters 指定的聚类中心 init 初始聚类中心的初始化方法 默认k- ...
- HZOI20190714 T3建造游乐场
先放作者的正解: 先说g吧,有i个点的话,在其中i-1个点中有$C_{i-1}^{2}$种边,每个边有选和不选两种情况.如果度不是偶数呢?用剩下那个点给他连上呗.如果剩下那个点度数不是偶数呢?这是不可 ...
- 自学FPGA笔记之 “sublime的使用”
之前用的notepad++,现在新发现一款软件:sublime.调出一整个逻辑块,写代码能快一点,而且常见的always之类的词汇还不易输入错误,并且比较不容易漏掉begin end.现在总结一下自 ...
- 【JZOJ4783】【NOIP2016提高A组模拟9.15】Osu
题目描述 输入 输出 样例输入 4 2 1 2 2 2 0 2 3 0 0 4 2 0 样例输出 1 2 1 数据范围 样例解释 圆圈只在出现的时刻有效.即:时刻t_i时鼠标位置恰好在(x_i,y_i ...
- oracle加锁
锁 insert into TEST values(5); 加row exclusive锁,和row share相同,但也禁止用share方式加锁. Create index idx_test on ...
- ACM:树的变换,依据表达式建立表达式树
题目:输入一个表达式.建立一个表达式树. 分析:找到最后计算的运算符(它是整棵表达式树的根),然后递归处理! 在代码中.仅仅有当p==0的时候.才考虑这个运算符,由于括号中的运 ...