总结

估分:60+100+30=190
实际得分:60+100+0=160
还不错。
 
T1:完全背包(backpack)
矩阵max??
还是贪心??
果断打了个60分暴力。
按照NOIP的惯例,此题是一道送分题。

对于 60% 的数据,我们可以发现其实 n  100 ,若两种物品 i a 相同, 则 i b 较小的应该被舍弃,复杂度 O(am)。

对于 100% 的数据,我们先证明一个引理: 引理:给定任意 n 个整数,它们之中存在若干个整数的和为 n 的 倍数。

证明:设 n 个整数为 1 a , 2 a , 3 a , , n a , = = n i Sn ai 1 。

对于 0 S , S1 , 2 S , 3 S , , n S 这 n +1 个数,至少有两个数模 n 相同,则 这两个数的差为 n 的倍数,

证毕。

回到题目,设第 s 种物品为性价比最高的物品之中 i a 最小的物 品。设最优情况下有 x 件非第 s 种物品,则我们可以证明: 定理:存在一种最优情况使得 x  s a 。 证明:若 x  s a ,则存在若干件物品的 i a 和为 s a 的倍数,将这些物 品用第 s 种物品替换一定不劣。 于是这 x 件非第 s 种物品的 i a 和最大为 s 100a 。于是我们选择 −100s a n 件第 s 种物品,剩下的空间做完全背包,复杂度 ( a^3)

T2:6308. 中间值 
第一眼:
原题。
梁正昊老师讲的分治专题里收录了此题。
大致思想是每次取两个区间的一半与k进行比较,去除不可能的区间,缩小问题的规模。
时间复杂度O(m log n)

T3:6306. Sequence 
以为能拿30分,但没想到将上一题的代码COPY下来直接用导致前一题的数组没有删掉而MLE了。
10分就暴力。
30分原来也要打个积性筛。
满分做法就是发现f其实也是一个积性函数,因此将所有f(p^c)筛出来即可。
完全积性函数:
  对于所有a、b,有:f(a*b)=f(a)*f(b)
积性函数:
  对于互质的a、b,有:f(a*b)=f(a)*f(b)
常见积性函数:欧拉函数,约数个数,约数和以及gcd等

今天拍了一次,差点拍死我了,到底是如何出1000组数据还要在上面跑两个程序,再跑一个对比是否有差异的?
简单的专题去有大大的好处,真可惜那些没去听的。
看来读入优化还是很有用的。。。
继续加油。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值