Jzoj5542 董先生的欽點

2022-05-09 14:27:07 字數 634 閱讀 3194

這道題在我做的前一天被wjw大佬壓中了,當時隨便腦洞了乙個做法

於是在比賽還剩3分鐘的時候我把它寫了一下就切了

考慮乙個集合s,f(s)=σsi 顯然我們將所有的f排序之後有乙個性質rank[f(s)]+rank[f(~s)]=2^n

那麼顯然,中位數就是將全集劃分為兩個盡可能平均的集合的較大一部分

我們考慮dp,f[i]=max(f[i-v[j]]+v[j]) ,答案即為f[s/2]

這樣顯然會超時,我們要用bitset來優化,方程為f[i]=f[i]|f[i<

#pragma gcc optimize("o3")

#pragma g++ optimize("o3")

#include

#include

#include

#include

using

namespace

std;

int n,v[2010],s,t;

bitset

<2000*1000> f;

int main()

554 磚牆(雜湊表)

你的面前有一堵矩形的 由 n 行磚塊組成的磚牆。這些磚塊高度相同 也就是乙個單位高 但是寬度不同。每一行磚塊的寬度之和相等。你現在要畫一條 自頂向下 的 穿過 最少 磚塊的垂線。如果你畫的線只是從磚塊的邊緣經過,就不算穿過這塊磚。你不能沿著牆的兩個垂直邊緣之一畫線,這樣顯然是沒有穿過一塊磚的。給你乙...

python學習 傳送檔案的554錯誤

解決方法 傳送的訊息體加入鍵值對 from x.com to x.com from smtplib import smtp from email.header import header from email.mime.text import mimetext from email.mime.ima...

LeetCode刷題(中等程度) 554 磚牆

你的面前有一堵矩形的 由多行磚塊組成的磚牆。這些磚塊高度相同但是寬度不同。你現在要畫一條自頂向下的 穿過最少磚塊的垂線。磚牆由行的列表表示。每一行都是乙個代表從左至右每塊磚的寬度的整數列表。如果你畫的線只是從磚塊的邊緣經過,就不算穿過這塊磚。你需要找出怎樣畫才能使這條線穿過的磚塊數量最少,並且返回穿...