/*这题弄懂的过程可谓相当艰难...为了弄懂差分法和线段扫描法,我大约参考了四串代码(当然,其实看代码不是最难的,最难的是,我知道代码的语义,可是不知道为什么要那样写...)下面贴四个blog,里面的解析,对于理解代码和理解这两种方法,非常重要!!http://blog.csdn.net/h1021456873/article/details/53240994
http://www.cnblogs.com/agenthtb/p/5998819.html
http://www.cnblogs.com/iRedBean/p/5975561.html
http://blog.csdn.net/morejarphone/article/details/52852161以及,这题后来还RE了几次,发现是我太粗心了,a数组和d数组的维度是不同的,前者约是n的上限,后者约是c的上限,两个上限不同,就算要以一种代替所有,也应该选c的上限,才不会越界...可因为我的粗心,运行错误了几次,戒之慎勿忘!!!
*/
#include <bits/stdc++.h>
using namespace std;
const int N = 5e5 + 10;
const int M = 1e6 + 10;
vector<int>a[N];
int d[M];void work(int l, int r)
{d[l]++;d[r + 1]--;
}int main()
{cin.tie(0);cin.sync_with_stdio(false);memset(d, 0, sizeof(d));int n, c, m, tp, i, j, x, y;cin >> n >> c;int sum = 0, flag = 1;for ( i = 1; i <= n; i++ ){a[i].clear();cin >> m;a[i].push_back(m);for ( j = 1; j <= a[i][0]; j++ ){cin >> m; a[i].push_back(m);}}for ( i = 1; i < n; i++ ){tp = min(a[i][0], a[i+1][0]);for ( j = 1; j <= tp; j++){x = a[i][j];y = a[i + 1][j];if ( x != y) break;}if (j > tp && a[i][0] > a[i+1][0]){cout << -1 << endl;return 0;}if ( y > x ){work(0, c - y);work(c + 1 - x, c - 1);}else if ( x > y ){work(c + 1 - x, c - y );}else work(0, c - 1);}for (int i = 0; i < c; i++){sum += d[i];if ( sum == n - 1){cout << i << endl;flag = 0; break;}}if (flag)cout << -1 << endl;     return 0;
}

转载于:https://www.cnblogs.com/mofushaohua/p/7789497.html

CodeForces - 731D 80-th Level Archeology相关推荐

  1. 【codeforces 731D】80-th Level Archeology

    [题目链接]:http://codeforces.com/contest/731/problem/D [题意] 给你n个象形文; 每个象形文由l[i]个数字组成; 你可以把所有的组成象形文的数字同时增 ...

  2. CodeForces 731 D.80-th Level Archeology(水~)

    Description 有n个序列,每个序列的每个元素都是1~c中的某个数,每次操作可以所有小于c的数加一,c变成1,问最少经过多少次操作可以让这n个序列按字典序是升序的 Input 第一行两个整数n ...

  3. Codeforces Round #376 (Div. 2) D. 80-th Level Archeology —— 差分法 + 线段扫描法

    题目链接:http://codeforces.com/contest/731/problem/D D. 80-th Level Archeology time limit per test 2 sec ...

  4. 80-th Level Archeology(前缀和,区间交集)

    I - 80-th Level Archeology(前缀和,区间交集) CodeForces - 731D 题意: ​ 给出n个串,一共有c种字母编号为1-c.然后描述每一个串.每一次可以使得所有串 ...

  5. [CF731D]80-th Level Archeology

    80-th Level Archeology 题解 很明显,要使序列小于序列所需操作次数的区间一定是连续的,在1到n的环上连续. 于是,我们可以先地求出使前一个区间小于后一个区间的操作次数区间,然后通 ...

  6. 【codeforces 731D】【差分+线段扫描 思维题】80-th Level Archeology【给你n个word,现在要使得word按字典序排列,随便操作多少次,每次可以使每个word+1】

    传送门:http://codeforces.com/contest/731/problem/D 题意:给你n个word,每个word都有若干个字母,现在要使得从上到下的word都必须小于或等于下一个w ...

  7. CodeForces - 731D 80-th Level Archeology(线段树+暴力/差分)

    题目链接:点击查看 题目大意:给出 n 个数列,再给出一个模数 mod,每次操作可以将所有的数字进行:x = x %mod + 1 操作,问至少进行多少次操作,才能使得 n 个数列按照字典序非降序排列 ...

  8. CodeForces 731D 80-th Level Archeology

    区间并. 对于上下两个数字,如果不一样,那么可以计算出哪一段范围内可以保证字典序,并且后面所有位置都无需再考虑.对所有范围求交集就是答案了. 求交集写起来有点烦,直接对不可取的范围求并即可. #pra ...

  9. Codeforces Round #376 (Div. 2) D. 80-th Level Archeology

    原题网址:http://codeforces.com/contest/731/problem/D 对于相邻的两行,我们可以求出合法的答案区间,然后对所有的区间取一下区间并.因为只有最后一次询问,所以对 ...

最新文章

  1. SharePoint 2007图文开发教程(6)---实现Search Services
  2. GraphQL 配合 JWT 使用 —— Laravel RSS (二)
  3. 计算机电缆和控制电缆区别,动力电缆和控制电缆有啥区别?
  4. Codeforces Round #315 (Div. 2)
  5. hadoop2.0以后不需要借助cywin运行在Windows上
  6. (10)CSS 常用样式--盒模型扩展应用
  7. 汽车在哪扇门后面(博弈论的诡计)
  8. 从自建服务器到选择阿里云 慎重选择
  9. js 图片上传和二进制上传
  10. 从项目中由浅入深的学习vue,react,微信小程序和快应用(1)
  11. 居家生活|装修避免的坑
  12. 天耀18期 -09.数组【作业】.
  13. 三国杀Excel版–让你见证Excel的神奇
  14. 流媒体服务器,red5,EsayDSS,AdobeMediaServer5和阿里推流服务性能对比。flash播放器JWplayer CKplayers Aliplayer性能对比
  15. MyBatis_Learning_3.5.7
  16. python数据分析六个环节_安利6个珍藏的Python数据分析神器
  17. 架构师速成5.2-价值观和目标
  18. BIM模型一键输出 3D Tiles (for Cesium) 和 glTF/blg
  19. python中modify_modify setup 一直弹出最佳解决办法
  20. 在应用程序中将OJB作为一个存储层使用(二) (转)

热门文章

  1. 升级MIUI12.5增强版教程
  2. 第3章 软件测试方法--基于组合技术和组合优化的方法(决策表、因果图、场景测试)
  3. 微软Surface系列固件命名规则
  4. 常被忽视的基础PPT功能,也能做出酷炫特效
  5. 作为面试官,面试时可以问的问题
  6. MySQL 定时任务 重启失效
  7. 开门红!大年初一发《Science》,年纪轻轻已是第2篇!
  8. https 证书过期检测
  9. Java Map拆分成子Map
  10. Appium如何点击屏幕中央(iOS和android)