PID736(rqnoj)】的更多相关文章

题目描述 n个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n个位置编号,从 0 到 n-1.最初,第 0 号小伙伴在第0号位置,第1号小伙伴在第1号位置,依此类推. 游戏规则如下 :每一轮第0号位置上的小伙伴顺时针走到第m号位置,第1号位置小伙伴走到第m+1号位置,……,以此类推,第n-m号位置上的小伙伴走到第0号位置,第n-m+1号位置上的小伙伴走到第1号位置,……,第n-1号位置上的小伙伴顺时针走到第m-1位置. 现在,一共进行了10^k轮,请问x号小伙伴最后走到了第几…
题目链接:https://www.rqnoj.cn/problem/490 题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分. 输入格式 数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数. 输出格式 输出共2行,第1行为最小得分,第2行为最大得分. 样例输入 44 4 5 9 样…
原题地址:http://www.rqnoj.cn/problem/106 解题思路: 一维的情况下求最大字串和的状态转移方程是:s[i]=max{s[i-1]+a[i],a[i]} 二维的情况下,只要将第i行到第ii行的每列数字加起来,再用一维的方法计算就可以了.遍历i和ii的所有情况即可.复杂度O(n^3) 代码: #include<stdio.h> ][]; ][]; ]; ]; int n; int Max(int a, int b) { return a>b?a:b; } int…
原题地址:http://www.rqnoj.cn/problem/5 解题思路: 今天刚刚才知道了区间DP..Orz..本来以为是状态压缩DP,后来看到数据量才发现原来不是.后来参考了别人的题解.自己整理了思路: 问题现在变成从一堆数里面按某个顺序取走一些数,每次取走一个数的时候会得到能量,求最大能获得的能量. 由于是环状的,先将序列延长一倍,第n个数字等于第0个数字,第n+1个数字为第1个数字...依次类推. a[i]表示第i个数 状态表示: DP[i][j]表示在区间[i,j]中,除了a[i…
原题地址:http://www.rqnoj.cn/problem/15 好久以前做的题了,是个背包问题,就不解释了. #include<stdio.h> #define MAX 100 int we[MAX],p[MAX]; ]; int f(int w,int n) { int i,j; ;j<;j++) ss[j]=; ;i<n+;i++) ;j--) { if(we[i]<=j) { if(p[i]+ss[j-we[i]]>ss[j]) ss[j]=p[i]+ss…
原题地址:http://www.rqnoj.cn/problem/38 解题思路: 状态表示:dp[i][j][k]表示i个A,j个B,k个C组成的满足条件的字符串的个数 初始状态:dp[0][0][0]=1. 状态转移方程:dp[i][j][k]=dp[i-1][j][k]+dp[i][j-1][k]+dp[i][j][k-1]  其中要满足i>j>k>0. 要注意的是,答案非常大,要用大数模板...Orz 大数模板就不贴了,就贴动态规划的部分: 部分代码: BigNum dp[][]…
原题地址:http://www.rqnoj.cn/problem/105 解题思路: 状态表示: 数组dp[i][j]中的j拆成M位二进制(后缀B表示). 如:M=3时 dp[5][000B]表示第3,4,5都不放核物质的情况的总数.显然,dp[5][000B]=dp[5][001B]=dp[4][000B]+dp[4][100B].特殊的是dp[i][111B]=0. 初始状态: dp[0][000B]=dp[0][001B]=1,dp[0][i]=0(001B<i<=111B) 状态转移方…
原题地址:http://www.rqnoj.cn/problem/273 题目大意:中文题不说了. 设从第i匹马到第j-1匹马放在一个马棚里得到的系数为f(i,j). 状态表示:dp[i][j]表示前i匹马用j个分隔(j+1个马棚)分隔得到的最小的系数.则最后要求的就是dp[n][k-1]. 初始状态:dp[i][0]=f(0,i) 状态转移方程: dp[i][j]=min{  dp[ii][j-1]+f(ii,i),(j<=ii<i)  } 即:要求dp[i][j](前i匹马用j+1个马棚分…
唉 不想说什么了 poj 1703,从看完题到写完第一个版本的代码,只有15分钟 然后一直从晚上八点WA到第二天早上 最后终于发现了BUG,题目要求的“Not sure yet.”,我打成了“No sure yet.” 然后是RQNOJ的NOIP真题,经典的能量项链 从看完题到写完伪码用了30分钟,敲完全部代码用了10分钟 WA 了7次,次次只能过前三个点,后面全部超时. 不能够啊?我动态规划了都,怎么可能超时? 开始优化主函数. 发现通过一个比较,能把N * (N-1)的复杂度降到C(N,2)…
题目链接:https://www.rqnoj.cn/problem/201 题意: 开始时n(n<=1000)个人手拉手围成一个圈. 后来这些人中的一些按顺序向里面出圈形成一个新圈.从而使原圈形成一个从高到低,最低与最高连接的圈. 新圈重复相同的操作,直到没有人要出圈为止. 问最少要形成多少个这样的圈. 题解: (1)拼链成环: 对于一个环,可以用两条由环拆开的链拼在一起表示. 例如:有一个环为"1,2,3,4"(1和4连在一起),则可以表示为"1,2,3,4,1,2,…
原题地址:http://www.rqnoj.cn/problem/72 解题思路:基本的01背包问题. 要求的就是在这些人中选出一些人,使得这些人的体重的和 不超过所有人的体重的一半 并最大. 代码: #include<stdio.h> #include<iostream> using namespace std; ]; int t; ][]; int s; int max(int a,int b) { return a>b?a:b; } int main() { int i…
原题地址:http://www.rqnoj.cn/problem/82 解题思路: 简单的动态规划 状态表示:DP[i][0]表示当前在第i层,且当前跳跃状态不可用,此时消耗的最短时间.   DP[i][1]表示当前在第i层,且当前跳跃状态可用,此时消耗的最短时间. 状态转移方程: DP[i][0]=min(DP[i-1][1],DP[i-2][1]); DP[i][1]=min(DP[i-1][0],DP[i-1][1])+t[i-1]; 初始状态: DP[0][0]=INF DP[0][1]…
原题地址:http://www.rqnoj.cn/problem/2 解题思路:背包问题. 状态转移方程:DP[i][j]=max(DP[i-v[j]][j-1]+p[j]*v[j],DP[i][j-1]) DP[i][j]表示最多话费i的钱,购买前j+1个物品所能达到的最大价值. 解题代码: #include<stdio.h> #include<iostream> #include<algorithm> using namespace std; ][]; ]; ];…
题目链接: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/328 题意: 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队. 一个N*M的地图由N行M列组成(N≤100,M≤10),地图的每一格可能是山地(用'H' 表示),也可能是平原(用'P'表示),如下图. 在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队): 一支炮兵部队在地图上的攻击范围如图中黑色区域所示: 如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:…
题目链接: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/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…
题目链接: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/117 题意: NaCN_JDavidQ要在下个月交给老师n篇论文,论文的内容可以从m个课题中选择. 由于课题数有限,NaCN_JDavidQ不得不重复选择一些课题. 对于某个课题i,若NaCN_JDavidQ计划一共写x篇论文,则完成该课题的论文总共需要花费Ai*(x^Bi)个单位时间(系数Ai和指数Bi均为正整数). 给定与每一个课题相对应的Ai和Bi的值,请帮助NaCN_JDavidQ计算出如何选择论文的课题使得他可以花费…
题目链接:https://www.rqnoj.cn/problem/95 题意: 叔叔要陪多多看动画片. 有n张DVD可以买,第i张碟的打分为w[i],播放时间为t[i]. 爷爷规定他们只能在一定的时间段L看完. 多多让叔叔惯的特别任性,只要他看到有几张就一定会看完. 买碟的地方只买给顾客m(m<n)张碟,不会多也不会少. 在N张碟中只买M张而且在规定时间看完,问你最高的总价值. 题解: 表示状态: dp[i][j][k] = max value i:考虑到第i个DVD j:已经选了j张碟 k:…
题目链接: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,转移…
题目链接:https://www.rqnoj.cn/problem/429 题意: 如果一张由一个词或多个词组成的表中,每个单词(除了最后一个)都是排在它后面的单词的前缀,则称此表为一个词链. 如:i,int,integer. 给你一堆按字典序排好的字符串,问你最长的词链有多长(词链中的字符串个数). 题解: 单调栈. 找出单调性: 对于栈内的元素,从栈底到栈顶为单调,形成一个词链. 找出答案: 扫一遍给出的字符串,栈的最大高度即为答案. 维护单调性: 因为字符串按字典序排好,已经达到了是单调性…
题目链接:https://www.rqnoj.cn/problem/671 题意: ALEJ要通过倒卖东西来赚钱. 现在他有m元经费. 有n种物品供他选择,每种物品数量无限. 第i件物品的买入价为c[i],卖出价为r[i],每卖出一件物品i后,要交c[i]的税. 问:一次买卖之后,经费最多有多少. 题解: 注:(1)“买”和“卖”是有顺序的. 也就是说,收购一件物品所得到的“未来利润”并不能当作现在的经费来用. (2)“缴税”是在卖东西的时候,收购的时候并不会在经费中扣除税(c[i]). 相当于…
题目链接:https://www.rqnoj.cn/problem/342 题意: DD 有一个不太听话的机器人,这个机器人总是会有自己的想法,而不会完全遵守 DD 给它的指令. 现在 DD 在试图命令机器人走迷宫.迷宫是一个 N*N 个格子组成的区域,格子自左上角到右下角从 (1,1) 到 (N,N) 编号.第 i 行.第 j 列的格子编号为 (i,j).迷宫中的某些区域是障碍物,机器人不能移动到那里. DD 给了机器人 M 条指令,指令的类型包括“前进一步”“后退一步”“左转九十度”“右转九…
题目链接:https://www.rqnoj.cn/problem/329 题意: 刘翔有n封信,每封信都有自己的欣赏价值value[i].消耗时间time[i].消耗体力h[i].和得到的鼓舞w[i]. 观看信件必须按照价值递增(大于)的顺序观看,不一定需要全看. 可是,刘翔在伤病中,时间和体力分别为t,m,同时看完之后体力不能为0. 问你受到的鼓舞最大为多少. 题解: 这道题里value[i]真的没有用... 表示状态: dp[i][j][k] = max encouraging i:考虑到…
题目链接:https://www.rqnoj.cn/problem/57 题意: sqybi在七夕这天太无聊了,所以他想去给自己找GF. 总共有n个MM. 搞定第i个MM要花费rmb[i]块大洋.rp[i]的人品.tim[i]的时间. 现在sqybi有m块大洋.r个人品. 问你在泡到MM的数量最多的情况下,所用的最短时间是多少. 题解: 表示状态: dp[i][j][k][p] = min cost time i:考虑到第i个MM j:花费的rmb k:花费的rp p:已经搞定的MM数量 找出答…
题目链接:https://www.rqnoj.cn/problem/202 题意: 登珠峰需要携带a(L)O2和t(L)N2. 有n个气缸可供选择.其中第i个气缸能装下a[i](L)O2和t[i](L)N2,气缸重量为w[i]. 问你在满足需求的前提下,最小的气缸总重量为多少. 题解: 二重01背包. 表示状态: dp[i][j][k]表示考虑到第i个气缸(还没选),已经能装下j(L)O2和k(L)N2. dp[i][j][k] = 此时的最小总重量 找出答案: min dp[i][j][k]…