1 (*
2 *Problem: NOI2008 自愿者招募
3 *Author : Chen Yang
4 *Time : 2012.5.18
5 *State : 30分
6 *Memo : 搜索
7 *)
8 program employee;
9 const maxn=2020;
10 type
11 ty=record
12 x,y,v:longint;
13 end;
14
15 var
16 n,m,ans:longint;
17 g,now,cnt:array[0..maxn] of longint;
18 t:array[0..maxn] of ty;
19 //========================
20 procedure built;
21 var
22 i,j:longint;
23 begin
24 read(n,m);
25 for i:=1 to n do read(g[i]);
26 for i:=1 to m do
27 begin
28 read(t[i].x,t[i].y,t[i].v);
29 for j:=t[i].x to t[i].y do inc(cnt[j]);
30 end;
31 end;
32 //========================
33 procedure find(x,v:longint);
34 var
35 i,j,k,max:longint;
36 begin
37 if v>=ans then exit;
38 if x=m+1 then
39 begin
40 if ans>v then ans:=v;
41 exit;
42 end;
43 max:=0;
44 for j:=t[x].x to t[x].y do
45 begin
46 dec(cnt[j]);
47 if max<g[j] then max:=g[j];
48 end;
49 for i:=max downto 0 do
50 begin
51 for j:=t[x].x to t[x].y do
52 begin
53 inc(now[j],i);
54 if (cnt[j]=0)and(now[j]<g[j]) then
55 begin
56 for k:=t[x].x to j do dec(now[k],i);
57 for k:=t[x].x to t[x].y do inc(cnt[k]);
58 exit;
59 end;
60 end;
61 find(x+1,v+t[x].v*i);
62 for j:=t[x].x to t[x].y do dec(now[j],i);
63 end;
64 for j:=t[x].x to t[x].y do inc(cnt[j]);
65 end;
66 //========================
67 begin
68 assign(input,'employee.in'); reset(input);
69 assign(output,'employee.out'); rewrite(output);
70 built;
71 ans:=maxlongint;
72 find(1,0
sWorldeferences Nudeactressworld Nude Actress World Tube8%20japanese Actress En 1 Nude Actress World 【NOI2008】 志愿者招募 - datam - 博客园x Sex
rWorldeferences Nudeactressworld Nude Actress World Tube8%20japanese Actress En 1 Nude Actress World 【NOI2008】 志愿者招募 - datam - 博客园g %B3%AC%C7%BF%D3%D7%D3%D7%BA%CF%BC%AF