【問題描述】
小 w 和小 r 同月同日生,今天是他們的生日~
但是只有乙個生日蛋糕,切成了 n 塊(每塊是角度為 ai 的扇形)。
現在他們兩人要拿走連續的若干塊蛋糕(最終沒有蛋糕剩餘)。他們想知道怎樣分,才能使得兩人得到的扇形角度的總和之差最小。
輸出兩人獲得蛋糕總和的最小角度差。(可能出現其中一人分不到任何蛋糕的情況。)
【輸入形式】
第一行乙個整數 n(1≤n≤360),表示蛋糕切成的扇形塊數
第二行 n 個整數 ai(1≤ai≤360),表示每塊扇形的角度,保證角度之和為 360 。輸入資料是乙個環。
【輸出形式】
輸出乙個非負整數,表示小 w 與小 r 獲得蛋糕角度之差的最小值。
【樣例輸入】
3
100 160 100
【樣例輸出】
40
貪心:單向求值
貪心,當前最優解不一定是最終的最優解。
動態規劃:兩種以上情況(選擇)求值
題目說明:兩人要拿走連續的若干塊蛋糕,並不是一人拿一塊(這樣就**了),所以禁用排序(打亂了蛋糕順序)。
#include#includeint dp[365][365];
using namespace std;
int main()
if(_max>=180)else
} }cout《總結:這道題前前後後寫了三遍了,雖然前面的做法是錯的,依然過了測試資料。感謝老師的再三提點,不過還有很多值得注意的地方。
關於動態規劃
if(_max>=180){
ans=_max-(360-_max);
這個判斷包含了n==1,n==2的情況。
以下是老師給出的**:
for(int i=1;i=n)k=(i+j)%n;
else k=i+j;
dp[i][j]=dp[i-1][j]+dp[0][k];
if(abs(360-2*dp[i][j])注意變數k,陣列超出範圍時的特殊情況。
不過本題不需要考慮,因為是兩個人。
重慶賽區ACM熱身賽 8528 壓縮和解壓縮
問題描述 prime21有一種用於壓縮僅有小寫字元的串的方式,壓縮方式如下 記原串為s,原串中連續相同的x個字元 x 2 在新串中用cx表示 c表示該相同的字元 其餘字元不變。例子如下 原串 新串 prime prime wjj wj2 kkkkkkkkkkdao k10dao 現在要求你完成以下兩...
acm成都賽區網路熱身賽 Sum
題目大意 給你乙個n和x n的範圍 n 1000001 n表示有n個數,在這n個數查詢是否有兩個數之和為x的,如果有就輸出 yes 沒有 no sample input 3 3 1 2 3 2 31 3sample output yesno 最後我編了一組測試資料 3 16 1 8 16 no用二分...
小公尺網路賽 熱身賽 C題 CDMA
pro 構造乙個大小為 2 k 2 k 的只包含 1 和 1 的矩陣 使得這個矩陣的任意兩行做點乘的的結果為0 k 10 sol 很容易想到這個題應該會和遞迴有關係 再手玩 k 1,k 2,k 4 即可猜到做法 要構造 2 k 的解 只需先得到 2 的解 然後重複四次並將右下角取反即可 includ...