小a終於來到了最後一題。小明翻找自己的揹包,發現了很多能夠提公升自己能力值的藥水。小a共發現了n種藥水,第i種藥水有ai瓶,使用後能使能力值加bi。但相同種類的藥水,是不能連續使用的。小a覺得自己至少將能力值提公升x(x>=1),才有把握ak這場新生賽。藥水的味道並不好,小明想盡量少的使用藥水。你能告訴小a,他至少使用多少瓶藥水, 才能使自己的能力提公升至少x?
//#include
//#pragma gcc optimize(2)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define go(i, l, r) for(ll i = (l), i##end = (ll)(r); i <= i##end; ++i)
#define god(i, r, l) for(ll i = (r), i##end = (ll)(l); i >= i##end; --i)
#define ios ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define debug_in freopen("in.txt","r",stdin)
#define debug_out freopen("out.txt","w",stdout);
#define pb push_back
#define all(x) x.begin(),x.end()
#define fs first
#define sc second
using
namespace std;
typedef
long
long ll;
typedef
unsigned
long
long ull;
typedef __int128 bigint;
typedef pair pii;
const ll inf_int =
1e9+10;
const ll inf_ll =
1e17
;void
read
(int
&x)void
read
(ll &x)
template
<
classh,
class..
. t>
void
read
(h& h, t&..
. t)
voidpt(
)template
<
classh,
class..
. t>
void
pt(h h,t.
.. t)
//--------------------------------------------
const
int maxn =
1e6+10;
ll n,x;
struct node
}arr[maxn]
;ll judge
(ll mid));
curx -
= cnt * y;
left -
= cnt;
if(left ==0)
break;}
if(left >0)
return1;
else
if(curx <=0)
return2;
else
return0;
}ll solve()
printf
("%lld\n"
,ans);}
intmain()
;}solve()
;return0;
}``
魔法水 二分
description 行c列的網格s 每個小格仔要麼有乙個需要去打敗的匈牙利樹蜂龍,要麼是他的老師斯內普離開他時留下的一瓶魔法藥水。有龍的格仔 i,j 需要花費 s i j 的力量點,而有魔法藥水的格仔 i,j 可以恢復哈利波特 s i j 的力量。如果哈利波特的力量在任何時候掉到了0 或更少,那...
bzoj3343 教主的魔法 分塊 二分)
原題位址 題意 由不超過1000的正整數組成的序列,標號1,2,3 n。教主的魔法 有m個詢問或操作,每次操作可以把閉區間 l,r 1 l r n 內的數全部加上乙個整數w,每次詢問閉區間 l,r 內有多少數大於等於c。資料範圍 n 1000000,q 3000,1 w 1000,1 c 1,000...
P7287 EZEC 5 魔法 貪心 二分
一開想列舉答案區間 l,r l,r l,r 發現這樣列舉會炸。正解是列舉操作次數,而且注意到最優的操作肯定是先 再乘的。所以我們可以列舉乘的次數,然後二分加的次數,至於找最大區間就可以貪心,o n o n o n 求出最大欄位和即可。注意二分的下界是0,上界不要太大,不然會爆lon glon glo...