題目鏈結
一開始想的是雙指標去貪心,然後wa2wa了三發qaq
然後換了思路,士多啤梨果醬還用1,藍莓果醬用-1表示,那麼最終的結果就是現存果醬的總和為0。
並且考慮到左右剩餘的果醬一定是連續的,欸嘿嘿嘿,連續+和,然後就想到可以字首和的思路搞一搞。
左邊就是從1到n求出字首和,右邊n+1~2n求乙個字尾和,顯然就是對左邊任意乙個點的字首和去字尾和裡找與其和為0的點,但是暴力匹配o(n^2),考慮用map存下右邊的字尾和以及對應的剩餘果醬數。然後遍歷左邊字首和即可。(記得考慮任一側果醬數為0的情況)
**如下:
#include
using
namespace std;
typedef
long
long ll;
#define ios ios_base::sync_with_stdio(false);cin.tie(0);
#define maxn 200005
int a[maxn]
,s[maxn]
,b[maxn]
;map<
int,
int> mp;
intmain()
mp[0]
=0;for
(int j =
2*n; j >=n+1;
--j)
if(sum==
0)cout<<
0<
else
} cout<<
2*n-ans<
return0;
}
題目鏈結
很明顯對於任意點,只有取和不取兩種情況(取偶數次周圍情況不變,取n次與取n%2次效果一樣).
考慮每一條邊,如果是1,那麼兩端要麼取,要麼不取,如果是0,則只能取一端。想到這,就聯想到了關押罪犯的思路,乙個傳統並查集+乙個enemy陣列存敵人。邊權為0時,兩個端點互相存乙個enemy。
那麼就是隨便取乙個點,然後取所有和它父親一樣或敵人一樣的。
然後就~
猛男落淚.jpg
然後想到圖可能不是聯通的,需要把每個連通塊裡都任意取乙個點出來,然後神速寫了個dfs染色,結果還是wa43,然後今天早上被大佬指點,發現處理並查集的時候,任意兩個點如果父親相同(取的狀態相同),那麼也應該合併他們敵人的家族。
然後就ac了~
**如下
#include
using
namespace std;
typedef
long
long ll;
#define ios ios_base::sync_with_stdio(false);cin.tie(0);
#define maxn 105
#define for_(i,n) for(ll (i)=1;(i)<=(n);i++)
struct edge
;vector e;
set<
int> ans;
int f[maxn]
,enemy[maxn]
;int
findfa
(int x)
}void
mergefa
(int a,
int b)
}vector<
int> g[maxn]
;int col[maxn]
;void
dfs(
int x,
int fa,
int co)
}int
main()
);}for_
(i,n)
}for
(auto i:e)
elseif(
!enemy[u]
)enemy[u]
=findfa
(v);
else
mergefa
(enemy[u]
,v);if(
!enemy[v]
)enemy[v]
=findfa
(u);
else
mergefa
(enemy[v]
,u);}}
for_
(i,n)}}
for_
(i,n)ans.
insert
(col[i]);
set<
int> sum;
for(
auto i:ans)}}
cout<
size()
<
for(
auto i:sum)cout<
" ";
return0;
}
相比位運算的並查集的確多了不少碼~(原諒蒟蒻沒看懂取異或的並查集做法qaq) 每日一練 1
左連線 以左表為主,右表沒有的填null 公升序 倒序 order by預設公升序 order by xx desc 取最大值 max 函式,例如 select max hire date from employees limit 1,2和limit 1offset 2的含義 limit 1,2第乙...
Codeforces每日一練周賽 1 C G
include using namespace std typedef long long ll define ios ios base sync with stdio false cin.tie 0 define maxn 10005 define inf 1000000002 define fo...
爬蟲每日一練(1)
教程 爬取乙個套圖 加了防盜煉解決方法 coding utf 8 import requests from bs4 import beautifulsoup import os import sys if os.name nt print u 你正在使用win平台 else print u 你正在使...