NOIOL2022T2 討論(思維)

2022-10-09 10:09:13 字數 971 閱讀 2385

我們考慮什麼時候不存在合法集合對。

兩個集合不合法當且僅當他們有包含關係或無交集。我們考慮對集合排序,這樣若 \(b⊆c,c⊆a\),那麼有 \(b⊆a\)。這顯然。所以排序可以簡化計算。

我們從小到大列舉一遍,把現在所有掃過了的,包含元素 \(i\) 的最大集合標記到 \(i\) 上。每次我們檢查乙個新的集合,我們只需要驗證是否對於 \(i\in s\),\(i\) 標記的集合的所有元素都在 \(s\) 中。這掃一遍即可驗證。若存在乙個標記不滿足條件,那麼這個集合和 \(s\) 就滿足題目要求,輸出即可。

我們的時間複雜度來到了 \(o(n\log n)\),瓶頸是排序。這個複雜度已經可以通過了。

但是我們可以用桶排序優化這個程序,複雜度來到 \(o(n+m)\) 。

//don't act like a loser.

//this code is written by huayucaiji

//you can only use the code for studying or finding mistakes

//or,you'll be punished by sakyamuni!!!

#includeusing namespace std;

int read()

while(ch>='0'&&ch<='9')

return f*x;

}char read_char()

return ch;

}const int maxn=1e6+10;

int n;

int inc[maxn],sz[maxn],bel[maxn];

vectors[maxn],buc[maxn];

void work()

buc[sz[i]].push_back(i); }

for(int i=1;i<=n;i++)

return 0;

}

2 02 理解查詢模型

示例 select name from users where age 10 可以形象的看作是下面這樣 let arr let users users.foreach item 是指列與列之間進行運算得出的結果,叫做廣義投影 因為null 表達的意思是 空 null null false null ...

CI20 2 洗牌演算法

實現乙個方法,對一副牌 52張 進行洗牌,要求洗出的52 組合是的等概率的,即每種組合的概率為1 52 假設已經有乙個完美的隨機數生成器。思路 思路比較直觀,第一次從52張牌中隨機取一張出來,概率為1 52 第二次從剩下的51張隨機取一張出來,概率為1 51 以此類推最終的概率就是1 52 接下來是...

axp202電源管理

問題 充電電流被限制,導致充電時間過長。版本分支 android4.3 master 復現問題,檢測電流變化,發現機器在深度休眠後電流會由原來的1.2a變成0.5a。猜測 可能是由於充電電流過小導致充電時間過長。echo 30 sys class axppower axpreg cat sys cl...