t057 任務分配

2021-09-28 10:01:00 字數 1849 閱讀 8586

time limit: 1 second

memory limit: 128 mb

【問題描述】

現有n個任務,要交給a和b完成。每個任務給a或給b完成,所需的時間分別為ai和bi。問他們完成所有的任務至少要多少時間。

【輸入格式】

第一行乙個正整數n,表示有n個任務。

接下來有n行,每行兩個正整數ai,bi。

【輸出格式】

乙個數,他們完成所有的任務至少要的時間。

【輸入輸出樣例解釋】

a完成任務1和任務2,時間為11。b完成任務3,時間為12。

或者 a完成任務1和任務3,時間為12。b完成任務2,時間為11。

【限制】

30%的資料滿足:1 <= n <= 20

100%的資料滿足:1 <= n <= 200 , 1 <= ai,bi <=200

sample input

3 5 10

6 11

7 12

sample output

【題目鏈結】:

【題解】

設f[i][j]表示前i個任務,a機器花了j時間,b機器花的時間的最小值;

即f[i][j]表示的是b機器花了多少時間;

則 f[i][j] = min(f[i-1][j]+b[i],f[i-1][j-a[i]]);

其中前乙個表示第i個任務用b機器搞,後乙個表示用a機器搞;

比較奇葩的狀態轉移方程.

【完整**】

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define lson l,m,rt<<1

#define rson m+1,r,rt<<1|1

#define ll long long

#define rep1(i,a,b) for (int i = a;i <= b;i++)

#define rep2(i,a,b) for (int i = a;i >= b;i--)

#define mp make_pair

#define pb push_back

#define fi first

#define se second

typedef pair pii;

typedef pairpll;

void rel(ll &r)

void rei(int &r)

const

int maxn = 200+10;

const

int inf = 0x3f3f3f3f;

const

int dx[9] = ;

const

int dy[9] = ;

const

double pi = acos(-1.0);

int f[maxn][maxn*maxn];

int n;

int a[maxn],b[maxn];

int main()

}int ans = inf;

rep1(i,0,now)

ans = min(ans,max(i,f[n][i]));

printf("%d\n",ans);

return

0;}

1301 任務分配

2003年浙江省隊選拔賽 時間限制 1 s 空間限制 128000 kb 題目等級 大師 master 題解檢視執行結果 有n位工作人員,同時有n項任務,每人必須承擔一項任務,若給出某人不能從事的某些任務,問要安排好工作,共有多少種方案?輸入描述 input description 輸入檔案第1行為...

CODEVS 1301 任務分配

描述 有n位工作人員,同時有n項任務,每人必須承擔一項任務,若給出某人不能從事的某些任務,問要安排好工作,共有多少種方案?分析 容斥原理的應用.先看看樣例 四個人 a,b,c,d a 不能選擇 2 b 不能選擇 2 3 c 不能選擇 3 4 d 不能選擇 4 總數是1 4全排列的個數 4 24 再考...

hdu 4864 任務分配貪心

有n臺機器,m個任務,每台機器有xi時間,yi等級,每個任務也有xj,yj,當乙個任務可以被處理的條件是,xj xi 且 yj 對於每個任務,時間大的優先去匹配,時間相同的,等級大的優先去匹配,因為時間佔得多,時間多1就多500,而等級最多才差200。然後匹配的時候,盡量使用等級小的去匹配,而時間只...