NBUT 2013 Newer Weekly - 2nd November

2nd Nov, 2013 View the contest

Summary

等AK这套代码,相信用不了多久,你就会升职加薪,当上总经理,出任CEO,迎娶白富美,走向人生巅峰!

但是想要做出所有题目,就要,嗯..额..这...就要...就要...就要把所有题目都做出来......

—— Mr. Cai


Problems

[A] Higher View the problem View the source

Tags: Not set yet


Standard Code

[B] Divide Bad Apples View the problem View the source

Tags: Not set yet


Standard Code

[C] Blow or Not View the problem View the source

Tags: Not set yet


Standard Code

[D] Single Calculate System View the problem View the source

Tags: Not set yet


Standard Code

[E] Many Candies View the problem View the source

Tags: Arthas

这是一道简单的题目题意就是给你M个数字,问其中有没有N这个数字。由于数据较水可以直接用ch[i]来存数字,然后暴力循环一遍就可以得到答案。

我本意是想出一道简单的hash运用的,用一个num[]数组来存下每个数字出现的次数,输入的同时记录下num[ch[i]]++那只要判断num[N]是否为零就好。


Standard Code
[New window]

[F] Take More Sugars View the problem View the source

Tags: Arthas

这题题意就是有N颗糖,每颗糖都有一个重量Ni,而10只能吃下M重的东西,但 是她又要吃更多数量的糖,所以这就是一道简单的贪心。只要按照Ni从小到大排序。

排好序后用一个sum来记录已取得糖的重量,用num来记录取得糖的数量,一直按顺序来取糖,直到再取就要超过M时输出num就可以了.


Standard Code
[New window]

[G] Just a Prime Number View the problem View the source

Tags: Arthas

正如题目所示就是判断一个数字是不是素数而已而且数据也小就不用多说了直接代码


Standard Code
[New window]

[H] The Sum of Square Number View the problem View the source

Tags: Not set yet

本题是递推。不懂的自行百度查阅。

群里也有递推的ppt。

我们定义d[i][j]为处理完1^2,2^2,……,i^2后值为j的所有情况。即j=k0*0^2+k1*1^2+……ki*i^2dp[1][4]的意思就是值为4,最大的底数为14=1^2+1^2+1^2+1^2.只有一种情况。 而dp[2][4]的意思便是 4=1^2+1^2+1^2+1^2=2^2 可以有两种情况。即i为底数最大的情况。

d[i][j]=d[i-1][j]+d[i][j-i*i];

dp[1][5]=dp[1][4]+dp[0][5]; 这句的意思就是已知dp[1][4]dp[0][5]的种类,dp[1][4]为有1种情况,那么就是这样:5=(1^2+1^2+1^2+1^2)+1^2,或者说我们dp[0][5] 那么就是5=k0*0^2。不可能存在这种情况,所以dp[0][5]=0。我们得到了dp[1][5]的情况只有1种。

j<i*i,d[i][j]=d[i-1][j]

dp[3][5]=dp[2][5] 即不取\(3^{2}\)项.

不理解的自己模拟操作。dp[0][0]=1,我们知道0=k0*0^2是可以的。 MAXi=31是因为1000最大可取的项是\(32^{2}\)。再大计算下去没意义。

题目略有难度,大家可以先练习其他递推题目熟练算法。

(Ps:以后递推类型题目题解基本以递推式形式给出。)


Standard Code
[New window]

[I] Together View the problem View the source

Tags: double pang

gcd。

我们只要求出1~N中与N最大公约数为1的所有情况,按要求格式输出。 数据一共1000组。我们不可能再判断M,N的时候,再去对2到min(M,N)判断是否为M,N的公约数。 那样时间复杂度便是O(N^3)N1000.必然超时了。

gcd,lcm自行查阅。

因为老蔡提出质疑,我在此补充题目为何如此 -。- !!!如有不对,求指正。

我们需要做到的事满足Mx+Ny=Z. (Z为任意1~N的值)。此处方便观察,我们让A=M,B=N。 即转化为Ax+By=Z求正整数解的题目。

我们可以想想,如果我们能让Ax+By=1.我们就能让Ax+By=Z。反之我们能让Ax+By=W(W为Z中某值),不一定能让Ax+By=1(-。-希望你们能自行思考).

如果有看过数论的孩纸,Ax+By=1求整数解~应该比较熟悉了。

欧几里德某一定理:

A,B互质<=>存在x,y∈Z 使得Ax+By=1。

老蔡看到没。(╯‵□′)╯︵┻━┻

-。-码完收工。


Standard Code
[New window]

Comments