有乙個 m×n 的矩形木板。你需要把這個木板切成 1×1 的小方塊,也就是豎著切 n-1 刀、橫著切 m-1 刀。橫著切第 i 個位置的權值為 xi ,豎著切第 j 個位置的權值為 yj 。切某一刀時的費用為切這一刀的權值乘上切過的塊數。
請你安排切的順序使得所有費用之和最小。
第一行兩個數 m,n 。
接下來一行 m-1 個整數 x1,x2,…,xm-1 。
接下來一行 n-1 個整數 y1,y2,…,yn-1 。
輸出乙個數,表示最小的費用之和 mod 1e9+7。
6 42 1 3 1 4
4 1 2
42貪心,易證明先取權值大的邊優於取權值小的邊。
然後。。。就沒有了。。。。(可能我的寫法太菜了就被卡常了,emmm,inline是個好東西)
#include#include#include#includeusing namespace std;
typedef long long ll;
const ll mod=1e9+7;
const ll maxn=2e6+10;
inline ll read()
struct martix
}a[maxn]; //其實可以開兩個陣列然後雙指標,這樣寫容易像我第一次交的時候只開了1e6的空間。。。60分滾粗
ll n,m;
int main()
else
}printf("%lld",(ans+mod)%mod);
return 0;
}
NOIP模擬 切木板(貪心)
有乙個 m n 的矩形木板。你需要把這個木板切成 1 1 的小方塊,也就是豎著切 n 1 刀 橫著切 m 1 刀。橫著切第 i 個位置的權值為 xi 豎著切第 j 個位置的權值為 yj 切某一刀時的費用為切這一刀的權值乘上切過的塊數。請你安排切的順序使得所有費用之和最小。第一行兩個數 m,n 接下來...
NOIP模擬 切木板
題目 有乙個 m n 的矩形木板。你需要把這個木板切成 1 1 的小方塊,也就是豎著切 n 1 刀 橫著切 m 1 刀。橫著切第 i 個位置的權值為 xi 豎著切第 j 個位置的權值為 yj 切某一刀時的費用為切這一刀的權值乘上切過的塊數。請你安排切的順序使得所有費用之和最小。輸入格式 第一行兩個數...
NOIP模擬 切割木板
小 z 是個特別墮落的小朋友,上數學課的時候經常有奇奇怪怪的想法。小 z 的的包裡有塊 n m 的長方形木板,小 z 想把木板全部切成 1 1 的小正方形 用來玩拼圖 但木板本身並不均勻,因此從不同的線切割下去要花不同的代價。而且對於一塊木板,切割一次以後就被分割成兩塊,而且由於不能把這兩塊木板拼在...