随笔分类 - luogu
摘要:接起来试试看。 C++string自带比较,比较的是字典序的大小。 自带+运算符,可以把两个字符串接在一起。
阅读全文
摘要:排序一遍,保证数值相同的数放在一起。 直接枚举每一个数判断和前面的数是否相同:相同就累加数量;否则就输出,然后把数量重置为1。
阅读全文
摘要:正解应该是求带权树的重心,然而这个数据范围用Floyed就可以了。
阅读全文
摘要:设calc(a,b)就是计算a/b取上整。 设三种铅笔的数量为a1,a2,a3,价格为b1,b2,b3。 答案就是min(calc(n,ai)*bi)。
阅读全文
摘要:差分。 设a[i]为这个点被多少个区域包含。 设f[i]为a[i]-a[i-1]。 于是每次读入一个区间[u,v]就把f[u]++,f[v+1]--。 每次计算前加上f[i]就是a[i]了。 只有当a[i]=0时这棵树才没有被砍掉。
阅读全文
摘要:递推。 f[i]表示把i进行处理可得的数的个数。 枚举头部接什么数可得递推式f[i]=1+∑f[j] (j<=i/2)。 其实可以用前缀和优化,不过这题的数据范围没这个必要。
阅读全文
摘要:贪心。 先按纪念品的价格排序一遍。 考虑最小的一个纪念品:如果可以和最大的纪念品合成一组,就合成一组。否则就让最大的纪念品单独一组。
阅读全文
摘要:先把各条地毯的数据存储下来。 然后从后往前找到的第一条包含(x,y)的地毯编号就是答案。
阅读全文
摘要:体积和价值设为相等做一遍01背包。 然后输出v-f[v]即可。
阅读全文
摘要:正反做两次最长上升子序列。 记f[i]为正着做以Ti为结尾的最长上升子序列。 记g[i]为倒着做以Ti为结尾的最长上升子序列。 答案就是n-max(f[i]+g[i]-1)。
阅读全文
摘要:经典桶排题。 用一个桶记录某个数是否出现过。 或者使用C++自带的unique函数。 它需要先sort。 然后用此函数去重,返回的是去重后最后一个数的后面一位的地址。
阅读全文
摘要:简单的深搜加上判断是否是质数。 由于是组合,所以要考虑顺序,不然会超时。 其实可以用状压的方法来递推。 f[i]表示状态为i时数的和是多少。
阅读全文
摘要:首先用个桶统计一下每个数出现多少次。 然后用类似埃氏筛法的方法统计每个数有多少个倍数,对于存在每一种倍数个数的数取一个max。 最后递推一下答案即可。
阅读全文
摘要:贪心,每次取最小的两个合并即可。 优先队列,懒惰就是美德。 单调队列,开两个队列,一个放没有合并过的果子堆,另一个放合并过的果子堆。 由于合并出来的果子堆是从小到大合并出来的,所以直接放队列尾部即可。
阅读全文

浙公网安备 33010602011771号