首页 > 其他分享 >P1240+P1350+ AT_abc282_g得出的一些dp技巧

P1240+P1350+ AT_abc282_g得出的一些dp技巧

时间:2024-02-27 09:45:08浏览次数:25  
标签:P1240 状态 前面 dp 一些 P1350 abc282

在遇到一些题目在设状态时,前面的状态对后面的有影响,比如在P1240和P1350中前面的放置会对后面的有影响,正常的状态是不行的。以前可能考虑状态压缩,但现在我们可以通过发现前面状态的一些共性,比如在P1240+P1350中前面放了k个那么一定有k行被占用,所以就不用记录之前那些行被占用了。在一些排列计数问题的时候,如果一些排列计数问题只关心前后数的顺序的话可以指记录相对顺序(感性理解)就可以了。对于一些for循环套for循环一段范围时就可以利用前缀和优化

标签:P1240,状态,前面,dp,一些,P1350,abc282
From: https://www.cnblogs.com/wuhupai/p/18036202

相关文章

  • ABC282H
    昨天刚做了这个trick的板子题,今天竟然又来一道。涉及到区间\(\min\)和计数,一般的方法是比较难做的。所以可以从笛卡尔树和单调栈的角度入手。这题考虑单调栈,固定最小值位置后,就要计算有多少个跨过该位置,并且最小值在该位置上,还满足题目要求的区间。解决这个问题可以考虑用单......
  • abc282E - Choose Two and Eat One
    E-ChooseTwoandEatOne非常巧妙的一集可以将整个局面看作一张图,选两个数获得的score就是它们的边权,然后做最大生成树,不难发现操作和建树之间是一一对应的。#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<queue>#include<map>#defin......
  • Luogu P1350车的放置
    分析排列组合题目,但是dp做法。存储当前列的高度\(h_i\),这里反着存,更好转移。定义状态\(f_{i,k}\)为在前\(i\)列放置\(k\)个车的方法数。初始状态\(f_{i,0}=1\)。分析状态转移方程:当前列不放置车时:方法数为\(f_{i-1,j}\)当前列放置车时:方法数为\(f_{i,j-1}*......
  • [ABC282Ex] Min + Sum
    [ABC282Ex]Min+Sum一道分治题。比较新的地方在于,别的题都是按中点为M分治,而这道题是按最小值为M分治。记录b的前缀和sum。【L,R】最小值为M,则分为【L,M-1】,【M+1,R】。 #include<bits/stdc++.h>usingnamespacestd;constintN=4e5+66;typedeflonglongll;constll......
  • P1350 车的放置 题解
    一、题目描述:给你一个网格棋盘,a,b,c,d 表示了对应边长度,也就是对应格子数。例如,当a=b=c=d=2时,对应如下面这样一个棋盘:想要在这个棋盘上放 k棋子,也就是这 k 个棋子没有两个在同一行,也没有两个在同一列,问有多少种方案。数据保证 0......
  • Atcoder ABC282F Union of Two Sets
    https://atcoder.jp/contests/abc282/tasks/abc282_fST表板子???这怎么出的?发现要每一个区间都能拆分成至多两个区间,那很明显就能联想到ST表的查询。大概算一下发现......
  • Atcoder ABC282E Choose Two and Eat One
    https://atcoder.jp/contests/abc282/tasks/abc282_e发现选出两个球去掉一个球其实很像一颗树去掉叶子节点,贡献即为叶子节点与父亲的边权。那这题就很明显了,预处理好每......
  • Atcoder ABC282H Min + Sum
    https://atcoder.jp/contests/abc282/tasks/abc282_h挂了好久发现二分写挂了……对于\(\min\{a_i\}\)这一部分,不难想到找到当前\(\min\{a_i\}\)的位置计算其左右两......
  • ABC282_H
    上次做这题挺有感触,本来想写点东西,奈何写了一半Typora卡死,写的东西都丢失了,这次又有了新的感悟,决定一起写出来。这道题看到前面的\(\max\)就可以想到,可以对于每个\(a......
  • abc282 E - Choose Two and Eat One
    题意:\(n\)个球,第\(i\)个球上有数\(a_i\),每次操作选两个球,得到\((a_i^{a_j}+a_j^{a_i})\%M\)的收益,丢弃两球之一。重复操作直到只剩一个球,问最大收益\(n\le500......