原创 Codeforces 1198C Matching vs Independent Set

傳送門 思路: 找matching集合的方法就是貪心, 對於邊(u,v),如果u和v都沒被其他已在集合中的邊覆蓋,那麼將邊(u,v)加到集合中,最後判斷集合中的個數是否大於等於n,若大於等於n直接輸出其中n條邊即可.若小於n則一定存在一個

原创 Codeforces 1201D Treasure Hunting 動態規劃

傳送門 思路: dp[i][0]代表由原點到達第i行最左邊(y座標最小)所需要的最小步數, dp[i][1]代表由遠點到達第i行最右邊(y座標最大)所需要的最小步數. 第i行如何往第i+1行進行狀態轉移呢? 這裏拿從第i行最左邊出發爲例.

原创 Codeforces 1198D Rectangle Painting 1

傳送門 思路: 一個比較簡單的記憶化搜索,f[x][y][xx][yy]記錄塗白以(x,y)爲左上角且以(xx,yy)爲右下角的矩形的最小花費. #include <algorithm> #include <iostream> #inc

原创 CF 1198A MP3 離散化+前綴和

傳送門 思路:爲了讓改變的個數最小化,肯定是磁盤利用越多越好,於是每個數字可以用I*8/n位來表示,那麼表示的種類數就是2^k種.若2^k大於等於總種類數,直接輸出0即可.若小於,則利用前綴和(sum[i]代表1-i種數字總共有sum[i

原创 CF 1198B Welfare State 思維

傳送門 題意:給定n個數字,q次操作,操作分爲兩種(且稱之爲1類操作和2類操作),1 p x爲把a[p]改爲x, 2 x爲把數組中所有小於x的數字全部改爲x. 思路:對於有1類操作1 p x更新的p,我們只關心它最後一次的1類更新以及它最

原创 Kick Start 2019 Round D Latest Guests 隊列

Problem The city of Circleburg has a large circular street with N consulates along it. The consulates are numbered 1, 2

原创 Codeforces 1195E OpenStreetMap 單調棧

思路:對於某一行來說,我們只需要維護[1,b],[2,b+1],[3,b+2]...[m-b+1,m]的最小值,然後再對列進行維護即可,最後的矩陣的和就是答案。如何維護[1,b],[2,b+1],[3,b+2]...[m-b+1,m]的最

原创 Codeforces 1187E Tree Painting

傳送門 題意:給定一棵樹,確定一個根,使得所有子樹的大小之和最大 思路:設u是v的父親,設val爲以u爲根的子樹大小之和,那麼以v爲根的子樹大小之和爲val-siz[v]+(n-siz[v]),當根變成v時,siz[v]大小的子樹則消失,

原创 Codeforces 1187D Subarray Sorting 線段樹

傳送門 思路明天說. #include <algorithm> #include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #include <

原创 Codeforces 1185F Two Pizzas

傳送門 思路: 首先不難想到,每個人的喜好和每個pizza的成分都可以用一個長度爲9的01串表示,也就是用一個1~511之間的數字來表示. 然後對於具有相同數字表示(相同成分)的pizza,我們只需要記錄價格最小的即可.這樣,我們就把m個

原创 Codeforces Round #567 (Div. 2) D. Irrigation 離線+權值線段樹求第k大

傳送門 思路: 首先根據舉辦次數從小到大排序,然後對詢問進行離線(按照ki的權值從小到大排序), 對於每個k詢問,我們去看是否滿足cnt[i+1].num*i-sum[i]<=k, (sum[i]代表1到i的舉辦總次數,cnt[i+1].

原创 Codeforces Round #565 (Div. 3) D - Recover it!

傳送門 思路:每次考慮最大的數字即可。最大的數字如果是質數,那麼它肯定輸入後來附加到數組b的,那麼他在質數中的位置下標肯定就是數組a的元素。最大的數字如果不是質數,那麼他肯定在數組a,因爲它不可能是任何數的因子。   #include

原创 Codeforces Round #564 (Div. 2) D. Nauuo and Circle

傳送門 題意:圓上有n個座標,現在有n個結點形成了一棵樹,現在要把這n個結點指派到n個座標中,問有多少種指派方法,使得這棵樹的邊互不相交。 思路:考慮一個結點v,假設他有x個兒子以及它的父結點是u,那麼它與兒子的連線必須在線段uv的上方或

原创 Educational Codeforces Round 66 D. Array Splitting

傳送門 題意:給定一個數組a,將a分成k段,每一段都非空。其中如果一個數字a[i]在第j段中,那麼它的貢獻爲a[i]*j,現在需要最大化每個數字的貢獻之和。 思路:相當於在n-1個空中切k-1刀,設sum[i]爲i到n的後綴和。如果在a[

原创 codeforces 888D.Almost Identity Permutations

一道很簡單的數學組合題 直接上代碼#include<algorithm> #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #include<s