首页 > 其他分享 >solution-cf877d

solution-cf877d

时间:2024-03-06 17:03:04浏览次数:21  
标签:int solution 板子 break ++ cf877d

题解 CF877D 【Olya and Energy Drinks】

原题

一道几乎板子的广搜题。(然而我调了10几次才过

我们只需要在广搜板子的基础上添加移动 $1 -k $步的部分即可

就像这样:

int h[] = {-1 , 1 , 0 , 0};
int l[] = {0 , 0 , -1 , 1};
for(int i = 0;i < 4;i++)
{
	for(int j = 1;j <= k;j++)
	{
	    int xx = x + h[i] * j;
	    int yy = y + l[i] * j;
	    ...    
	}
}

值得注意的是这里一旦走出了地图或者头撞南墙就要直接break

就像这样:

int h[] = {-1 , 1 , 0 , 0};
int l[] = {0 , 0 , -1 , 1};
for(int i = 0;i < 4;i++)
{
	for(int j = 1;j <= k;j++)
	{
	    int xx = x + h[i] * j;
	    int yy = y + l[i] * j;
		if(x < 0 || x >= n || y <= 0 || y >= m) // 这里地图从0开始存 
		    break;
		if(a[x][y] == '#')
			break;
	    ...
	}
}

其余部分就和板子一样啦。

代码不贴了

标签:int,solution,板子,break,++,cf877d
From: https://www.cnblogs.com/iorit/p/18056992

相关文章

  • solution-cf236b
    题解CF236B【EasyNumberChallenge】原题此题一个暴力就可以过了。看着别的大佬不加记忆化吸口氧就过了,而我的却死活TLE可能因为我人丑常数大?注意到i*j*k的值会出现重复,所以考虑记忆化。时间复杂度\(O(n^3\sqrtn)\),跑得飞快代码constintN=1e6+10,M=1073741824......
  • solution-cf120e
    题解CF120E【PutKnight!】原题我一开始以为这题\(n\)为奇数就是先手赢,偶数就是后手赢没想到还真是这样那么要怎么证明呢?一般地,在一个空棋盘上下出一枚棋,会有8个格子被这颗棋限制:XXXXKXXXX容易看......
  • solution-at4703
    题解AT4703【RedorBlue】原题来介绍一下三元运算符:A?B:C如果表达式A为真,则执行B语句,否则执行C语句。其作用就相当于:if(A){ B;}else{ C;}例如1+1>2?puts("IAKIOI"):puts("qwq");将会输出qwq。那么此题代码就可以变得极简。代码#include<iostr......
  • solution-at945
    题解AT945【高橋君とお肉】原题来一篇正经的题解QwQ显然我们要把肉分成耗费时间尽量平均的两堆。于是考虑二分答案那么怎么检测一个答案的正确性呢?我们可以跑一个背包dp,让第一个烤肉架烤尽可能多的肉,最后检测第二个烤肉架能不能烤完剩下的肉即可。时间复杂度\(O(nlog^2n)......
  • p7915-solution
    P7915Solutionlink考虑枚举第一个操作选L还是R。这样原序列就被分为了两个栈,用四个指针\(p1,p2,p3,p4\)分别指向这两个栈的栈顶栈底。感性理解一下,某一个栈的栈顶\(x\)可以被pop当且仅当某一个栈的栈底等于\(x\)。于是直接dfs,每次优先选L,同时确定第\(2n-i+1\)......
  • p7914-solution
    P7914Solutionlink先考虑Subtask\(4\)。设\(dp_i\)表示长度为\(i\)的方案数,按题目定义转移:AB,ASB:\(\displaystyledp_n\getsdp_n+\sum_{i=1}^{n-1}\sum_{j=0}^kdp_i\timesdp_{n-i-j}\)(A):\(\displaystyledp_n\getsdp_n+dp_{n-2}\)(SA),(AS):\(\displa......
  • p7913-solution
    P7913Solutionlink先考虑有\(n\)个廊桥的分配。假设廊桥编号为\(1\simn\),我们用两个堆\(h1,h2\)分别存当前空闲的廊桥编号和正在使用廊桥的飞机的离开时间。对于国内和国外的飞机分别做一次以下操作:先按到达时间排序,从左到右扫,到第\(i\)架飞机的到达、离开时间为\(l_......
  • p5384-solution
    P5384Solutionlink弱化这题空间\(\mathcalO(n\logn)\)会MLE。考虑怎么搞到\(\mathcalO(n)\)。首先求k级祖先用树剖空间是\(\mathcalO(n)\)的。然后看看我们建线段树的过程,我们发现每次查询都是在对应深度的线段树里查,那么考虑把询问离线,把节点、询问对应到深度......
  • p4845-solution
    P4845Solutionlink考虑树形dp,对于每个\(u\)直接钦定它的三种可能状态:有灯,没灯但是被其他灯照亮,没灯也没被照亮。这样钦定会导致一些需要被照亮的点在当前子树中还未被照亮,需要依靠子树外的灯来照亮。称这种点为闲置点。状态内只需要记录闲置点中最深的到子树根的距离,以及......
  • p4632-solution
    P4632Solutionlink对时间扫描线,就变成支持单点加入删除一个颜色点,求所有颜色距离某个点的距离最大值。考虑二分答案,现在就是要检验\([x-mid,x+mid]\)内是否有\(1\simk\)颜色的点各至少一个。数颜色可以考虑维护\(pre_i\)表示上一个与该点同色的位置。然后区间\([l,r]......