codeforces #310 div1 A

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

显然拆分掉所有的链需要 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;
}

  

posted @ 2016-04-08 11:53  _Vertical  阅读(125)  评论(0编辑  收藏  举报