零件分組(stick)-動態規劃-中高階
case time limit:1000ms
time limit:3000ms
memory limit:65536k
total submissions:62
accepted:21
description
某工廠生產一批棍狀零件,每個零件都有一定的長度(li)和重量(wi)。現在為了加工需要,要將它們分成若干組,使每一組的零件都能排成乙個長度和重量都不下降
input
第一行為乙個整數n(n<=1000),表示零件的個數。第二行有n對正整數,每對正整數表示這些零件的長度和重量,長度和重量均不超過10000。
output
僅一行,即最少分成的組數。
sample input
5sample output8 4 3 8 2 3 9 7 3 5
2
思路:剛開始看到這題的時候感覺和飛彈攔截那道題的第二問很像。
但是這道題和飛彈那道題的差距是,飛彈那道題的飛彈順序是固定的,所以我們分組的時候也只能從前到後進行分組。
但是這裡我們可以對他們的順序進行改變後再進行分組。
所以首先我先對零件的長度進行從小到大的排序,因為我們要求的是乙個lis,這是第乙個約束條件,然後我們就像飛彈的第二問那樣,進行分組。分組的時候要注意當有多種情況成立時,我們要選擇那個w較大的那個,因為我們盡可能的要讓w小的去匹配小的嘛。然後就能夠求出需要幾組了。
飛彈那道題:飛彈攔截問題 (舉一反三!!)
#include#include#include#include#include#include#include#include#includeusing namespace std;
typedef __int64 ll;
typedef unsigned __int64 ull;
#define inf 99999999
#define maxn 1010
int sys[maxn];
struct nodea[maxn];
bool cmp(node a,node b)}}
if(lmin==-1) sys[++tail]=a[i].w;
else sys[tx]=a[i].w;
}printf("%d\n",tail);
return 0;}/*
51 1
1 22 1
2 23 1
*/
零件分組 題解
題目描述 某工廠生產一批棍狀零件,每個零件都有一定的長度 li 和重量 wi 現在為了加工 需要,要將它們分成若干組,使每一組的零件都能排成乙個長度和重量都不下降 若 ili lj,wi wj 的序列。請問至少要分成幾組?輸入 第一行為乙個整數 n n 1000 表示零件的個數,第二行有 n 對正整...
零件分組 題解
題目描述 某工廠生產一批棍狀零件,每個零件都有一定的長度 li 和重量 wi 現在為了加工 需要,要將它們分成若干組,使每一組的零件都能排成乙個長度和重量都不下降 若 ili lj,wi wj 的序列。請問至少要分成幾組?輸入 第一行為乙個整數 n n 1000 表示零件的個數,第二行有 n 對正整...
P2093 零件分組
某工廠生產一批棍狀零件,每個零件都有一定的長度 li 和重量 wi 現在為了加工需要,要將它們分成若干組,使每一組的零件都能排成乙個長度和重量都不下降 若i輸入格式 第一行為乙個整數n n 1000 表示零件的個數。第二行有n對正整數,每對正整數表示這些零件的長度和重量,長度和重量均不超過10000...