原创 G1. Playlist for Polycarp (easy version)(狀壓dp)

題目鏈接 類似的題  狀壓dp 這兩道題都是一樣的套路,通過狀壓dp將 n!優化到 2^n,相信你寫了上面那題,這題就很容易切掉了 #include<bits/stdc++.h> using namespace std; typedef

原创 BM板子

題目鏈接 #include<bits/stdc++.h> using namespace std; #define rep(i,a,n) for (int i=a;i<n;i++) //#define per(i,a,n) for (i

原创 Codeforces Round #590 (Div. 3) F. Yet Another Substring Reverse(狀壓dp)

題目鏈接 這題真沒想到狀壓dp可以寫,看了別人代碼纔看會的。 題意:給你一個只包含前20個英文字母的串。你可以執行一次操作,將這個串的任意子串翻轉一次。讓你求一個最長的沒有重複字母的字串。 題解:首先看到只有二十個英文字母,無腦上狀壓dp

原创 os——頁面淘汰算法

  地址映射過程中,若在頁面中發現所要訪問的頁面不在內存中,則產生缺頁中斷。當發生缺頁中斷時,如果操作系統內存中沒有空閒頁面,則操作系統必須在內存選擇一個頁面將其移出內存,以便爲即將調入的頁面讓出空間。而用來選擇淘汰哪一頁的規則叫做頁面置

原创 2018-2019 ACM-ICPC, Asia Jiaozuo Regional Contest F - Honeycomb(簡單最短路 + 噁心建圖)

題目鏈接 題意:在一個蜂巢裏,一隻小蜜蜂要從 S 點飛到 T 點。 題解:題目已經保證蜂巢的結構一定是樣例給定的框架,那麼我們可以給按照規律從左到右,從上到下給每個六邊形編號。再用bfs連邊,最後跑一遍最短路即可,思路簡單,只是連邊過程有

原创 2018 藍橋杯省賽 A 組模擬賽(一) F. 結果填空:鋪瓷磚(狀壓dp + dfs)

題目鏈接 題解:設dp[i][j] 表示 第 i 行 爲 j 狀態的方案數,這個j狀態是受上一行擺放情況的影響而來的。 #include<bits/stdc++.h> using namespace std; typedef long

原创 2018-2019 ACM-ICPC, Asia Nanjing Regional Contest G.Pyramid(找規律 + k階差分)

題目鏈接 題意:請看到題目那張圖。一個n階三角形,從中任選三個點,能構成三角形的方案數。 題解:先說說我找到的一個遞推的規律: 首先對於一個n階三角形,那麼它內部存在三個(n-1)階三角形,這三個三角形就會有重複的三個(n - 2)階的三

原创 2019牛客暑期多校訓練營(第七場)E.Find the median(權值線段樹 + 區間離散化)

題目鏈接 題意:這題就是先讓你套個公式把n個區間算出來,然後對於單個區間在序列里加上這個區間內所有數,然後再求此時序列的中位數。 題解:中位數實際上就是求整個序列第n/2大,考慮權值線段樹,但是因爲區間範圍太大,所以要對區間進行離散化。

原创 Codeforces Round #590 (Div. 3) - E. Special Permutations (補題)

題目鏈接 這題賽後看了一下,挺水的,十分鐘出思路。然後自己傻逼了,竟然套了一個線段樹去寫,強行提高時間複雜度,其實差分一下就好了。 題意: 定義這樣一個排列 pi(n),表示將1 ~ n 這個排列的 第 i 個元素放到序列最前面,形成一個

原创 Codeforces Round #589 (Div. 2) E. Another Filling the Grid (dp + 容斥)

題目鏈接 題意:給你一個n * n 矩形,每個格子可以填一個小於等於k的數,要求每一行每一列都至少有一個1,求方案數。 題解:這題難點在於怎麼設狀態轉移方程,以及怎麼轉移,總之就是很難qwq 設dp[i][j] 表示在第i行,有j列已經有

原创 P2704 [NOI2001]炮兵陣地(狀壓dp)

題目鏈接 題解:這題其實會狀壓dp就很簡單了,只是限制條件有點多。 先預處理出一行的每一個合法的狀態,這個基本操作,左移一位,兩位,右移一位,兩位,判斷一下就好了。 設dp[i][j][k],意思是在第i行,第i行的狀態爲j,第i - 1

原创 D. Strange Device:巧妙的交互題

題目鏈接 題目大意:有一個長度爲n的隱藏數組a,其中元素兩兩不同。你有一臺機器可以最多詢問n次,每次可以向這個機器輸入k個數,這些數是下標(範圍1到n)。而機器會返回這些數中第m大的數的值,以及他的下標。已知k,求m。 題解:其實解法在樣

原创 A1951 AC Challenge(狀壓dp)

題目鏈接 題意:有n個題目,每分鐘可以做一個題目,做一些特點題目之前要把規定的題目做了才能做,每個題目能做的貢獻是 T * a + b T是做這個題目的時間。 題解:這題轉移簡單,就是預處理有些麻煩。 #include<bits/std

原创 P2622 關燈問題II(狀壓dp)

題目鏈接 題解:這題跑一下bfs就好了,用一個數x表示此時n盞燈的狀態,二進制爲 1 表示燈開。所以最後只要判斷x爲0,所有燈就關了。 #include<bits/stdc++.h> using namespace std; const

原创 vijos 1456 最小總代價(狀壓dp)

題目鏈接 題解:這題就是普通的狀壓dp 設 二維dp[i][j] 表示爲 在i狀態下 物品在第j個人手上的最小代價花費。 初始化要注意一下。 #include<bits/stdc++.h> using namespace std; co