codeforces #310 div1 A

时间:2023-03-08 20:37:12

首先我们考虑最暴力的拆解拼凑

显然拆分掉所有的链需要 n-m 次

之后拼凑需要 n-1 次

然后由题目规定可知:
只有从1出发且连续的链不用拆掉,其余的都必须拆掉(因为两个都套有娃娃的套娃不能组合)

我们只需要计算从1出发且连续的链的长度即可

设长度为L

则ans=(n-m)+(n-1)-(L-1)*2

这里的L-1是因为1并没有算入(n-m)+(n-1)中

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
using namespace std; int n,m,Num,x;
int ans; int main(){
scanf("%d%d",&n,&m);
ans=(n-1)+(n-m)+2;
for(int i=1;i<=m;++i){
scanf("%d",&Num);
bool f=true;
for(int j=1;j<=Num;++j){
scanf("%d",&x);
if(f&&x==j)ans=ans-2;
else f=false;
}
}printf("%d\n",ans);
return 0;
}