涼心的比賽 一 補題

2021-10-02 02:54:17 字數 2087 閱讀 3704

題目鏈結

題意:有n個物品,能進行a次操作一和b次操作二,每個物品有乙個hp和damage,操作一為把某個物品的hp變為原來的兩倍,操作二為把某個物品的hp賦值給它的damage,問這n個物品的damage的總和最大是多少。

思路:證明出來a操作應該都使用給同乙個物品最優,然後按b操作的最優方案排序,列舉使用a操作

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

#define inf 0x7fffffff

typedef

long

long ll;

const

int n=

220000

;int n,a,b;

struct nodef[n]

;ll ans,s;

intcmp

(node x,node y)

intmain()

sort

(f+1

,f+1

+n,cmp)

; ll sum=0;

for(

int i=

1;i<=b;i++

)sum+

=max

(f[i]

.hp,f[i]

.dmg)

;for

(int i=b+

1;i<=n;i++

)sum+

=f[i]

.dmg;

ans=sum;

for(

int i=

1;i<=b;i++

)ans=

max(ans,sum-

max(f[i]

.hp,f[i]

.dmg)

+(f[i]

.hp

max(f[b]

.hp,f[b]

.dmg)

+f[b]

.dmg;

for(

int i=b+

1;i<=n&&b;i++

)ans=

max(ans,sum-f[i]

.dmg+

(f[i]

.hp

題意:通過圓心座標(x1,y1)和半徑r給定乙個大的圓形範圍和乙個點(x2,y2),找乙個圓形範圍使其不包含點(x2,y2)和大圓外任意點。

思路:找內切圓,半徑為 dis[(x1,y1),(x2,y2)]+r

注意:若(x1,y1)和(x2,y2)重合,不包含點(x2,y2)的最大內切圓的半徑只能為r/2

#include

using namespace std;

#define inf 0x7fffffff

typedef

long

long ll;

double x1,x2,y1_,y2_,r,r,x,y;

double

dis(

double x1,

double y1_,

double x2,

double y2_)

intmain()

if(d==0)

r=d+r;

x=x2+

(x1-x2)

/d*r;

y=y2_+

(y1_-y2_)

/d*r;

x=(x+x2)/2

;y=(y+y2_)/2

; r/=2

;printf

("%.16lf %.16lf %.16lf"

,x,y,r)

;}

QLU 涼心的比賽(一)補題

b 線段的包含關係 題目大意 給定乙個序列a1,a2,an,乙個編號為1到n的一維判斷,要求找到兩個不同的索引i和j,使ai位於aj內。l1,r1 位於 l2,r2 內,前提是 l1 l2,r1 r2。要求列印索引i和j。如果有多個答案,列印其中任何乙個即可。如果沒有答案,列印 1 1。解題思路 直...

新生賽002(涼心的比賽)補題

這次又寫了簽到題 codeforces 976a 題幹傳送門 題意 其實只需要得出0和1的數目 然後輸出乙個1和所有的0即可 include include include include using namespace std int n string s int main str maxn bo...

涼心的比賽(一)

線段包含關係 這個題有點遺憾,因為語言設定問題一直沒有過,思路 將各個線段如果右端點不相等就按照右端點小的優先排序,如果右端點相等就按照左端點大的排序,這樣就保證了排序出來的結果上乙個的範圍總比下乙個的大,所以在最後只需要比較上乙個與下乙個是否符合條件即可。include include inclu...