CF1225E Rock Is Push (计数)】的更多相关文章

观察性质计数题orz小贺 考场上跟榜才切 我们只能往下和往右走,那么只有连续的往下和往右可能会造成不合法的情况!如果当前这一步是向右,那么只有它前面连续的一段向右可能影响到它. 考虑把连续的向右/下一起处理,使得只有右和下之间相互转移. 假设向下走到达当前点\((i,j)\),接下来向右走若干段,那么能走的格数只和它右面的箱子数有关.而且能到达的位置是连续的一段 向右走到达当前点同理 点数是\(O(n^{2})\)的,每个方向可能转移到\(O(n)\)个位置,暴力转移是\(O(n^{3})\)的…
题目描述 你现在在一个\(n×m\)的迷宫的左上角(即点\((1,1)\)),你的目标是到达迷宫的右下角(即点\((n,m)\)).一次移动你只能向右或者是向下移动一个单位.比如在点\((x,y)\)你可以移动到点\((x+1,y)\)或点\((x,y+1)\) 迷宫中的一些点是岩石,当你移动到一个有岩石的点时岩石将被推到你移动方向的下一个点(你可以把岩石想象成推箱子游戏中的箱子),而如果那个点上也有一个岩石,它就会被按相同方向推的更远,以此类推(比如当前点右边有连着的一些岩石,你向右走一个点这…
E. Rock Is Push You are at the top left cell (1,1) of an n×m labyrinth. Your goal is to get to the bottom right cell (n,m). You can only move right or down, one cell per step. Moving right from a cell (x,y) takes you to the cell (x,y+1), while moving…
[CodeForces - 1225E]Rock Is Push [dp][前缀和] 标签:题解 codeforces题解 dp 前缀和 题目描述 Time limit 2000 ms Memory limit 524288 kB Source Technocup 2020 - Elimination Round 2 Tags binary search dp *2200 Site https://codeforces.com/problemset/problem/1225/E 题面 Examp…
在打CF的时候没想到www这个dp真的蛮巧妙的 这是一道dp题(废话 假设我们走到了\((i,j)\)位置,因为我们只能下移/右移,那么我们所有上方与左方的石块(即\(\{ (i,j)|i<n \space || \space j<m \}\)的石块)不管被推到那里都与我无瓜(可以画几张图略推一推,还是比较明显),即该题无后效性,可用dp求解. 合在一起不是很好算,我们可以考虑将右移与下移分开对其进行dp. 因此我们可以用数组\(rs,ds\)来记录某位置右边的石头数量以及下方的石头数量,因为…
附上学习的博客:https://blog.csdn.net/u013534123/article/details/102762673 大致题意:一个迷宫,里面有很多箱子,你可以向右或者向下走.当你遇到一个或者多个箱子的时候,你可以把箱子往你移动的方向推动,但是不能把箱子推出到墙壁外面.你从左上角出发,问你有多少种方法到右下角. 考虑如果没有箱子,那么就是一个很简单的递推问题,对于一个格子,要么从上面要么从左边来.有箱子的话,由于箱子可以被推动而且不能推到外面,所以我们要考虑是否可以从上面或者下面…
传送门 显然考虑 $dp$ ,设 $fx[i][j]$ 表示从 $(i,j)$ 出发往下走一格,最终到达 $(n,m)$ 的方案数,$fy[i][j]$ 表示从 $(i,j)$ 出发往右走一格,最终到达 $(n,m)$ 的方案数 如果 $(i,j)$ 本身有石头就把这个石头忽略 那么对于 $fx[i][j]$ ,如果 $(i+1,j)$ 没有石头,转移为 $fx[i][j]=fx[i+1][j]+fy[i+1][j]$ 如果 $(i+1,j)$ 有石头,因为 $fx[i+1][j]$ 没有算到本…
题意:有一个n*m的方格,每一格可能为空也可能有石头,要从(1,1)走到(n,m),每次可以往右或往下走 每次走的时候都会将自己面前的所有石头向移动方向推一格,如果碰到了边界就推不过去 问方案数模1e9+7 n,m<=2e3 思路:设dp[i][j][0/1]分别为当前走到(i,j),上一次从左/上走的合法方案数 合法的转移是行坐标或列坐标连续的一段,而且受障碍物个数和当前行/列号限制 写出式子之后可以发现决策范围对于i相同或者j相同是单调的,可以用队列维护,但显然二分更好写 #include<…
CF1257F Make Them Similar $solution:$ 折半搜索后考虑如何维护两个数组的和,可以将 $A$ 中每个数减 $A_1$ ,$B$ 中每个数被减 $B_1$ ,$map$ 维护一下即可. #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<map> #include<vector> using…
A - Forgetting Things 题意:给 \(a,b\) 两个数字的开头数字(1~9),求使得等式 \(a=b-1\) 成立的一组 \(a,b\) ,无解输出-1. 题解:很显然只有 \(a=b\) 和 \(a=b-1\) 的时候有解,再加上一个从 \(9\) 越到 \(10\) 的就可以了.被样例的 \(199,200\) 误导了. #include<bits/stdc++.h> using namespace std; typedef long long ll; int mai…