一组公司进行了大量交易,现在是时候解决账单了。 公司之间互相支付,所以他们都希望得到他们最终应该拥有的钱。但是,当几家公司彼此拥有资金时,可能会减少交易数量。 例如,如果A欠B公司100美元,B欠C公司40美元,C欠A公司60美元,那么它是可能的分别通过A和C支付B$40和$20来结算所有账单,因此只进行两笔交易而不是三笔交易。 鉴于公司之间的初始交易,确定解决所有账单所需的最少交易数量。
输入:
1.一行包含两个整数n,公司数量,1≤n≤20,m,交易数量,0≤m≤1000。
2.m行,每个行有三个整数i,j,t,其中0≤i,j,<n和1≤t≤1000,表示公司j 欠i公司 i的数量。
输出:一个整数,等于结算所有账单所需的交易数量。
时间和内存限制:1000毫秒,256 MB
样例1:
INPUT:
4 2
0 1 1
2 3 1
(1欠0公司 $1;3欠2公司 $1)
OUTPUT:
2
样例2:
INPUT:
5 5
0 1 3
1 2 3
2 3 3
3 4 3
4 0 3
OUTPUT:
0
你玩过2048游戏吗? 游戏在带有编号格子中开始。 当两块格子具有相同数量的数字时,它们会合并为一个数字。 我们将在1个维度上玩2048。 规则就像下面一样。
1.我们在一维的n个格子(数字)开始。
2.我们可以合并两个格子,如果它们相邻且相等,则生成单个格子,其值更高。 也就是说,如果我们有A(i)=A(i+1),它们可以合并为具有值A(i)+1的单个格子。
目标是找到一个合并格子的顺序,以便最终获得最少的格子数量
例子:我们有一行格子:
3,3,4,4,4,3,3
如果先将两组3合并 则会得到:4,4,4,4,4
再合并两组4: 5,5,4
合并5: 6,4
则最后剩下的最小个数为2
样例:
输入:第一行包含一个整数n(1≤n≤500),等于开头的格子。 第二行包含n个整数a1,a2,...,an,(1≤ai≤1000)表示初始格子的值。
输出:整数-游戏结束时最小可能的格子数。
--------------------------
INPUT:
7
3 3 4 4 4 3 3
OUTPUT:
2
全部评论
(0) 回帖