結果
問題 | No.1900 Don't be Powers of 2 |
ユーザー |
![]() |
提出日時 | 2022-04-08 21:52:33 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 68 ms / 2,000 ms |
コード長 | 690 bytes |
コンパイル時間 | 3,924 ms |
コンパイル使用メモリ | 258,016 KB |
最終ジャッジ日時 | 2025-01-28 16:05:14 |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 42 |
ソースコード
#include <stdio.h> #include <bits/stdc++.h> #include <atcoder/all> using namespace atcoder; using mint = modint998244353; using namespace std; #define rep(i,n) for(int i=0;i<(n);i++) #define Inf 1000000001 int main(){ int n; cin>>n; vector<vector<int>> a(2); rep(i,n){ int aa; cin>>aa; a[__builtin_popcount(aa)%2].push_back(aa); } mf_graph<int> G(n+2); int s = n,t = n+1; rep(i,a[0].size()){ rep(j,a[1].size()){ if(__builtin_popcount((a[0][i]^a[1][j]))==1)G.add_edge(i,a[0].size()+j,1); } } rep(i,a[0].size()){ G.add_edge(s,i,1); } rep(i,a[1].size()){ G.add_edge(a[0].size()+i,t,1); } int ans = n; ans -= G.flow(s,t); cout<<ans<<endl; return 0; }