题意与分析(CodeForces 556C)

为了将所有\(n\)个娃娃编号递增地串在一起(原先是若干个串,每个串是递增的),

我们有两种操作:

  1. 拆出当前串中最大编号的娃娃(且一定是最右边的娃娃)。
  2. 连接一个单个的娃娃(不能和其他娃娃相连着的娃娃)。

问最少操作次数,使得所有娃娃串在一起。

这题当时我是写的相当的痛苦,因为不太擅长这种优雅的思维题QAQ

首先有一点可以知道,如果一串的开头不是1,那么它一定要被整个拆开,操作次数也就是个数-1——这个我花了好久才想到;而如果该串的起点是1,那么它只需要拆后面差值不为1(从那个开始到最后)即可。

然后再算上合并起来的花费即可。

代码

#include <bits/stdc++.h>
#define MP make_pair
#define PB emplace_back
#define fi first
#define se second
#define ZERO(x) memset((x), 0, sizeof(x))
#define ALL(x) (x).begin(),(x).end()
#define rep(i, a, b) for (repType i = (a); i <= (b); ++i)
#define per(i, a, b) for (repType i = (a); i >= (b); --i)
#define QUICKIO \
ios::sync_with_stdio(false); \
cin.tie(0); \
cout.tie(0);
using namespace std;
using ll=long long;
using repType=ll; vector<int> mat[100005];
int main()
{
int n,k; cin>>n>>k;
vector<pair<int,int> > vec;
int cnt=0;
rep(i,0,k-1)
{
int m; cin>>m;
rep(j,0,m-1)
{
int tmp; cin>>tmp;
mat[i].PB(tmp);
}
}
sort(ALL(vec));
int cocnt=0,ans=0;
for(int i=0; i<k; ++i)
{
rep(j,1,mat[i].size()-1)
{
if(mat[i][j]==j+1) ans++;
else break;
} }
cout<<(n-1-ans)*2-(k-1)<<endl;
return 0;
}

「日常训练」Case of Matryoshkas(Codeforces Round #310 Div. 2 C)的更多相关文章

  1. 「日常训练」Watering Flowers(Codeforces Round #340 Div.2 C)

    题意与分析 (CodeForces 617C) 题意是这样的:一个花圃中有若干花和两个喷泉,你可以调节水的压力使得两个喷泉各自分别以\(r_1\)和\(r_2\)为最远距离向外喷水.你需要调整\(r_ ...

  2. 「日常训练」Alternative Thinking(Codeforces Round #334 Div.2 C)

    题意与分析 (CodeForces - 603A) 这题真的做的我头疼的不得了,各种构造样例去分析性质... 题意是这样的:给出01字符串.可以在这个字符串中选择一个起点和一个终点使得这个连续区间内所 ...

  3. 「日常训练」More Cowbell(Codeforces Round #334 Div.2 B)

    题意与分析(CodeForces 604B) 题意是这样的:\(n\)个数字,\(k\)个盒子,把\(n\)个数放入\(k\)个盒子中,每个盒子最多只能放两个数字,问盒子容量的最小值是多少(水题) 不 ...

  4. 「日常训练」Ice Cave(Codeforces Round 301 Div.2 C)

    题意与分析(CodeForces 540C) 这题坑惨了我....我和一道经典的bfs题混淆了,这题比那题简单. 那题大概是这样的,一个冰塔,第一次踩某块会碎,第二次踩碎的会掉落.然后求可行解. 但是 ...

  5. 「日常训练」School Marks(Codeforces Round 301 Div.2 B)

    题意与分析(CodeForces 540B) 题意大概是这样的,有一个考试鬼才能够随心所欲的控制自己的考试分数,但是有两个限制,第一总分不能超过一个数,不然就会被班里学生群嘲:第二分数的中位数(科目数 ...

  6. 「日常训练」The Intriguing Obsession(CodeForces Round #439 Div.2 C)

    2018年11月30日更新,补充了一些思考. 题意(CodeForces 869C) 三堆点,每堆一种颜色:连接的要求是同色不能相邻或距离必须至少3.问对整个图有几种连接方法,对一个数取模. 解析 要 ...

  7. 「日常训练」Regular Bridge(Codeforces Round 306 Div.2 D)

    题意与分析 图论基础+思维题. 代码 #include <bits/stdc++.h> #define MP make_pair #define PB emplace_back #defi ...

  8. 「日常训练」Two Substrings(Codeforces Round 306 Div.2 A)

    题意与分析 一道非常坑的水题.分析醒了补. 代码 #include <bits/stdc++.h> #define MP make_pair #define PB emplace_back ...

  9. 「专题训练」Hard problem(Codeforces Round #367 Div. 2 C)

    题意与分析 题意:给出\(n\)个字符串,可以反转任意串,反转每个串都有其对应的花费\(c_i\).经过操作后是否能满足字符串\(\forall i \in [1,n] \text{且} i \in ...

随机推荐

  1. MaBatis(5)输入/输出映射

    本次全部学习内容:MyBatisLearning   输入映射: 通过parameType指定输入参数的类型,类型可以是简单类型,hashmap,pojo等     传递pojo的包装对象 需求: 即 ...

  2. $.ajax方法success方法窗口弹不出

  3. 【题解】洛谷P1074 [NOIP2009TG] 靶形数独(DFS+剪枝)

    洛谷P1074:https://www.luogu.org/problemnew/show/P1074 思路 这道题一看就是DFS 打一个分数表方便后面算分 我用x y z数组分别表示行 列 宫 是否 ...

  4. HDU 1024 Max Sum Plus Plus(m个子段的最大子段和)

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1024 Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/ ...

  5. hibernateDAO层基本的增删改查

    完整的学习项目放在了我的github上,是一个半成品的在线音乐网站. hibernate版本1.4 下面是userDAO 即对user表进行增删改查 package DAO; import java. ...

  6. oracle静默安装

    RHEL6+oracle11.2 无界面化命令安装如下: 1.所需安装软件包检查: yum install binutils-2.* compat-libcap1* compat-libstdc++- ...

  7. 干货分享:QQ群排名霸屏优化规则靠前的新技术

    谈起QQ群排名的优化规则,很多人又爱又恨,原因很简单,爱他的都是引流效果是非常好的,通过关键词搜索排名好的技术,能排到全国默认前三,叫人怎能不爱他,恨的原因也恨简单,无论你的群完善的再怎么好,好像都无 ...

  8. 关于instanceof的使用

    测试单独一个类: <?php class A { } $a = new A(); if($a instanceof A){ echo "对象\$a实现了A类"; } 当一个子 ...

  9. Delphi7 GDI+学习

    Delphi7自带的绘图有锯齿,所以要学习GDI+ 主要是从这个网站学习 http://www.bianceng.com/Programming/Delphi/201212/34691.htm 相关控 ...

  10. hive 学习系列六 hive 去重办法的思考

    方法1,建立临时表,利用hive的collect_set 进行去重. create table if not exists tubutest ( name1 string, name2 string ...