回歸第八題

2022-09-14 11:24:08 字數 1428 閱讀 9713

無向圖縮點,不知道為啥我寫tarjan就是過不了

注意最後一定要把縮點後的大小按照從大到小開始刪邊

比如說你刪4條,在乙個環中可以另外得到3個分量,但是如果放在兩個環裡面分別為刪兩邊,則總和只能得到2個分量

我的**只能過80的點(我真的盡力了,現在晚上1.55我困得喲死)

#includeusing namespace std;

#define lowbit(x) x&(-x)

#define ll long long

const int maxn=1e6+5;

vectorq[maxn];

int n,m,k,st,cnt,sz;

int a[maxn],b[maxn],s[maxn],dfn[maxn],low[maxn],stk[maxn],sum[maxn];

void dfs(int now,int fa)

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

if(!dfn[i])dfs(i,i);

int tt=0;

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

if(s[a[i]]!=s[b[i]])

tt++;

int tot=sz-tt;

if(k<=tt)

cout<=1;i--)

k-=sum[i];

if(k<=0)break;

} cout正確code:

#include #include #define maxn 4000010

struct edge e[maxn];

int head[maxn], tot = 0;

void add_edge(int u, int v)

int dis[maxn], circle[maxn], cnt = 0, size = 0;

void dfs(int node, int fa) else if (dis[y] < dis[node] + 1)

}}int main()

int kuai = 0;

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

}if (m - size >= k)

std::sort(circle + 1, circle + 1 + cnt);

int ans = m - size + kuai; k -= m - size;

for (int i = cnt; i >= 1; i--) else

k -= circle[i];

if (k <= 0) break;

}printf("%d\n", ans);

return 0;

}

專題三 第八題

1.題目編號 1016 2.簡單題意 在乙個無限大的二維平面中,要求 1.每步只能移動乙個格 2.不能向後走 3.走過的格仔不能再走第二遍 由此求出走n次不同的方案數。3.解題思路形成過程 我先在稿紙上畫了畫走一步 走二步 走三步 走四步的不同方案數,分別為 3,7,17,41 猛的看並不能看出規律...

LeetCode第八題 Python版本

title leetcode no.8 categories tags 又是辛勤勞動的一天呢qwq。請你來實現乙個 atoi 函式,使其能將字串轉換成整數。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。接下來的轉化規則如下 如果第乙個非空字元為正或者負號時,則將該符...

第八屆藍橋杯第八題包子湊數

小明幾乎每天早晨都會在一家包子鋪吃早餐。他發現這家包子鋪有n種蒸籠,其中第i種蒸籠恰好能放ai個包子。每種蒸籠都有非常多籠,可以認為是無限籠。每當有顧客想買x個包子,賣包子的大叔就會迅速選出若干籠包子來,使得這若干籠中恰好一共有x個包子。比如一共有3種蒸籠,分別能放3 4和5個包子。當顧客想買11個...