1402 最大值 
题目来源: TopCoder
基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题

 收藏
 关注

一个N长的数组s[](注意这里的数组初始下标设为1,而不是0,即N个元素为s[1],s[2],...,s[N]),满足以下性质:
1)每个元素都是非负的整数,且s[1]=0;
2)任意两个相邻元素差值的绝对值不大于1,即| s[i]-s[i+1] |<=1;
3)对于部分特殊点xi,要求s[xi]<=ti(这样的特殊点一共M个);
问在以上约束下s[]中的最大值最大可能是多少?
Input
多组测试数据,第一行一个整数T,表示测试数据数量,1<=T<=5
每组测试数据有相同的结构构成:
第一行两个整数N,M,表示s[]的长度与特殊点的个数,其中1<=N<=100000,0<=M<=50.
之后M行,每行两个整数xi与ti,其中1<=xi<=N,0<=ti<=100000,且xi以增序给出。
Output
每组数据一行输出,即数组的可能最大值。
Input示例
3
10 2
3 1
8 1
100000 0
2718 5
1 100000
30 100000
400 100000
1300 100000
2500 100000
Output示例
3
99999
2717

nm算法可以过。先初始化a[i] = i-1 ,每输入一个一个xi 和 ti 就更新下a数组。当然也有O(n)和O(m)算法,
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int N = 1e5+10;
 4 int a[N], t, n, m, xi, ti;
 5 int main() {
 6     ios::sync_with_stdio(false);
 7     cin >> t;
 8     while(t--) {
 9         cin >> n >> m;
10         for(int i = 1; i <= n; i ++) a[i] = i-1;
11         for(int i = 0; i < m; i ++) {
12             cin >> xi >> ti;
13             if(ti >= xi-1) continue;
14             if(a[xi] > ti) {
15                 int j = 0;
16                 while(xi+j <= n) {
17                     if(a[xi+j] > ti+j) {
18                         a[xi+j] = ti+j;
19                     }
20                     j++;
21                 }
22                 j = 1;
23                 while(xi-j >= 1) {
24                     if(a[xi-j] > ti+j) {
25                         a[xi-j] = ti+j;
26                     }
27                     j++;
28                 }
29             }
30         }
31         int MAX = -1;
32         for(int i = 1; i <= n; i ++) MAX = max(MAX, a[i]);
33         printf("%d\n",MAX);
34     }
35     return 0;
36 }

转载于:https://www.cnblogs.com/xingkongyihao/p/8980747.html

51nod 1402最大值相关推荐

  1. 51nod 1402 最大值 3级算法题 排序后修改限制点 时间复杂度O(m^2)

    代码: 题意,第一个数为0,相邻的数相差0或者1,有一些点有限制,不大于给定值,求这组数中可能的最大的那个数. 这题我们看一个例子:第5个数的限制为2 1 2 3 4 5 6 7 8 9 0 1 2 ...

  2. linux 通配符 正则表达式 区别,linux 正则表达式和通配符

    linux 正则表达式和通配符 通配符用于查找文件 包含三种:  * ? [] * 代表任意个任意字符 ? 代表任意一个字符 [] 代表中括号中的一个字符 正则表达式(正则是包含匹配,只要包含就可以匹 ...

  3. 51nod 1292 字符串中的最大值V2(后缀自动机)

    题意: 有一个字符串T.字符串S的F函数值可以如下计算:F(S) = L * S在T中出现的次数(L为字符串S的长度).求所有T的子串S中,函数F(S)的最大值. 题解: 求T的后缀自动机,然后所有每 ...

  4. 51nod 1270 数组的最大代价

    1270 数组的最大代价 题目来源: HackerRank 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 数组A包含N个元素A1, A2......AN.数组B包 ...

  5. 51Nod 1640 - 天气晴朗的魔法(最小生成树变形)

    题目链接 http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1640 [题目描述] 这样阴沉的天气持续下去,我们不免担心起他的 ...

  6. 51Nod 1102 面积最大的矩形 +1272 最大距离 单调栈

    51Nod 1102 面积最大的矩形 记笔记记笔记:对于区间最值与区间长度/和等的问题,用单调栈来维护区间端点. 这里来补一补单调栈和单调队列的基础知识: 单调栈:                   ...

  7. 51nod 1277 KMP 前缀出现次数

    51NOD 1277:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1277 跟HDU 6153还挺像的:http://w ...

  8. 51nod百度之星2016练习赛

    今天看了看51nod发现有这样一个练习赛,就做了做.因为实力太弱想不出E题,各位神犇勿D. (5.26UPD:E题想粗来了) A 区间交 不难发现若干线段[li,ri]的交就是[max(li),min ...

  9. 51Nod:活动安排问题之二(贪心)

    有若干个活动,第i个开始时间和结束时间是[Si,fi),同一个教室安排的活动之间不能交叠,求要安排所有活动,最少需要几个室? 输入 第一行一个正整数n (n <= 10000)代表活动的个数. ...

最新文章

  1. Exchage 2007 Client Application Functions(2) -- 如何收取邮件
  2. Centos 7 全网备份Rsync
  3. python中类方法与实例方法的区别-python中类方法,实例方法,静态方法的作用和区别...
  4. MYSQL的全表扫描,主键索引(聚集索引、第一索引),非主键索引(非聚集索引、第二索引),覆盖索引四种不同查询的分析...
  5. 关系数据库基础知识介绍
  6. 计算机一级考试教学设计,《全国计算机一级考试》教学设计说明.doc
  7. pbl和sbl_谈PBL和SBL教学法结合模式
  8. 独立站现在好不好做?个人适合做跨境电商独立站吗?
  9. 企业五大模式,多看两遍你就懂了
  10. ccs6.0 破解版安装教程 Code Composer Studio安装教程
  11. mac android 模拟器启动,react-native使用脚本启动android模拟器(macos)
  12. java打印32位二进制
  13. 区分Linux:eth0,eth1,eth2,lo
  14. QQ音乐JS逆向分析参数,爬它,多图预警
  15. 穿越晋商百年-体验非遗文化
  16. 华为云服务器快速迁移方案(最多十几分钟)
  17. TensorFlow学习笔记(1)--TensorFlow简介,常用基本操作
  18. 【前端】html+css实现鼠标悬浮变色的按钮,消除加粗边框发生抖动现象的两种方法 hover【HTML+CSS+JavaScript(JS)】
  19. 多商户商城系统功能拆解13讲-平台端会员管理
  20. 多多情报通:拼多多虚假发货罚款是按什么罚款的?是由什么原因造成的?

热门文章

  1. bootstrap使用总结(导航在carousel居中之上)
  2. 大话设计模式读书笔记2----单一职责原则(SRP)
  3. OpenCV中对图像数据进行64F和8U转换的方法
  4. C++中为何析构函数总是虚函数?
  5. OVS端口镜像(十四)
  6. Drupal 网站漏洞修复以及网站安全防护加固方法
  7. js --- for in 和 for of
  8. 第五次作业——软件设计
  9. SQL Tuning 基础概述10
  10. QQGame防专线中断系统介绍