小Y寫文章

2021-08-19 03:21:54 字數 1608 閱讀 3068

時間限制:c/c++ 2秒,其他語言4秒

空間限制:c/c++ 131072k,其他語言262144k

64bit io format: %lld

小y寫了一篇文章,他對自己的文筆很有自信,尤其是自己總結出了一套計算文章通順性的公式。

文章共n段,對於文章的每一段小y對它都能計算出乙個估值

多組資料,第一行有乙個正整數之後有t組資料,每組資料第一行有兩個整數

接著有兩行,其中第一行有n個正整數

第二行有m個正整數

對於每組資料,輸出乙個整數表示求出的最小不連貫值。
示例1

2

4 31 6 5 2

3 1 4

4 21 2 4 3

10 10

3

7

第一組樣例方案可以是 (1) 1 (4) 6 5 (3) 2

第二組樣例方案可以是 1 2 4 (10) 3 (10)

解題思路:網路流,二分答案。可以考慮為有n+1個空位,需要m個物品去填充。如果某個物品可以放在某個位置,就連邊,容量為 1。需要額外增加乙個節點,如果某個位置可以不放物品,這個節點就和那個位置連邊。看看網路最大流是不是為n+1即可。如果是,則說明存在放置的方案

#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;

#define ll long long

const int inf = 0x3f3f3f3f;

#define maxn 500

struct node

edge[maxn * maxn];

int nt[maxn], s[maxn], d[maxn], visit[maxn];

int a[maxn], b[maxn];

int cnt, n, m;

void init()

void add(int u, int v, int c)

bool bfs(int ss, int ee)}}

return d[ee];}

int dfs(int x, int exp, int ee)

}if (!flow) d[x] = 0;

return flow;}

int dinic_flow(int ss, int ee)

return ans;}

int check(int x)

else if (j < n)

else}}

for (int j = 0; j <= n; j++) add(j + 1 + m, n + m + 2, 1);

if (dinic_flow(0, n + m + 2) == n + 1) return 1;

return 0;}

int main()

printf("%d\n", ans);

}return 0;

}

上海高校金馬五校賽 J 小y寫文章

傳送門 題意 太懶了,去原題看吧。題解 最大值最小,明顯的二分痕跡,於是果斷二分最大值。check的話,可以比較明顯看出是乙個匹配問題,n個數字,共產生了n 1個空位,現在有m個數字要全部填進去,我們可以nm的建立數字 空位的邊,然後單獨再考慮一下最前最後兩個空位,但是這樣的匹配是n 1和m匹配,不...

寫文章的「技巧」

科研的一大任務就是寫文章。寫文章其實也不僅僅是把做好的成果 寫 出來而已。寫作的過程其實也是理清和完善自己思維的過程。一篇文章從開始寫,到最後完稿,發表,可能會變得與最開始想法大不一樣。這個過程其實也很有趣的。最近寫了一篇英文期刊 又開始搞畢設。這裡總結一些寫文章的 技巧 吧。千萬不要想當然地覺得自...

使用Markdown寫文章

markdown是一種可以使用普通文字編輯器編寫的標記語言,通過簡單的標記語法,它可以使普通文字內容具有一定的格式。markdown具有一系列衍生版本,用於擴充套件markdown的功能 如 腳注 內嵌html等等 這些功能原初的markdown尚不具備,它們能讓markdown轉換成更多的格式,例...