摘要: 差分。 设a[i]为这个点被多少个区域包含。 设f[i]为a[i]-a[i-1]。 于是每次读入一个区间[u,v]就把f[u]++,f[v+1]--。 每次计算前加上f[i]就是a[i]了。 只有当a[i]=0时这棵树才没有被砍掉。 阅读全文
posted @ 2018-01-24 12:57 TrassBlose 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 递推。 f[i]表示把i进行处理可得的数的个数。 枚举头部接什么数可得递推式f[i]=1+∑f[j] (j<=i/2)。 其实可以用前缀和优化,不过这题的数据范围没这个必要。 阅读全文
posted @ 2018-01-24 12:43 TrassBlose 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 全部转化成角为单位计算。 阅读全文
posted @ 2018-01-24 12:37 TrassBlose 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 贪心。 先按纪念品的价格排序一遍。 考虑最小的一个纪念品:如果可以和最大的纪念品合成一组,就合成一组。否则就让最大的纪念品单独一组。 阅读全文
posted @ 2018-01-24 12:07 TrassBlose 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 模拟。 阅读全文
posted @ 2018-01-24 12:01 TrassBlose 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 先把各条地毯的数据存储下来。 然后从后往前找到的第一条包含(x,y)的地毯编号就是答案。 阅读全文
posted @ 2018-01-24 11:45 TrassBlose 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 体积和价值设为相等做一遍01背包。 然后输出v-f[v]即可。 阅读全文
posted @ 2018-01-24 11:37 TrassBlose 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 很容易想到把大于b的数赋值为1,小于b的数赋值为-1。 做一遍前缀和。 于是问题变成求sum[j]-sum[i]=0 (0<=i<w && j>=w) 于是直接按照b所在位置划分成两段,分别用桶统计sum某值出现的次数,注意sum数组中的数可能会出现负数,于是要加上一个n防止访问负的下标。 最后用乘 阅读全文
posted @ 2018-01-23 20:34 TrassBlose 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 一道伟大的题。 阅读全文
posted @ 2018-01-23 19:55 TrassBlose 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 任何数都可用2的幂次方加和得到。 于是问题变成求2^k大于m的第一个k。 阅读全文
posted @ 2018-01-23 19:50 TrassBlose 阅读(72) 评论(0) 推荐(0) 编辑