計蒜客初賽4練習題

2021-08-01 23:42:45 字數 1331 閱讀 3227

因賬號衝突而遺憾錯過了這場。拿來練練手,稍微了解一下題目難度吧。

比賽共兩題,其中第二題有三小問,按情況,一般做出第一題和第二題的第一小問,並加快手速就能晉級了,那就看看這兩部分吧

思路:矩形晶元的放置,一下就想到了之前做過的一道遞推,只需要將遞推從一維推廣到二維即可,用dp即可實現

對於被焊接了的位置,由於均為整行整列而焊接,因此,開兩個數bool組記錄即可,至於dp處理過程,分三種情況考慮

1.該位置被焊上

2.該位置前乙個位置被焊上

3.無以上兩種情況

組合一下共有9種情況,再綜合一下,分類討論即可

最後注意一下初始化,0行和1行單獨處理,對於1行,別忘了也要分以上三種情況考慮。

最後,還是要細心,x,y座標混淆的小錯誤真心不容易debug啊,特別是樣例卡不掉的情況下

/*

author:owen_q

*/#include using namespace std;

const int maxn = 110;

bool r[maxn];

bool l[maxn];

int dp[maxn][maxn];

int main()

else

}dp[0][0] = 0;

dp[1][0] = 0;

dp[0][1] = 0;

dp[1][1] = 0;

for(int i=2;i<=m;i++)

else

}else

}for(int i=2;i<=n;i++)

else

}else

}for(int i=2;i<=n;i++)

}else

else

else}}

}else

else

else}}

}}

}printf("%d\n",dp[n][m]);

}return 0;

}

思路:判斷點的移動情況,有不超過半數的錯誤資料,於是考慮記錄所有情況並計數,不少於半數的即為最終結果。

資料範圍極大,開陣列肯定會爆。由於資料量比較可觀,於是想到map,並構造pair進行儲存。

最後注意一下,判斷不少於半數時用乘變除會更佳

/*

author:owen_q

*/#include using namespace std;

map,int> t;

int main()

}return 0;

}

計蒜客初賽3練習賽

計蒜客初賽5之前選了初賽3的題強行練手,確實這道題對思維的要求不低,要求轉換思路,價值挺大。初賽5成功晉級後,將未完成的 補完,完結此次初賽之旅。思路 這題明顯是個模擬題,模擬兩個小車的位置。不過,一開始準備寫個程式專門判斷小車位置,考慮到小車方向,時間,並單獨處理碰撞和碰牆情況,由於還看存在半點碰...

計蒜客 練習題 計算集合的並 set

給你兩個集合,計算其並集,即 注 中不允許出現重複元素,但是 與 之間可能存在相同元素。輸入資料分為三行,第一行有兩個數字 n,m 0n,m 0m 10 000 分別表示集合 a 和集合 b 的元素個數。後兩行分別表示集合 a 和集合 b。每個元素為不超出 int 範圍的整數,每個元素之間用乙個空格...

計蒜客練習題 水果店(巢狀map)

這道題主要就是考察巢狀map的使用 這道題我一開始用的map pair但是怎麼寫都不對。別說我還真不知道map該怎麼巢狀,以及怎麼呼叫巢狀map。map m 定義在第二維,插入的話就跟二維陣列一樣 m tm1 tm2 tm3 呼叫的話需要定義兩個不同的iterator乙個是外層的,乙個是內層的。具體...