随笔分类 - 算法题
摘要:The designers have come up with a new simple game called “Rake It In”. Two players, Alice and Bob, initially select an integer k and initialize a scor
阅读全文
摘要:题目链接 这题写的一把辛酸泪,第一次用getchar()读入,再加上很少用scanf()读入字符,被输入输出缓冲安排的明明白白,最后放弃治疗,用cin,还是死活没有输出,最后才发现是因为for循环多加了一步,白被坑了有一天。 算法分析:首先把每个男士加入队列,让每一个没配对的男士去向女士请求配对,如
阅读全文
摘要:题目链接 题目大意: 给定一个长度为n的序列,要求能够执行m次下列操作: 1.查询区间[l,r]的和 2.将区间[l,r]的每一个数%=mod 3.修改第x个数为y 操作1,3都是线段树的基本操作,线段树详细知识可以看看这篇大牛的文章 https://www.cnblogs.com/TheRoadT
阅读全文
摘要:题目链接 题目因为要根据上一次的输出结果来判断这次的输入,也就是要求我们强制在线,不能够把输入全部储存后处理 如果不要求强制在线,我们可以先把所以输入储存起来,从最后开始处理,把删边改成加边,如果在加边前不连通,加边后连通,也就等价意味着删边后会不连通,再把输出储存起来,最后从头到尾输出 既然强制在
阅读全文
摘要:题目链接 做的第一道数位DP题,听说是最基础的模板题,但还是花了好长时间才写出来。。。。。 想深入了解下数位DP的请点这里 先设dp数组dp[i][j][k]表示数位是i,以j开头的数k出现的次数 有 数位dp的题一般都会用到前缀数组,题目要求我们求b-a这个区间里各个数码出现的次数,我们可以分别求
阅读全文
摘要:链接:https://ac.nowcoder.com/acm/contest/86/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K Special Judge, 64bit IO Format: %lld 时间限制:C/C++
阅读全文
摘要:题目链接 分析:一个裸的NIM博弈 对于一个Nim游戏的局面(a1,a2,...,an),它是P-position(即当前局面先手必败)当且仅当a1^a2^...^an=0,其中^表示异或(xor)运算。 一个常识:异或自己两次,相当于没有异或,即异或的消去律,可用这种方式避免T
阅读全文
摘要:题目链接 分析:这个题本质上可以看成是一个括号匹配题,因为当出现00和11的时候,毫无疑问是前一天看题,后一天写题,这样可以得到最大的得分10 将全部00和11删掉后,就是交替出现的01串了 代码如下:
阅读全文
摘要:题目请点这里 分析:这是一道BFS的模板题,构造一个队列,将每个满足条件的(不超过边界,不超过左右移动次数的限制)位置推入队列,如果不是障碍物且没到达过,就将可到达位置的个数加1 此外,注意这里的输入,输入迷宫的时候是直接输字符串,可以用cin,也可以用getchar()函数 getchar()函数
阅读全文
摘要:题目链接点这里 这个题输入类型是第一次见,并没有把n和m的具体范围给你,但是给了n*m的范围,武断的设为1e6*1e6的二维数组铁铁WA,就将二维数组转换为一维数组 题目类型属于二维数组前缀和,有um[i][j]=sum[i−1][j]+sum[i][j−1]−sum[i−1][j−1]+a[i][
阅读全文
摘要:分析:这个题因为数据量非常小,可以直接用四维的DP数组 dp[i][j][k][l]表示第一个人走到位置(i,j),第二个人走到位置[k][l]时所取的数的最大和 状态转移方程可以轻松得出为:dp[i][j][k][l]=max(dp[i-1][j][k-1][l],max(dp[i-1][j][k
阅读全文
摘要:例题见挑战程序设计竞赛P56 解释:子序列是从原序列中按顺序(可以跳着)抽取出来的,序列是不连续的,这是其和子串最大的区别; 我们可以定义dp数组为dp[i][j],表示的是s1-si和t1-ti对应的最长公共子序列长度 状态转移方程的话我们分为s[i],t[i]相同和s[i],t[i]不同时的情况
阅读全文
摘要:洛谷P1359租用游艇 分析:这个游艇我看到题目下意识的就想将dp数组设为dp[i][j]表示i到j之间的最短距离,但题目上要求的只是从起点到终点的距离,这样设只是自找麻烦。 直接设成dp【i】表示从起点到i的最短距离。 状态转移方程是dp[i]=min(dp[i],dp[j]+a[i][j]),比
阅读全文
摘要:洛谷P1510 分析:本质上还是一个01背包,将体力当做重量,体积当做价值。配上滚动数组 即dp[j]代表在体力耗费为j时最大能搬运多少体积的石头,当dp[j]>v时就说明存在满足情况的解,这样,就选择最小的j就可以了 PS:我这里用了个中间结果ans,其实没必要,可以直接在后面加上一个for循环,
阅读全文
摘要:洛谷P1387 最大正方形 分析:画图模拟,发现以坐标(i,j)为右下顶点的正方形可以根据它左上方的三个点得到,就很轻松写出状态转移方程了。 代码:
阅读全文
摘要:洛谷P1855 榨取kkksc03 分析:套路是很明显的01背包,但是这时受约束的变量有两个了,这种情况下就该用多维背包了 分析方法一样的,用dp[i][j][k]表示从前i个愿望中挑选总时间和总金钱不超过j,k时的最大愿望数。 则状态转移方程应该为:dp[i][j][k]=max(dp[i-1][
阅读全文
摘要:洛谷P1057 传球问题 分析:经过m次传球到第i个人的方法可以由经过m-1次传球到第i个人和到第i-1个人传递得来 设dp[i][j]为经过j次传球后到达第i个人的方法数,可得到状态转移方程为: dp[i][j]=dp[i-1][j-1]+dp[i+1][j-1]; 写循环时注意状态转移是跟着人来
阅读全文
摘要:前言:很久没有发博客了,以后会捡起来,之后很长一段时间内我都会把精力放在攻克DP问题上,所以会经常上传一些DP学习笔记,把一些比较好的,没见过类型的DP问题都会传上来,希望能够变强吧。 因为今天很清醒的意识到世上有很多很优秀很惊艳的人,自己也要努力,努力成为那样的人啊 。 例题 洛谷P1164 小A
阅读全文
摘要:链接:https://www.nowcoder.com/acm/contest/85/F来源:牛客网 题目描述 Etéreo 拿出家里的许多的立方体积木,堆成了一个三维空间中的模型。既然你高考选了技术, 那想必你一定想知道,这个模型的三视图是什么吧! 图中, 轴、 轴和 轴的方向已经标明。现在规定,
阅读全文
摘要:1. Problem Description 如题,给出一个无向图,求出最小生成树 2. Input 第一行包含两个整数N、M,表示该图共有N个结点和M条无向边。(N<=5000,M<=200000) 接下来M行每行包含三个整数Xi、Yi、Zi,表示有一条长度为Zi的无向边连接结点Xi、Yi 3.
阅读全文