CF 1036B Diagonal Walking v.2——思路】的更多相关文章

题目:http://codeforces.com/contest/1036/problem/B 比赛时只能想出不合法的情况还有走到终点附近的方式. 设n<m,不合法就是m<k.走到终点方式就是先斜着走了n*n的正方形,然后一拐一拐地走到终点或距离终点仅剩一个格子的地方.走到终点后可以走任意偶数步,走出去终点又走回来这样. 然后开始超麻烦地考虑,比如走很多横着的步使得起点向终点移动一些,然后…… 最后发现过不了样例. 赛后看看别人的代码,发现异常简单.就是到上面那一步之后, 如果一拐一拐地正好走…
题目:http://codeforces.com/contest/1036/problem/B 题意:从 (0,0) 走到 (n,m),每一步可以向八个方向走一格,问恰好走 k 步能否到达,能到达则输出最多能走多少斜步: 自己想得太复杂了... 首先,判断 -1 就看横纵距离中的较大值是否大于 k ,因为最少走 max(n,m) 步可以到达: 设 m > n: 如果 m - n 为奇数,那么显然会有一步必须直着走,那么 k --: 这里可以通过走法来调节剩余步数的奇偶,就是直着走过去或者拐一下走…
题目:戳这里 题意:起点(0,0),终点(n,m),走k步,可以走8个方向,问能不能走到,能走到的话最多能走多少个斜步. 解题思路:起点是固定的,我们主要分析终点.题目要求走最多的斜步,斜步很明显有一个性质就是不会改变n和m的相对奇偶性.就是走斜步的话,n和m要么+1要么-1,如果一开始n和m奇偶性不同,那么只走斜步最后奇偶性怎么都不会相同.因为起点始终是(0,0),所以如果终点(n,m)的n和m奇偶性不同,那么肯定要走一个直步,而且只需要走一次直步.为什么只需要一次直步呢,我们可以随便画一条斜…
Diagonal Walking v.2 CodeForces - 1036B Mikhail walks on a Cartesian plane. He starts at the point (0,0)(0,0), and in one move he can go to any of eight adjacent points. For example, if Mikhail is currently at the point (0,0)(0,0), he can go to any o…
链接 [https://i.cnblogs.com/EditPosts.aspx?opt=1] 题意 二维平面从原点出发k步,要到达的点(x,y),每个位置可以往8个方位移动,问到达目的地最多可以走多少斜路 如果不可以到达输出-1: 分析 找规律,看代码自己琢磨 代码 #include<bits/stdc++.h> using namespace std; #define ll long long int main(){ ios::sync_with_stdio(false); cin.tie…
好题,当时想了半个小时,我往图论方面去想了,把出现过的字符串当场点,然后相互连边,那么就构成了一个三角形,一个大于三个点的连通分量里有以下结论:度为二的点可能是track,度为大于二的点一定不是track,当一个点连接一个可能是track的点和一个可能是artist的点,那么这个点就可能是ablum.然后我就卡在这里了,怎么求连通分量,怎么判断一个点一定是artist.还有形成的树的深度不能超过三,等等问题. 其实这样想不对,借助之前做A Lot of Joy 的思想,改下一思路,判断连通改成统…
1036A - Function Height    20180907 \(ans=\left \lceil \frac{k}{n} \right \rceil\) #include<bits/stdc++.h> using namespace std; #define LL long long LL n,k; int main() { scanf("%I64d%I64d",&n,&k); printf()/n+); ; } 1036B - Diagonal…
A. Function Height 由于只能提升\(x\)为奇数的点,每个三角形的底一定为\(2\), 则要求我们求: \(2 * (h_1 + h_2 + - + h_n) / 2 = k\),使\(max(h_1, h_2-h_n)\)最小. 则应使每个\(h\)平摊重量,答案即为\(\lceil n/k \rceil\). #include <cstdio> #include <iostream> #include <cmath> typedef long lo…
从这里开始 小结 题目列表 Problem A Diagonal Walking Problem B String Typing Problem C Matrix Walk Problem D Fight Against Traffic Problem E Water Taps Problem F Runner's Problem Problem G Castle Defense Problem H Path Counting Problem I Yet Another String Match…
A. Diagonal Walking 题意 将一个序列中所有的\('RU'\)或者\('UR'\)替换成\('D'\),问最终得到的序列最短长度为多少. 思路 贪心 Code #include <bits/stdc++.h> #define F(i, a, b) for (int i = (a); i < (b); ++i) #define F2(i, a, b) for (int i = (a); i <= (b); ++i) #define dF(i, a, b) for (…