目錄
題目:
題目描述:
題目鏈接:
思路:
思路詳解:
發個牢騷:
代碼:
代碼詳解:
題目:
題目描述:
題目鏈接:
P12337 [藍橋杯 2025 省 AB/Python B 第二場] 密密擺放 - 洛谷
思路:
思路詳解:
我看到題目的第一想法就是把小盒子盡可能放滿大箱子(裝到即使存在小部分空間但是也不夠再放一個小盒子的情況),因為由題允許小盒子從各個方向旋轉(包括可以平放和倒放)。但是我們觀察一下可以發現存在200恰好是40的倍數,250恰好是50的倍數,240恰好是30的倍數,即小盒子換個方向放恰好能把大箱子裝滿(不留一點空間)。所以計算最大的數量就是(200/40)*(250/50)*(240/30)=200
發個牢騷:
很顯然,由于這題是A題給出的數據是特殊的數據,所以做出結果還是很簡單的。回到一開始的想法,如果給出的條件全是特殊數據怎么處理呢?當然我也看了一圈洛谷的題解,發現并沒有得到想要的對特殊情況的講解。而且洛谷題解有直接用體積公式算結果的,還有討論小盒子的六種排列方式的,個人感覺完全就是為了寫題解而寫,用體積公式是因為這題數據特殊,六種排列方式的題解全部小盒子都固定按一種來排列(實際每次放小盒子進去的方法完全可以不一樣)。看了評論區有大佬說如果數據沒有這樣的特殊性質應該使用背包dp解決,但是沒有具體題目支持也無從下手
代碼:
代碼詳解:
#include<bits/stdc++.h> //填空題,答案是200
using namespace std;int main()
{cout<<(200/40)*(250/50)*(240/30)<<endl;return 0;
}