Mac電腦無法從Photoshop 2020作為外掛訪問DeNoise AI的解決辦法
阿新 • • 發佈:2022-03-01
本場考試洛谷難度評級最弱的一道,然而考場上只是敲了個暴力,就特別離譜。總結下來應該是我練題不夠,畢竟二分圖到現在為止還是隻敲過模板,於是遇到稍微有點變通的題目就不會做了,這一點以後一定要彌補回來。
說回題目本身。這道題有一個限制,即每個武器只能被使用一次,而又因為每個武力值也只會使用一次,這就構成了一個一一對應的關係,於是乎題目要求就變成了一個求最大匹配數的問題。又由於顯然武器集合與武力值集合並無交集,便可以抽象成二分圖後用最大匹配來求解。然後就是要注意由於需要連續的一些數,我們應該從小到大依次列舉武力值,如果一個點時無法增廣,退出迴圈即可,這是唯一與模板不同的地方。複雜度鬼知道,能過就行。
一如既往,萬事勝意#include<cstdio> //#define zczc const int N=1000010; const int M=1010; inline void read(int &wh){ wh=0;int f=1;char w=getchar(); while(w<'0'||w>'9'){if(w=='-')f=-1;w=getchar();} while(w>='0'&&w<='9'){wh=wh*10+w-'0';w=getchar();} wh*=f;return; } int m,a,b; struct edge{ int t,next; }e[N<<1]; int esum,head[N<<1]; inline void add(int fr,int to){ e[++esum]=(edge){to,head[fr]};head[fr]=esum; } int c[N<<1],vis[N<<1],nt; inline bool dfs(int wh){ for(int i=head[wh],th;i;i=e[i].next){ if(vis[th=e[i].t]==nt)continue;vis[th]=nt; //printf("now:%d %d %d\n",wh,th-N,c[th]); if(c[th]==0||dfs(c[th]))return c[th]=wh,true; } return false; } signed main(){ #ifdef zczc freopen("in.txt","r",stdin); #endif read(m); for(int i=1;i<=m;i++){ read(a);read(b); add(a,N+i);add(b,N+i); } int ans=0; for(int i=1;;i++){ //printf("ans:%d %d\n",i,ans); ++nt; if(dfs(i))ans++; else break; } printf("%d\n",ans); return 0; }