標籤:style sp c on r size bs as dp
第一題:
題目大意:
夢幻城市每年為全市高中生興辦一次運動會。為促使各校同學之間的交流,採用特別的分隊方式:每一個學校的同學,必須被均勻分散到各隊,使得每一隊中該校的人數皆相同。為增加比賽的競爭性,希望分成越多隊越好。你的任務是由各校的人數決定最多可以分成的隊數。
解題過程:
1.直接求所有數的最大公約數即可。
初始得分100.
第二題:
題目大意:
給出一個式子火柴棍組成的A+B=C。(A,B,C<=999),求移動最少的火柴使得等式成立。不允許改變位元以及符號,不要製造0開頭的數。
解題過程:
1.一開始想到用dfs什麼的直接暴搜,但是寫起來各種麻煩。。而且可能還很慢。
2.考慮到數的範圍<=999,那麼就枚舉目標狀態的A和B,1000*1000的複雜度,然後計算初始狀態到目標狀態的最少步數。。
3.計算最少步數的過程:先打個表,move[i][j]表示數字i到數字j需要移動多少根火柴使得i是j的一部分,或者j是i的一部分。
比如 0到6,需要把0的一根火柴移到最中間,所以move[0][6]=1. 1 到 7,1本身就是7的一部分,所以move[1][7]=0;
然後用hash[i][j] 表示 i 變成 j 需要添加 多少根火柴。 比如 4需要4根火柴,8需要7根,所以
hash[4][8]=3;
hash[8][4]=-3; (負數表示需要拿掉火柴)
4.然後把初始狀態和目標狀態逐位 比較 計算距離 , 比如 12 到 23 ,1變成2 需要添加3根火柴,2到3需要移動1根火柴。
用tmp1表示一共需要添加多少根火柴,tmp2表示一共需要移走多少根火柴(就是所有負數的絕對值的和),tmp3表示需要移動多少根火柴。 首先必須滿足tmp1= tmp2,也就是目標狀態和初始狀態用的火柴一樣多。。然後更新ans。
ans=min(ans,tmp1+tmp3);
有點貪心的思想。 初始得分100。
第三題:
題目描述:
長郡中學校長打算舉行建校100周年的晚會。學校的職員是分等級的,也就是說職員之間的上下級關係組成一棵以校長為樹根的樹。校長要親自邀請一些職員參見晚會。同時校長親自到場歡慶這個節日。職員用1~n之間的整數編號,人事處給出了每個職員的搞笑指數。如果一個人和他上司一起參加,那麼便可能產生麻煩。為了使晚會的每個參與者都高興,校長不會同時邀請某個職員和他的頂頭上司。
你的任務是給出一個客人列表,使得客人的搞笑指數之和最大。
解題過程:
1.裸的樹形dp。但是 題目說的不是很清楚,題目的本意 貌似是 校長在1~n裡,且校長必須選。。
2.一開始把校長不考慮在n個人中,然後虛擬了一個節點(校長),結果就WA 5個點了。 初始得分50.
二模 (8) day1