首页 > 其他 > 详细

USACO4.1 Beef McNuggets【数学/结论】

时间:2019-11-01 16:00:40      阅读:77      评论:0      收藏:0      [点我收藏+]

吐槽/心路历程

打开这道题的时候:*&@#$%*#?!这不是小凯的疑惑吗?好像还是个加强版的?我疑惑了。原来$USACO$才是真的强,不知道什么时候随随便便就压中了题目。

对于我这种蒟蒻来说,这种有结论的题真是令人头疼,又不会证明,只能猜,要是猜错了就身败名裂了。

如果是考试的时候写这种题的话,我会直接上一个完全背包,并且价值不会开到题目骗我的那个$2,000,000,000$,差不多估摸着复杂度能过就这么写。

但是还是没搞懂为什么有一个上界,然后超过那个上界的答案会输出$0$(明明程序跑出来就是凑不了那么多啊)

就是这组数据:

 

4
252
250
254
256

 

 

上网看别人的题解我更疑惑了,都直接甩结论的啊喂,神仙啊,怎么想到的啊喂(?"? ?)?"(?•?︿•??)

可能我这种数论渣渣在考场上只能猜结论然后暴力验证什么了


 

最后还是硬着头皮看了一波最强押题人$USACO$的英文官方题解(又开始折磨我这个英语渣渣了):

第一种做法:一来就说如果不存在最大不能买到的块数,所有盒子大小的最大公约数大于$1$,先特判这种情况(也就是如果这一堆数的最大公因数不为1,就输出0)

然后从小到大进行更新,如果$X$能被凑出来,那么$X+V_i$也能被凑出来。

然后又开始甩结论了:如果有连续$256$个值都能被凑出来,那么从此之后所有的大小都可以被凑出来。

事实上,只要有连续的$min(V_i)$个值都能被凑出来,那么从此之后所有的大小都可以被凑出来。

(题外话:记笔记 短语  from here on out 从此以后)

所以...我还是要证结论?

 

 

 

 

先证这个吧:

只要有连续的$min(V_i)$个值都能被凑出来,那么从此之后所有的大小都可以被凑出来

设最小的那个数为$V_0$。

首先考虑特殊情况,特别地,如果从$1$到$V_0$都可以被凑出来的话,那么后面的数可以由$V_0*k$+前面凑出1到$V_0$的方法来凑($k$为正整数)

然后是一般情况,假设是从$i$到$i+V_0$都可以被凑出来,相同地,后面的数都可以用$V_0*k$++前面凑出$i$到$i+V_0$的方法来凑($k$为正整数)

那么问题来了,如果一直没有连续的$V_0$个数都能被凑出来怎么办呢?

那就是不存在不能买到块数的上限,也就是$gcd$特判的那种情况。

那么,再证公约数那个:

特殊情况:如果有$1$,所有的方案都能够被凑出来,输出$0$

考虑到能够被凑出来的数只能是$gcd$的倍数。因为每个数都可以被分解成为$k*gcd$的形式,能够被凑出来的数也可以被表达为$$m_1*k_1*gcd+m_2*k_2*gcd+m_3*k_3*gcd+...+m_n*k_n*gcd=gcd*(m_1*k_1+...+m_n*k_n)$$,一定是$gcd$的倍数。

如果$gcd!=1$,

 

想通之后还是不难吧。

 

第二种做法:

就是小凯的疑惑。

 

我太疑惑了,D1T1居然做了一个上午?还有半个月就考联赛了,退役算了哭唧唧。

USACO4.1 Beef McNuggets【数学/结论】

原文:https://www.cnblogs.com/lyttt/p/11776220.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!