02 2019 档案
摘要:【链接】 "我是链接,点我呀:)" 【题意】 让你找到长度为n的数字 这个数字只由a或者b组成 且这n个数码的和也是由a或者b组成的 求出满足这样要求的数字的个数 【题解】 枚举答案数字中b的个数为y,那么a出现的个数就为n y 那么和就是n a + (b a) y; 这个数字最多就7位的样子 很容
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 【题解】 会发现两个皇后之间如果只有奇数个位置 也就是n%2==1 那么第二个人总是赢的 因为如果white往下跑的话,black也能往下跑。 第二个人没有输的机会。 其他情况就是第一个人赢了... 【代码】
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 n个朋友 第i个朋友帮你的概率是pi 现在问你恰好有一个朋友帮你的概率最大是多少 前提是你可以选择只问其中的某些朋友不用全问. 【题解】 主要思路是逆向思维,转换成一个一个地加上去 然后看看概率的改变值在何时为正数,显然只有为正数的时候才能加 然后概率大
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 如果a[i] 2 【题解】 假设最后的方案是(ai,bi) 这里(ai,bi)表示下标为ai的袋鼠可以装进下标为bi的袋鼠里面 (这里袋鼠已经按照大小从小到大排序了) 则我们会发现,如果有(a1,b1),(a2,b2)...(ak,bk)这些方案的话(且
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 每个人都有自己喜欢的队员 但是如果贿赂他们可以让他们更改自己喜欢的队员 问你最少要花多少钱贿赂队员才能让1号队员严格有最多的人喜欢? 【题解】 除了1号之外,其他队员最后喜欢的人数不太好确定。 我们可以这样,用up枚举其他人最后喜欢的人数的上限(即除了1
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 让你求出l~r当中二进制表示1的个数最多的数x 【题解】 最多有64位 我们可以从l开始一直增大到r 怎么增大? 找到l的二进制表示当中0所在的位置 假设i这一位的0经过加法变成了1 那么我们再从低位到高位依次枚举那一位为1就好 然后把这个二进制转换成十
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 如果存在a[j] a[i]=d 那么认为可以量出来长度d 现在给你量尺上的n个点. 问你最少要加多少个点,才能够量出来长度x和长度y 【题解】 设dic1和dic2分别为 能量出长度x和长度y需要添加的点(所有能利用某个a[i]量出来长度为x或y的点)
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 光标一开始在p的位置 你可以用上下左右四个键位移动光标(左右)或者更改光标所在的字符(上下增加或减少ascill码) 问你最少要操作多少次才能使得字符串变成回文 【题解】 首先把字符串分成两个部分 1..n/2 和 n/2+1..n这两个部分 (如果n是
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 出现AB就要交换一下 给你结果序列 问你原序列有多少种可能 首尾可以交换. 【题解】 设 dp[i][0]表示i和i 1不交换,达到前i个字符序列的状态的方案数 dp[i][1]表示i和i 1交换,达到前i个字符序列的状态的方案数 对于 s[i 1] s
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 每轮游戏都要有一个人当裁判,其余n 1个人当玩家 给出每个人想当玩家的次数ai 请你求出所需要最少的玩游戏的轮数 使得每个人都能满足他们当玩家的要求. 【题解】 【代码】 cpp import java.io. ; import java.util. ;
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 让你根据冒泡排序的规则 建立一张图 问你这张图的最大独立子集的大小 【题解】 考虑a[i]会和哪些点连边? 必然是在a[i]左边且比它大的数字以及在a[i]右边比它小的数字 (根据冒泡排序的原理) 所以如果选择了a[i]就不能再选择它左边比它大的数字或者
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 让你组成一个只由1~9组成的数字 每个数字需要的paint数字给定。 让你组成一个最大的数字,且所有数字的paint的总和不超过v. 【题解】 先求出a中的最小值mi 最后的长度显然就是a/mi啦 然后从高位到低位,优先让高位优先选择大的数字就好. (判
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 定义两个函数 f和g f(i)表示a[1..i]中等于a[i]的数字的个数 g(i)表示a[i..n]中等于a[i]的数字的个数 让你求出来(i,j) 这里ig(j) 【题解】 求出来两个数组g[N]和f[N]; (用map就行) 要算出(ig[j]的个
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 让你从1..n这n个数字中 选出来k个不相交的长度为m的区间 然后这个k个区间的和最大 求出这k个区间的和的最大值 【题解】 设dp[i][j]表示前i个数字已经选出了j个区间的最大值 看看是以当前位置为结尾选择一个区间,还是这个位置不包括在任何一个区间
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 问你一棵树上有多少条长度为k的路径 【题解】 树形dp 设 size[i]表示以节点i为根节点的子树的节点个数 dp[i][k]表示以i为根节点的子树里面距离节点i的距离为k的节点有多少个. 长度为k的路径有两种情况. 1.这个路径从x开始,只经过x的一
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 有人转载官方号的动态。 又有其他人转载其他人转载的动态. 问你最长的一条转载动态的链有多长. 【题解】 用map把每个人的英文都转成小写的 然后从map中获取单词的标号 转换成图。 然后从根节点开始dfs即可 【代码】 cpp import java.i
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 让你把每一列都染成一样的颜色 要求连续相同颜色的列的长度都大于等于x小于等于y 问你最少的染色次数 【题解】 先求出每一列染成 或者.需要染色多少次 设f[0][i][j]表示前i列,以i为结尾的连续列长度为j的 列最少需要染色多少次 设f[1][i][
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 让你找一段连续的区间 使得这一段区间最多修改一个数字就能变成严格上升的区间。 问你这个区间的最长长度 【题解】 dp[0][i]表示以i为结尾的最长严格上升长度 dp[1][i]表示以i作为开头的最长严格上升长度. 然后我们枚举那个改变的位置在什么地方就
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 两个人,一个人在左上角,一个人在左下角。 左上角要到右下角去 左下角要到右上角去 只能走到相邻的格子(不能往回走,即一个往右下,一个往右上走) 要求这两个人必须要在这个n m的格子中选择一个格子作为休息点. (两条路径只能有一个一样的点) 问最多能拿到多
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 给你r,g,b三种颜色的气球 每张桌子要放3个气球 但是3个气球的颜色不能全都一样 (允许两个一样,或者全都不一样) 问你最多能装饰多少张桌子 【题解】 先把每张桌子都装饰上 a,b,c三种不同颜色的气球 (显然这样的桌子最多为Math.min(r,g,
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 给你r,g,b三种颜色的气球 每张桌子要放3个气球 但是3个气球的颜色不能全都一样 (允许两个一样,或者全都不一样) 问你最多能装饰多少张桌子 【题解】 先把每张桌子都装饰上 a,b,c三种不同颜色的气球 (显然这样的桌子最多为Math.min(r,g,
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 要求长度和宽度都严格递增(选择一个序列) 然后你一开始有一个长度和宽度 要求这个一开始所给的长度和宽度能接在你选择的一段连续的长度宽度的开头 (且保持原来的性质) 问你这个最长序列是什么.并打印 【题解】 将信件按照w,h两个关键字分别上升的顺序排序 然
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 让你实现Shell的cd和pwd操作 【题解】 用一个list表示当前的路径 如果路径以/开头则表示需要清空当前路径重新走路 否则在原来路径的基础上继续加就可以了 【代码】 cpp import java.io. ; import java.util.
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 让你求没出现过的最小值 【题解】 模拟。。for一下就好 【代码】 cpp import java.io. ; import java.util. ; public class Main { static InputReader in; static P
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 f[i]表示在x[]中有多少个数字是i的倍数 让你求出sum(f[i]) li 【题解】 做筛法求素数的时候顺便把素数i在x[]中的倍数的个数求出来就好 前缀和 输出即可 【代码】 cpp import java.io. ; import java.ut
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 让你吃东西 B食物一次必须要吃连续k个 但是对A食物没有要求 问你有多少种吃n个食物的方法(吃的序列) 【题解】 设f[i]表示长度为i的吃的序列且符合要求的方法 有两种转移方法 一种是吃一个A食物 一种是吃k个食物 f[i] = f[i 1]+f[i
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 A~Z分别对应了1~26 AA是27依次类推 让你完成双向的转换 【题解】 转换方法说实话特别恶心 _ 【代码】 cpp import java.io. ; import java.util. ; public class Main { static I
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 你选择一个point作为start_position 然后每次你可以将包含该start_position的所有联通块变成任意颜色 问你最少要多少次变换才能将所有的方块变成相同颜色. 【题解】 设dp[i][j][0]表示将i..j这个区间的所有方块变成a
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 问你n!的b进制下末尾的0的个数 【题解】 证明:https://blog.csdn.net/qq_40679299/article/details/81167283 这题的话m比较大, 做个质因数分解就ok _0){ ans+=n/5; n = n/5
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 让你把数组分成k个连续的部分 使得每个部分最大的m个数字的和最大 【题解】 把原数组降序排序 然后选取前m k个数字打标记 然后对于原数组 一直贪心地取 直到这个区间选了m个打标记的数字为止。 然后就划分一个区间 _ 【代码】 cpp import ja
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 水题 【题解】 哪个比较挑剔优先给他选 _ 【代码】
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 给你一个字符串s 让你从中选出来一个字符串t 这个字符串t是s的前缀和后缀 且在除了前缀和后缀之外的中间部位出现过。 且要求t的长度最长。 让你输出这个字符串t 【题解】 KMP的应用 f[i]就是以i为结尾的后缀能匹配的最长前缀的长度 因此只要知道f[
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 让你把数组分成3个连续的部分 每个部分的和要一样 问你有多少种分法 【题解】 先处理出来num[i] 表示i..n这里面有多少个j 满足aft[j] = aft[i]/2 这aft[i]=a[j]+a[j+1]..+a[n] 然后for从1..n 看看p
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 横坐标1..2^n对应着2^n个复仇者的基地,上面有k个复仇者(位置依次给出)。 你是灭霸你要用以下方法消灭这k个复仇者: 一开始你获取整个区间[1..2^n] 假设你当前获取的区间为[l,r] mid = (l+r)/2 那么你每次有两种选择 1.将整
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 你可以把c[i]改成c[i+1]+c[i 1] c[i] (2 【题解】 cpp import java.io. ; import java.util. ; //code start from here / d[i] = c[i+1] c[i]; (1
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 给你一个a 让你从1..a 1的范围中选择一个b 使得gcd(a^b,a&b)的值最大 【题解】 显然如果a的二进制中有0的话。 那么我们就让选择的b的二进制中对应的位置为1 剩下全为0就好 这样a的二进制全都变成1之后就是答案了(gcd的右边是0)。
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 x轴上有m个连续的点,从1标号到m. 其中有n个点是特殊点。 让你用k段区间将这n个点覆盖。 要求区间的总长度最小。 【题解】 一开始假设我们需要n个胶带(即包含每一个点) 然后因为k 【代码】 cpp import java.io. ; import
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 给你一个k位数b进制的进制转换. 让你求出来转成10进制之后这个数字是奇数还是偶数 【题解】 模拟一下转换的过程,加乘的时候都记得对2取余就好 【代码】
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 给你k个红包,每个红包可以在si..ti的时间范围内拿走。 抢完红包之后你得到wi元,然后你需要在di+1时刻才能继续抢红包 时间是线性的从1..n 然后某个人可以阻止你在x时刻抢红包,然后你的时间跳过1s( 1s)直接到达x+1时刻. 这个人可以阻止你
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 设dp[i][j]表示前i个字符分成j个部分的最多匹配单词个数。 则dp[i][j] = dp[prei][j 1] + get_num(prei+1,i) 其中get_num(l,r)表示s[l..r]中有多少个子串能够和字典中的单词匹
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 让你遍历n个节点,访问过的节点不操作。 如果是没有访问过的点,那就把它加到序列的末尾. 问你形成的最小字典序的序列是多少。 【题解】 显然每次找最小的标号 用一个集合维护当前能够到达的最小标号 一开始集合里面只有1 然后每次取出来最小的节点然后到达那个节
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 题意 【题解】 看了下样例解释就懂了。。。 每次选择最大最小的两个组合 然后加起来。。 【代码】 cpp import java.io.IOException; import java.util.Arrays; import java.util.Scan
阅读全文
摘要:【链接】 "我是链接,点我呀:)" 【题意】 给你n个菜以及每个人需要的菜以及数量 如果某个人无法满足它对菜的需求的话 就用价格比较低的菜来填充它的要求。 (如果价格低的菜不够了,那么就直接输出0) 否则输出每个人的消费总量 【题解】 把所有的菜按照价格升序排序. 对于每一个顾客的kind,num
阅读全文