rqnoj-342-最不听话的机器人-dp】的更多相关文章

题目链接:https://www.rqnoj.cn/problem/342 题意: DD 有一个不太听话的机器人,这个机器人总是会有自己的想法,而不会完全遵守 DD 给它的指令. 现在 DD 在试图命令机器人走迷宫.迷宫是一个 N*N 个格子组成的区域,格子自左上角到右下角从 (1,1) 到 (N,N) 编号.第 i 行.第 j 列的格子编号为 (i,j).迷宫中的某些区域是障碍物,机器人不能移动到那里. DD 给了机器人 M 条指令,指令的类型包括“前进一步”“后退一步”“左转九十度”“右转九…
dp[i][j][k][[l]: 执行第i步,执行到点(j,k),方向为l时,用的最大步数. 状态转移根据step[i]转移. #include<stdio.h> #include<string.h> #include<algorithm> #include<iostream> #define INF 99999999 using namespace std; int xx[4]={1,0,-1,0}; int yy[4]={0,-1,0,1}; int d…
题目链接:https://www.rqnoj.cn/problem/328 题意: 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队. 一个N*M的地图由N行M列组成(N≤100,M≤10),地图的每一格可能是山地(用'H' 表示),也可能是平原(用'P'表示),如下图. 在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队): 一支炮兵部队在地图上的攻击范围如图中黑色区域所示: 如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:…
题目链接:https://www.rqnoj.cn/problem/169 题意: 给出行驶1-10公里的费用(所有车一样),可以倒车,问行驶n公里的最小费用. 题解: 大水题... (=´ω`=) 表示状态: dp[i] = min cost i:行驶了i公里 找出答案: ans = dp[n] 如何转移: now: dp[i] dp[i+j] = min dp[i] + c[j] 枚举倒车行驶j公里 边界条件: dp[0] = 0 others = -1 AC Code: // state…
这个题目我最初的做法沿用树形DP的做法,设置一个 dp[i][0]表示机器人在i点不回去的最短路径,dp[i][1]表示机器人在i点回去的最短路径,规划方向为i-1向i转移,结果发现这个不能用树形的结构去描述,当前状态不能仅仅靠前一个状态就决定好了,对于后面的点来说,可能当前点走另外一条路会好一些 故,最后还是使用了书上的结构,其实也很简单,用d[i],表示收完从1-i所有的垃圾并送回原点的垃圾桶的最优距离,显然,最终结果就是d[n]; 则,如果某个j点满足 w(j+1,i)<=C,则d[i]=…
不用FFT的多项式(大雾) 题目链接: https://www.luogu.org/problemnew/show/P5469 (这题在洛谷都成绿题了海星) 题解: 首先我们考虑,一个序列位置最右边的最大值可以走遍整个序列,并且其余任何点都不能跨过这个位置. 所以我们可以区间dp, \(dp[l][r][x]\)表示区间\([l,r]\)最大值不超过\(x\)的方案数,枚举最大值点\(mid\)及其值\(k\), \(dp[l][r][x]=\sum_{mid}\sum_{k}dp[l][mid…
题目描述 给定一个正整数n( n<=100),然后输入一个N*N矩阵.求矩阵中最大加权矩形,即矩阵的每一个元素都有一权值,权值定义在整数集上.从中找一矩形,矩形大小无限制,是其中包含的所有元素的和最大 .矩阵的每个元素属于[-127,127] 例: 0 –2 –7 0 在左下角: 9 2 9 2 –6 2 -4 1 -4 1 –4 1 -1 8 -1 8 0 –2 和为15 输入格式 第一行:n,接下来是n行n列的矩阵. 输出格式 最大矩形(子矩阵)的和. 输入 4 0 –2 –7 0 9 2…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4003 思路:dp[i][j]表示以i为根选择j个机器人的最小花费,然后就是背包了:dp[u][i]=min(dp[u][i],dp[u][i-j]+dp[v][j]+j*w)(1<<j<<i,u是v的根).值得注意的是dp[u][0]的意义,dp[i][0]表示以i为根的子树派一个机器人遍历完整棵子树后又回到i的花费. #include<iostream> #include…
题意:给出n个点的一棵树,有k个机器人,机器人从根节点rt出发,问访问完整棵树(每个点至少访问一次)的最小代价(即所有机器人路程总和),机器人可以在任何点停下. 解法:这道题还是比较明显的能看出来是树形DP,然后分配机器人肯定想到树形分组背包DP.那么dp方程和常规树形背包dp一样很容易些 dp[x][i]=min(dp[x][i],dp[y][j]+val(y,j)+dp[x][i-j]) 代表总共i个机器人给当前子树y分配j个机器人剩下的i-j个机器人分配给前几棵子树的最小代价.主要问题就是…
题目描述 小新正在玩一个简单的电脑游戏. 游戏中有一条环形马路,马路上有 n 个机器人工厂,两个相邻机器人工厂之间由一小段马路连接.小新以某个机器人工厂为起点,按顺时针顺序依次将这 n 个机器人工厂编号为1~n,因为马路是环形的,所以第 n 个机器人工厂和第 1 个机器人工厂是由一段马路连接在一起的.小新将连接机器人工厂的这 n 段马路也编号为 1~n,并规定第 i 段马路连接第 i 个机器人工厂和第 i+1 个机器人工厂(1≤i≤n-1),第 n 段马路连接第 n 个机器人工厂和第 1个机器人…
主要讲第五课的内容前缀树应用和第六课内容暴力递归改动态规划的最全步骤 第一题 给定一个数组,求子数组的最大异或和. 一个数组的异或和为,数组中所有的数异或起来的结果. 简单的前缀树应用 暴力方法: 先计算必须以i结尾的子数组的异或和,然后再计算机i+1的,以此类推... 最暴力的解 public static int getMaxEor1(int[] nums) { int maxEor = Integer.MAX_VALUE; for (int i = 0; i < nums.length;…
题目链接:https://www.rqnoj.cn/problem/188 题意: 商场以超低价格出售n个商品,购买第i个商品所节省的金额为w[i]. 为了防止亏本,有m对商品是不能同时买的.但保证商品关系不出现环,不会出现如:(1,2) , (2,4) , (1,4). 问你最多能节省的金额. 题解: 简直和POJ 2342 Anniversary party像极了(*/ω\*) 将不能同时买的商品间连一条无向边. 所以子节点和父节点不能同时选. 唯一不同的是POJ是一棵树,而这道题是一片森林…
题目链接:https://www.rqnoj.cn/problem/569 题意: 在一个数轴上可以摆M个线段,每个线段的起始终止端点给定(为整数),且每个线段有一个分值,问如何从中选取一些线段使得任意两个线段之间的距离大于等于R.每一条线段属于[0,N].如何选择这些线段,使得分值之和最大? 定义:两线段间的距离 = 相邻端点坐标之差的绝对值 题解: 讲真...这里的N真的没用... 首先要用左端点从小到大排序. 表示状态: dp[i] = max score (选了线段i的当前最大分值) i…
题目链接:https://www.rqnoj.cn/problem/514 题意: 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为”abcbcd”,则字符串”abcb_cd”,”_a_bcbcd_”和”abcb_cd_”都是X的扩展串,这里“_”代表空格字符. 如果A1是字符串A的扩展串,B1是字符串B的扩展串,A1与B1具有相同的长度,那么我扪定义字符串A1与B1的距离为相应位置上的字符的距离总和,而两个非空格字符的距离定义为它们的ASCII码的…
题目链接:https://www.rqnoj.cn/problem/311 题意: 给你一个长度为n的数字,用t个乘号分开,问你分开后乘积最大为多少.(6<=n<=40,1<=k<=30) 题解: 简化问题: 给原数字之前添加一个"1 *",乘号不计入数量,对答案无影响. 例如:"1231"可以变成"(1*)1231". 表示状态: dp[i][j] = max num(最后一个乘号之前的最大乘积) i:此时在第i个数的前…
题目链接:https://www.rqnoj.cn/problem/140 题意: 小王参加的考试是几门科目的试卷放在一起考,一共给t分钟来做. 他现在已经知道第i门科目花k分钟可以拿到w[i][k]分. 写名字需要的时间为name(他写自己的名字很慢) 如果放弃某一门的考试(花的时间为0),那么名字也就不用写了. 问他最高能得几分. 题解: 表示状态: dp[i][j] = max score i:考虑到第i们科目 j:当前花费的时间 找出答案: max dp[n][j] 如何转移: now:…
题目链接:https://www.rqnoj.cn/problem/624 题意: 小明有奖学金啦!所以他要去买运动鞋. 总共有n款鞋,分别属于t个品牌. 每款鞋的价格为c[i],在小明心目中的价值为w[i]. 小明只有m元的奖学金. 小明同学有强迫症,每个品牌都要至少买一双,并且同一款不会买两双. 问你所买的鞋在小明心目中的价值之和最大为多少. 题解: 表示状态: dp[i][j][k][p] = max value i:考虑到第i个品牌 j:考虑到第i个品牌中的第j款鞋 k:当前花费 p:第…
题目链接:https://www.rqnoj.cn/problem/622 题意: 一个机器由n个部件组成,每一种部件都可以从m个不同的供应商处购得. w[i][j]是从供应商j处购得的部件i的重量,c[i][j] 是相应的价格. 试设计一个算法,给出总价格不超过d的最小重量机器设计. 题解: 表示状态: dp[i][j] = min weight i:考虑到第i个零件 j:当前花费 找出答案: min dp[n][j] (0<=j<=d) 如何转移: 对于当前零件i,枚举不同的供应商j,转移…
M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果. Input 第1行,2个数M,N,中间用空格隔开.(2 <= m,n <= 1000) Output 输出走法的数量. Input示例 2 3 Output示例 3解:简单dp,注意空间复杂度的优化. #include <stdio.h> #define MOD ((int)1e9+7) ] = {}; int main() { int…
M * N的方格,一个机器人从左上走到右下,只能向右或向下走.有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果. 收起 输入 第1行,2个数M,N,中间用空格隔开.(2 <= m,n <= 1000) 输出 输出走法的数量. 输入样例 2 3 输出样例 3 思路:这道题也是较简单的,由于机器人只能向下或者向右走,所以在最后一步即右下时,它有两种途径,即从它左边或者上边到达的. 另dp[i][j]表示走到(i,j)点的路径数目,可以得到递推式:dp[i][j]=…
Description 有一只坏了的机器人站在一个\(n\times m\)的网格里,初始位置在\((x,y)\).现在每个单位时间内它会随机选左右下三个方向走,如果它随机的方向会走出网格就不会往这个方向走.当然这个机器人也可能原地停留一个单位时间.求机器人走到第\(n\)行的期望时间. 满足\(n,m\le 10^3,1\le x\le n,1\le y\le m\). Solution 考虑期望DP. 经过变换可使得\(x=1\). 正着不好做,不妨倒过来,计算从最后一行任意位置到达\((1…
题目描述 一行N个位置1到N,机器人初始位置M,机器人可以往左/右走(只能在位置范围内),规定机器人必须走K步,最终到位置P.输入这四个参数,输出机器人可以走的方法数. 解题思路 DP 方法一:时间复杂度O(NK),空间复杂度O(NK) 方法二:时间复杂度O(NK),空间复杂度O(N) 方法一代码 public class Solution { //ans=walk(N,M,K,P); public int walk(int N,int cur,int rest,int P) { int[][]…
洛谷题面传送门 神仙题,放在 D1T2 可能略难了一点( 首先显然对于 P 型机器人而言,将它放在 \(i\) 之后它会走到左边第一个严格 \(>a_i\) 的位置,对于 Q 型机器人而言,将它放在 \(i\) 之后它会走到右边第一个 \(\ge a_i\) 的位置,为了避免分类讨论我们可以假定 \(a_0=a_{n+1}=\infty\).看到这个状态我们可以设计出一个区间 \(dp\),\(dp_{l,r,x}\) 表示 \([l,r]\) 中的柱子最大值为 \(x\),并且有 \(a_{l…
题目:https://loj.ac/problem/2550 只会写20分的搜索…… #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; int n,m,ans; bool b[N][N],vis[N][N]; void dfs(int x,int y,bool fx,int lj) { ; ; if(vis[x][y]) { &&y==) { ; ;…
PID356 / mty的格斗 题目描述 ’恩 ~~这个和这个也是朋友.把他们放在一起......哇!终于完成了’mty费了好大劲,终于找出了一支最为庞大的军队. fyc很高兴,立马出征与人fight.mty万万没想到fyc竟然把他也叫去了.偶像的命令不可违抗,mty只好跟着出发了. 两军交战采用一对一单挑的形式.mty一上来就遇到了一个对手.此人身高2米12,头大,腿粗.....这个人fight崇尚防守反击,他要等mty出手,漏出破绽才进攻,且只进攻一次.现在mty有p个招数,每招都会给对方造…
题意:有N个物品,承重上限为M,有K组物品互斥关系,互斥关系有传递性,即1与2互斥,2与3互斥,1与3也互斥 给出每个物品的花费和价值,求承重上限内的最大价值总和 n<=1000,m<=1000,k<=1000 c[i]<=1000 w[i]<=10 思路:日常刷水 因为互斥关系有传递性,并查集后就是分组背包DP ..]of longint; a,c,w,f:..]of longint; n,m,i,j,k,ans,x,y,p,q:longint; function max(…
/************************************************************************* > File Name: a.cpp > Author: QWX > Mail: > Created Time: 2018/10/16 16:47:07 ************************************************************************/ //{{{ #include #i…
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4800 Problem Description A role-playing game (RPG and sometimes roleplaying game) is a game in which players assume the roles of characters in a fictional setting. Players take responsibility for acting…
背景 Wind设计了很多机器人.但是它们都认为自己是最强的,于是,一场比赛开始了~ 描述 机器人们都想知道谁是最勇敢的,于是它们比赛搬运一些物品. 它们到了一个仓库,里面有n个物品,每个物品都有一个价值Pi和重量Wi,但是有些物品放在一起会爆炸,并且爆炸具有传递性.(a和b会爆炸.b和c会爆炸则a和c会爆炸)机器人们可不想因此损失自己好不容易从Wind那里敲诈来的装备,于是它们想知道在能力范围内,它们最多可以拿多少价值的物品. 你能帮助它们吗? 格式 输入格式 每组测试数据第1行为n,Wmax,…
题目:这里 题意: Description 一组研究人员正在设计一项实验,以测试猴子的智商.他们将挂香蕉在建筑物的屋顶,同时,提供一些砖块给这些猴子.如果猴子足够聪明,它应当能够通过合理的放置一些砖块建立一个塔,并爬上去吃他们最喜欢的香蕉.   研究人员有n种类型的砖块,每种类型的砖块都有无限个.第i块砖块的长宽高分别用xi,yi,zi来表示. 同时,由于砖块是可以旋转的,每个砖块的3条边可以组成6种不同的长宽高.   在构建塔时,当且仅当A砖块的长和宽都分别小于B砖块的长和宽时,A砖块才能放到…