並且, 其中的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 ...