题目链接:http://codeforces.com/contest/556/problem/C

题目意思:有 n 个数(1,2,...,n)组成 k 条链。第 i 条链由 mi 个数组成。每一秒只可以做其中一件事:(1)将链i连到只有一个数的链 j 中(链 i 的最大值比只由单个数组成的链 j 还要小);(2)将链上最大的数从链中分离。 然后我们最终是要得到一条1,2,3,。。。n。问最少需要连接的秒数。

  不难推出,我们需要找到编号为 1 的链包含多少个数,然后对于此链的其他数,我们需要先分离然后连接。其他链也需要先分离再连接,注意,对于某条含有 x 个数的链,分离的秒数为 x - 1,而连接的秒数为 x 。 那现在问题就转化为如何找出包含 1 的链最长为多少(数是连续的!)

  假设包含 1 的链为 cnt,那么最少的秒数应为 2(n - (k-1) - cnt) + (k-1) 。2(n - (k-1) - cnt) 这个表示所有需要分离和连接的总数,但由于每条链分离秒数是比连接的秒数少1的,所以需要加回 k -1 !

  

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdlib>
  4. #include <cstring>
  5. #include <algorithm>
  6. using namespace std;
  7.  
  8. inline int Getint()
  9. {
  10. char ch = getchar();
  11. while (ch < '' || ch > '')
  12. ch = getchar();
  13. int ret = ;
  14. while (ch >= '' && ch <= '') {
  15. ret = ret * + ch - '';
  16. ch = getchar();
  17. }
  18. return ret;
  19. }
  20.  
  21. int main()
  22. {
  23. #ifndef ONLINE_JUDGE
  24. freopen("in.txt", "r", stdin);
  25. #endif // ONLINE_JUDGE
  26.  
  27. int n, k, m, a;
  28. // while (scanf("%d%d", &n, &k) != EOF) {
  29. n = Getint(), k = Getint();
  30. int cc = ;
  31. for (int i = ; i < k; i++) {
  32. m = Getint(), a = Getint();
  33. int cnt = ;
  34. if (a == ) {
  35. cnt = ; // 序列第一个数就是 1 ,否则就是序中或序尾出现 1
  36. }
  37. for (int j = ; j <= m; j++) {
  38. a = Getint();
  39. if (cnt == j- && a == j) {
  40. cnt++;
  41. }
  42. }
  43. if (cnt) cc = cnt;
  44. }
  45. printf("%d\n", *(n-(k-)-cc)+(k-));
  46. // }
  47. return ;
  48. }

codeforces 556C. Case of Matryoshkas 解题报告的更多相关文章

  1. CodeForces - 556C Case of Matryoshkas

    //////////////////////////////////////////////////////////////////////////////////////////////////// ...

  2. CodeForces - 556C Case of Matryoshkas (水题)

    Andrewid the Android is a galaxy-famous detective. He is now investigating the case of vandalism at ...

  3. Codeforces Educational Round 92 赛后解题报告(A-G)

    Codeforces Educational Round 92 赛后解题报告 惨 huayucaiji 惨 A. LCM Problem 赛前:A题嘛,总归简单的咯 赛后:A题这种**题居然想了20m ...

  4. codeforces 476C.Dreamoon and Sums 解题报告

    题目链接:http://codeforces.com/problemset/problem/476/C 题目意思:给出两个数:a 和 b,要求算出 (x/b) / (x%b) == k,其中 k 的取 ...

  5. Codeforces Round #382 (Div. 2) 解题报告

    CF一如既往在深夜举行,我也一如既往在周三上午的C++课上进行了virtual participation.这次div2的题目除了E题都水的一塌糊涂,参赛时的E题最后也没有几个参赛者AC,排名又成为了 ...

  6. codeforces 518B. Tanya and Postcard 解题报告

    题目链接:http://codeforces.com/problemset/problem/518/B 题目意思:给出字符串 s 和 t,如果 t 中有跟 s 完全相同的字母,数量等于或者多过 s,就 ...

  7. codeforces 507B. Amr and Pins 解题报告

    题目链接:http://codeforces.com/problemset/problem/507/B 题目意思:给出圆的半径,以及圆心坐标和最终圆心要到达的坐标位置.问最少步数是多少.移动见下图.( ...

  8. codeforces 500B.New Year Permutation 解题报告

    题目链接:http://codeforces.com/problemset/problem/500/B 题目意思:给出一个含有 n 个数的排列:p1, p2, ..., pn-1, pn.紧接着是一个 ...

  9. codeforces B. Xenia and Ringroad 解题报告

    题目链接:http://codeforces.com/problemset/problem/339/B 题目理解不难,这句是解题的关键 In order to complete the i-th ta ...

随机推荐

  1. Object&&String学习

    Object类 列表项 String类 常用方法 构造方法 public String() public String(byte[] bytes) public String(byte[]bytes, ...

  2. HttpClient连接池的连接保持、超时和失效机制

    HTTP是一种无连接的事务协议,底层使用的还是TCP,连接池复用的就是TCP连接,目的就是在一个TCP连接上进行多次的HTTP请求从而提高性能.每次HTTP请求结束的时候,HttpClient会判断连 ...

  3. HDOJ 4734 F(x)

    数位DP.... F(x) Time Limit: 1000/500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  4. Lexicography(数学推论>>求按字典序排第k个排列)

    Lexicography Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%lld & %llu Submit  ...

  5. MySQL数据库的事务管理

    当前在开发ERP系统,使用到的数据库为Mysql.下面介绍下如何开启事务,以及事务隔离的机制 : 1. 检查当前数据库使用的存储引擎. show engines; 2. 修改前my.ini中的文件如下 ...

  6. Jetty安装

    下载jetty http://www.eclipse.org/jetty/  看好jdk 版本 安装 解压压缩包到指定目录,且将其目录路径定义为${JETTY_HOME} 进入${JETTY_HOME ...

  7. 大数据处理时用到maven的repository

    由于做数据处理时,经常遇到maven 下载依赖包错误,下面我将自己下载好的repository 分享下 里边包含:Hadoop ,storm ,sprk ,kafka ,等 压缩后500多M. htt ...

  8. Mac 用户组:staff、 wheel、admin 的区别

    所有的用户都属于 staff 组, 只有具有管理员性质的用户位于 wheel 组中. wheel 是一个特殊的用户组,该组的用户可以使用 su 切换到 root,而 staff 组是所有普通用户的集合 ...

  9. 【python网络编程】使用rsa加密算法模块模拟登录新浪微博

    一.基础知识 http://blog.csdn.net/pi9nc/article/details/9734437 二.模拟登录 因为上学期参加了一个大数据比赛,需要抓取数据,所以就想着写个爬虫抓取新 ...

  10. webrtc第一篇

    1.介绍 众所周知,浏览器本身不支持相互之间直接建立信道进行通信,都是通过服务器进行中转.比如现在有两个客户端,甲和乙,他们俩想要通信,首先需要甲和服务器.乙和服务器之间建立信道.甲给乙发送消息时,甲 ...