2019杭電多校第六場

2022-07-15 14:00:19 字數 1597 閱讀 9531

1005傳送門

題意:乙個二維圖上有若干個點,每個點有乙個座標值(xi,yi),以及乙個價值(vi) ( -1e9<=xi,yi,vi<=1e9),求乙個價值和最大的矩形(只需輸出最大價值和)

題解:離散化後列舉上下邊界可以將二維圖降維為乙個求一維動態最大欄位和的問題,在橫軸上建立線段樹即可維護最大欄位和

#includeusing namespace std;

#define debug(x) cout<

int xx[maxn],yy[maxn];

void build(int rt,int l,int r)

int mid=(l+r)>>1;

build(rt<<1,l,mid);

build((rt<<1)|1,mid+1,r);

}void pushup(int rt)

void update(int rt,int l,int r,int x,ll val)

int mid=(l+r)>>1;

if(mid>=x)update(rt<<1,l,mid,x,val);

else update((rt<<1)|1,mid+1,r,x,val);

pushup(rt);

}ll query(int rt)

int main()

sort(xx+1,xx+1+n);

sort(yy+1,yy+1+n);

int siz1=unique(xx+1,xx+1+n)-(xx+1);

int siz2=unique(yy+1,yy+1+n)-(yy+1);

for(int i=1;i<=n;i++)

ll ans=0;

for(int i=1;i<=siz2;i++)

if(t1>(pos-1))&1)

else

}int main()

x/=2;

}if(dfs(9ll,0ll,ac))

else

}return 0;

}

1012傳送門

題意:給出乙個小頂堆,兩人輪流從葉子處取數同時刪除取走的葉子,求二者都最優情況下分別得到的總和

題解:大頂堆優先佇列

#includeusing namespace std;

//#define debug(x) cout<

int main()

for(int i=1;i<=n;i++)

printf("%lld %lld\n",s1,s2);

}return 0;

}

2019 杭電多校(第六場)

1005 snowy smile 線段樹 題意給你n個點 讓你畫個矩形 使矩形內所含點的權值和最大 必須有點 思路離散化 列舉矩形的左右區間 線段樹維護y座標的最大欄位和 複雜度 o n n lgn include using namespace std typedef long long ll c...

杭電多校第六場(IF)

題意 有命題 將 b 進製數y按位相加,迴圈無窮次,最終結果若 x 0,則有y x 0,反之不然 給出b和x,判斷命題是否成立 打表發現的b x 1時成立,看到有數論大佬推出來的 想看推導的右轉 includeusing namespace std typedef unsigned long lon...

20190807杭電多校第六場

賽中和隊友一直在搞乙個胡搞做法,艱難優化到本地跑10s,可惜始終過不了。最後只好補了題解做法。倒著刪除,用樹狀陣列求lis,維護一條當前的lis的路徑。若被刪除的數不在當前的lis中,則答案不變 否則,重新做一遍lis。據說因為lis的期望長度為sqrt n 所以被選中的概率是 ac include...