模擬賽01 總結
阿新 • • 發佈:2018-08-04
方法 求一個 判斷 至少 子圖 就會 單獨 問題: 。。
題解
1. 數對子
首先發現兩個數異或起來有奇數個1 的充要條件就是一個數有奇數個1,另一個有偶數個1
(這個性質我竟然沒發現。。。)
然後就轉化為求一堆區間的並中有多少個數二進制有奇數個1,多少個數二進制有偶數個1
先把區間離散化成$O(n)$個小區間 把每個區間變成一些小區間
然後只要能求一個區間裏有多少個二進制有奇數個1即可 這樣是$O(n^2)$
有兩種方法:
1、數位dp
2、考慮區間$[l,r]$ 我們只要計算$[1,l-1]$的值和$[1,r]$的值就可以了
發現(0,1),(2,3),(4,5)... 每一對數都是最後一位一個是0,一個是1
然後考慮區間$[1,l]$ 如果l是奇數 那麽一半對一半 否則單獨判斷l就好了
2.逆序對
一直在想偶數往奇數裏插的做法
沒有想過奇數往偶數插
結論:把每個奇數單獨考慮 這樣做出來的解一定可行
3.蓋房子
①有k個位置不能放(k≤8)(容斥,$2^k$)
②每行每列至少一個
③正負對角線至少一個(容斥,$2^2$)
④正好放n個
現在變成什麽問題:
一個格子圖,有一些格子放了東西,一些格子不能放東西,某些對角線不能放東西
先把對角線去掉
然後另一條對角線(如果還有)就會變得比較扭曲
然後對角線就解決了
模擬賽01 總結