随笔分类 - 2019ACM暑期集训
摘要:这里有一篇写的很好的博客: https://pks-loving.blog.luogu.org/senior-data-structure-qian-tan-xian-duan-shu-segment-tree 在完成kuangbin线段树专题前面两个比较简单的结点修改后,这道题就是一道很标准的线段
阅读全文
摘要:题意:给出N个数,并且有修改第i个数的值,和查询在某个区间的最大值 思路:使用线段树来记录区间的最值,此题还是仅仅对叶子结点的修改,所以即 在HDU-1166 上把 update 和 query 函数进行略微修改即可。 完整代码:
阅读全文
摘要:题意:给N个数,然后给出N个数对应的数值,然后对叶子结点进行add,sub,query操作 输入end时即寻问结束 思路:对于RMQ问题当然使用线段树比较方便,同时这道题也是最简单的线段树(因为只对叶子结点进行修改,而没有对区间进行修改)对结点进行sub(减)操作即使 加入一个相反数 然后这道题主要
阅读全文
摘要:题意:给出一个n x m的矩阵然后矩阵下标(i,j)异或值越大的其单元的值越大, 所有存储的值范围为(1~n m)不重复,问某个矩阵有多少组合形式 思路:如果不考虑其他的方法,单从最简单的方向来看就是打表 完整代码:
阅读全文
摘要:题意:就是给出n点m边,输出排序使并且输出的字典序最小 (注意是这里是输出的序号而不是值). 思路:这类对于拓扑排序字典序最小的问题使用逆向拓扑排序。 完整代码:
阅读全文
摘要:题意:给出字符串长度n,和两个字符串,输出不大于字符串s不小于字符串t的集合的最中间字符串(类似中位数那种)。 思路:我先尝试在想是否是 集合个数除以2 然后加到最小的字符串上去(中位数思想),然后又在找两个字符串中间个数的时发现 集合个数为 (26-'a')*(26-"b)...这种形式 ,所以估
阅读全文
摘要:总结:题很简单,但是要考虑周全(尤其是对于INF的情况) 题意:给定x,y,a,b 表示用x个空瓶子能换一个新的可乐(即包含瓶盖和瓶身),用y个瓶盖能换取一个新可乐,现在你有a个空瓶子以及b个瓶盖,问最多能换取多少瓶可乐(如果能换取无限瓶可乐则输出INF) 思路:题意很简单 我们可以很快得到 a/x
阅读全文
摘要:题意:多测试样例,N个元素(1 <= N <= 1000),每个元素的值为(0<= ai <= 2,000,000,000),这些元素被压入栈中,与栈顶相同的可以一起消除(每次将与top相同的相连必须距离在6以内),问最后是否能将整个栈弹出思路:用dfs来递归寻找可能的方案关于删除操作(一开始想到用
阅读全文
摘要:题意:给一个播音机(背包),然后给你一段播放时间n(容量),每个对应又m 个磁带,每个磁带都有自己的时间(容量),求能播放最长的时间以及输出所选择的磁带(能塞背包的最大体积以及选择的物品),每种磁带只能播放一次; 思路:这便是0/1背包的题(物品只能使用一次),同时与之不同的是要 输出所选择的物品。
阅读全文
摘要:题意;输入数据首先包含一个正整数C,表示有C组测试用例 每组测试用例的第一行是两个整数n和m(1<=n<=100, 1<=m<=100) 分别表示经费的金额和大米的种类,然后是m行数据,每行包含3个数p,h和c(1<=p<=20,1<=h<=200,1<=c<=20) 分别表示每袋的价格、每袋的重量
阅读全文
摘要:题意:有n元钱,商品的价格在1~k元(每种价格的商品数量无限),用n元去买这些商品,最多有多少种选择? 思路:就是最简单的完全背包 (1 <= N <= 1000),(1 <= K <= 100).也就是说组合数很大 会超出long long范围 对于求完全背包的组合数即从 dp[0] 到dp[n]
阅读全文
摘要:题意:给出三个整数N,M,K 和:sum(a1...ak) =N, 最小公倍数lcm(a1,...,ak)=M, 以及K个数字,求出满足条件的组合可能 (1 ≤ N, M ≤ 1,000, 1 ≤ K ≤ 100) (这道题比较综合,相比昨天做的dp难多了,然后就没做出来.....只能看大佬博客再自
阅读全文
摘要:题意:n种鞋子,m总金额,k品牌数 (1<=N<=100 1 <= M<= 10000 1<=K<=10) 然后对应n个鞋子给出对应的 编号a 金额b 价值c( 1<=a<=k, b and c, 0<=b,c<100000) 思路:事实上对于其他背包的限制,这里在于每种品牌只能取一个 那么我们可以
阅读全文
摘要:题意:找出所给的多个串的相同子串部分 思路:暴力遍历(截取) 其中一个串的部分,然后将其用kmp简化与其他串的匹配 ,用ans来存储最终的答案,如果答案有多个则用 min()来取最小字典序 完整代码:
阅读全文
摘要:题意:给你多组数据,然后给出一个面额n,已知有5种钱币1, 5 ,10 , 25, 50求可以组成n元的可能数 (同时所花费的钱币个数要小于等于100) 思路:从多重背包来理解,即使每个硬币占一个单位空间,有100个空间通过状态转移方程:dp[j][k] += dp[j-v[i]][k-1]; 这里
阅读全文
摘要:题意:给你一个字符串s,输出该字符串的所有的前后缀长度 思路:利用next数组的性质,我们知道next[i]是指子串长为i的最大公共前后缀 所以 next[next[i]] 意味着 在最大公共前后缀 的子串里再去寻找最大公共前后缀子串 这样找的原因是 完整代码:
阅读全文
摘要:题意:给你一个字符串 求他的循环节长度 思路:利用 结论:len%(len - next[len]); 当next[len] == 0 则循环节为 1 完整代码:
阅读全文
摘要:题意:给你一个长度为n的串,输出其存在循环节的子串长度,以及循环节个数 思路:昨天在 HDU-3746 Cyclic Nacklace 上有详细讲到求循环节的原理 ,然后总结一下结论 令 k = len % (len-next[len]) len为字符串的长度 (1)如果next[len] == 0
阅读全文
摘要:题意:给出一个字符串,然后假设其首尾连接,然后求其最小的循环节 思路: 要求循环节,通过运用next数组的含义。已知next数组为在该长度下的最长的相同前后缀长度 然后利用关系式 sum = len - next[len] , sum - len%sum; 然后就是关系式的解释:(关系刚开始理解了很
阅读全文

浙公网安备 33010602011771号