• cf 556C Case of Matryoshkas


    http://codeforces.com/contest/556/problem/C

    果然一晚上不睡觉会导致读错题么...

    需要注意的是 如果有一个是 1 2 4 6  那么 1,2是不必拆开的....

    然后我们发现,只有以1为开始且连续的套娃不必拆开....

    可以先假设所有都需要拆开,那么一共需要 2*n-k-1次

    然后如果有以1为开始连续的,拆的时候少拆一次,装的时候少装一次,所以ans=ans-2

    但是需要注意的是....如果只有一个1,比如1 3 5  也算成了长度为1的以1开始连续的,但是这并没有什么卵用....所以最后答案记得ans+2

    /*************************************************************************
        > File Name: code/cf/556C.cpp
        > Author: 111qqz
        > Email: rkz2013@126.com 
        > Created Time: 2015年07月12日 星期日 10时24分54秒
     ************************************************************************/
    
    #include<iostream>
    #include<iomanip>
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    #include<cstring>
    #include<string>
    #include<map>
    #include<set>
    #include<queue>
    #include<vector>
    #include<stack>
    using namespace std;
    typedef long long LL;
    typedef unsigned long long ULL;
    const int N=1E5+7;
    int a[N],m[N];
    LL n,k,ans;
    int main()
    {
        cin>>n>>k;
        ans = 2*n-k+1;
        for (int i = 0 ; i < k ; i++ )
        {
          scanf("%d",&m[i]);
          for (int j = 0 ; j < m[i];j++)
          {
            scanf("%d",&a[j]);
            if (a[j]==j+1)
                ans = ans -2;
    
          }
        }
        cout<<ans<<endl;
        return 0;
    }
  • 相关阅读:
    java字符串的遍历以及字符串中各类字符的统计
    Java Jvm运行机制原理
    为什么面试要问 hashmap 的原理
    HashMap的实现原理
    redis两种持久化方式的优缺点
    2018No-java面试知识
    从架构演进的角度聊聊spring cloud都做了些什么?
    MySQL索引优化
    2018java面试知识汇总
    多线程—7种同步方法
  • 原文地址:https://www.cnblogs.com/111qqz/p/4640717.html
Copyright © 2020-2023  润新知