時間限制:c/c++ 2秒,其他語言4秒
空間限制:c/c++ 131072k,其他語言262144k
64bit io format: %lld
小y寫了一篇文章,他對自己的文筆很有自信,尤其是自己總結出了一套計算文章通順性的公式。
文章共n段,對於文章的每一段小y對它都能計算出乙個估值
多組資料,第一行有乙個正整數之後有t組資料,每組資料第一行有兩個整數接著有兩行,其中第一行有n個正整數
第二行有m個正整數
對於每組資料,輸出乙個整數表示求出的最小不連貫值。示例1
24 31 6 5 2
3 1 4
4 21 2 4 3
10 10
37
第一組樣例方案可以是 (1) 1 (4) 6 5 (3) 2解題思路:網路流,二分答案。可以考慮為有n+1個空位,需要m個物品去填充。如果某個物品可以放在某個位置,就連邊,容量為 1。需要額外增加乙個節點,如果某個位置可以不放物品,這個節點就和那個位置連邊。看看網路最大流是不是為n+1即可。如果是,則說明存在放置的方案第二組樣例方案可以是 1 2 4 (10) 3 (10)
#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轉換成更多的格式,例...