D Manga Market 思維加01揹包

2021-10-03 16:50:59 字數 1418 閱讀 3575

並且, 其中的a如果不等於0 , 那麼肯定a >= 1 , 如果在t 時間訪問完ai

那麼下乙個訪問完花費時間是

( t + 1 ) * aj + bj + t , 這就相當於兩倍的t還多 , 照這樣加些去, 會變成4t , 8t ,幾何式增長, 所以只要30次就夠了,

然後考慮到還有a=0的, 所以呢, 如果訪問了i個a >= 1 的, 再找到符合t時間a=0超時就行了,二分查詢,兩者相加<=t , 並且兩者相加求最大

#include

using

namespace std ;

typedef

long

long ll ;

typedef pair pair ;

const

int n =

2e5+10;

pair a[n]

;#define f first

#define s second

ll c[n]

, dp[44]

;bool

cmp(pair a , pair b)

intmain()

;}sort

(a +

1, a + cnt2 +

1, cmp)

;sort

(c +

1, c + cnt1 +1)

;for

(int i =

0;i <=

30;i ++

) dp[i]

= t +1;

dp[0]

=0;for

(int i =

1; i <= cnt2 ;i ++

)for

(int j =

30;j >

0;j --

) dp[j]

=min

(dp[j]

,(dp[j -1]

+1)*

(a[i]

.f +1)

+ a[i]

.s);

int ans =0;

for(

int i =

1; i <= cnt1 ; i ++

) c[i]

+= c[i -1]

;for

(int i =

0;i <=

30;i ++

) cout << ans << endl ;

return0;

}

D Manga Market 思維加01揹包

並且,其中的a如果不等於0 那麼肯定a 1 如果在t 時間訪問完ai 那麼下乙個訪問完花費時間是 t 1 aj bj t 這就相當於兩倍的t還多 照這樣加些去,會變成4t 8t 幾何式增長,所以只要30次就夠了,然後考慮到還有a 0的,所以呢,如果訪問了i個a 1 的,再找到符合t時間a 0超時就行...

hdu6092 01揹包加思維

前置知識這裡 本題已知每種和的個數 存在b陣列裡 由此我們可以遞推求解 b i 前面構造成i大小的方法數 i的個數 此值設為變數num 如b 2 前面構造成2大小的方法數 2的個數 然後就變成了求前面構造成i大小的方法數的問題 這個就是01揹包 a 陣列為物品 價值均為1 重量為a i 所以我們有公...

CodeForce961E 思維加樹狀陣列

一看這種題就知道用樹狀陣列 一開始推錯了 後來才發現一開始的演算法有問題 其實不是太難吧 不太明白為什麼是e題 需要一點點思維 有一點樹狀陣列求逆序對的感覺 ac includeusing namespace std typedef long long ll ll n const ll n 4e5 ...