小明是乙個魔法師,他有n棵植物,所有植物排成一排,植物的初始高度為陣列h,小明有一些強迫症,他想
讓植物的高度都恰好達到k,小明有m瓶藥水,但藥水分為4種:
1.選擇一棵高度為a0的植物變為b0高度的植物
2.選擇一棵高度在[a1,a2]區間內的植物變為b1高度的植物
3.選擇一棵高度為a1的植物變為[b1, b2]區間內某一高度的植物
4.選擇一棵高度在[a1,a2]區間內的植物變為[b1,b2]區間內某一高度的植物
由於每瓶藥水有c瓶庫存,小明想知道他最多讓多少棵植物高度達到k
輸入描述:
輸入資料第一行是t,表示資料的組數,接下來每組資料輸入n,m,k,
接下來一行輸入n個數,分別是每棵植物的高度h[i](1 <= h[i] < k),
接下來m行開頭的兩個數字為op和c表示藥水是哪一種和該種藥水有幾瓶,輸入如下
若 op=1,則接下來兩個整數 a0,b0,意義如上文所述。
若 op=2,則接下來三個整數 a1,a2,b1,意義如上文所述。
若 op=3,則接下來三個整數 a1,b1,b2,意義如上文所述。
若 op=4,則接下來四個整數 a1,a2,b1,b2,意義如上文所述。
資料保證,所有 1 <= a0,b0,a1,b1,a2,b2 <= k
(t <= 10,n <= 1e4,m <= 300,k <= 100,c <=1e6)
輸出描述:
輸出乙個整數,表示最多有多少顆植物能生漲到k。
示例1輸入複製1
5 4 5
1 1 1 1 1
1 3 1 3
1 3 3 2
1 3 2 5
4 1 1 1 4 5
輸出複製
4
#include
#define ll long long
using
namespace std;
const
int maxn =
100;
const
int mod =
1e9+7;
ll qp
(ll a, ll n, ll mod =
::mod)
return res;
}const
int max_v =
2000+10
;const
int inf =
0x3f3f3f3f
;//用於表示邊的結構體(終點,流量,反向邊)
struct edge ;
vector g[max_v]
;//圖的鄰接表表示
int level[max_v]
;//頂點到源點的距離標號
int iter[max_v]
;//當前弧
void
add(
int from,
int to, ll cap));
g[to]
.push_back
((edge));
}//計算從源點出發的距離標號
void
bfs(
int s)}}
}//通過dfs尋找增廣路
ll dfs
(int v,
int t, ll f)}}
return0;
}//求解從s到t的最大流
ll max_flow
(int s,
int t)
}int
main
(int argc,
char
*ar**)
sort
(tmp.
begin()
, tmp.
end())
;int pre = tmp[0]
, tt =1;
for(
int i =
1; i < n;
++i)
else
}add
(s, pre, tt)
;for
(int i =
0; i < m;
++i)
else
if(op ==2)
else
if(op ==3)
else
}printf
("%lld\n"
,max_flow(0
, k));
for(
int i =
0; i <= tot;
++i)
}return0;
}
養花篇 怡情養性
我已經有十幾年的養花歷史了。小時候哥哥愛養花,我愛看花。後來哥哥去外地求學,我開始養花,也經常偷偷採集學校的花種帶回家。再後來我去外地求學,媽媽開始照料我們的花。現在搬到新家,我們一家人又開始養花。養花自然有很多樂趣,小時候覺得花兒好看又芬芳,現在覺得養花陶冶性情又能悟到很多生活工作之道。水仙花 置...
不用花盆也能養花
上面這些懸掛在空中的青苔球都是十分容易製造的,想要本人製造乙個也沒太大的難度,只需求預備好資料,加上不是太笨的手工,你就能製造乙個本人的懸掛動物,有工夫無妨嘗試一下。diy懸掛青苔球需求預備的資料 包括 各種不同的保水青苔 複雜 尼龍繩 線和盆栽土,當然還需求合適懸掛生長的動物和一些保水的介質。預備...
《養花其一 一次失敗的經歷》
養花其一 一次失敗的經歷 搬到新的出租房,有了窗台可以任我擺放,買來兩盆綠植,也為了不讓屋子顯得太空蕩。一盆綠蘿,一盆梔子花,應該很好養,只要我每天噴霧 澆水。我是這麼想的,也是這麼做的,而它也確實如我所料的那麼生長著,一切看上去真的很好!先說綠蘿,買回來就是滿滿的一盆,蔥鬱的綠葉,看上去非常精神!...