博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces-940D. Alena And The Heater
阅读量:4619 次
发布时间:2019-06-09

本文共 1457 字,大约阅读时间需要 4 分钟。

给定n(5 ≤ n ≤ 105,接着给出长度为n的序列a和字符串b

 

b1 = b2 = b3 = b4 = 0.

For all 5 ≤ i ≤ n

  • bi = 0 if ai, ai - 1, ai - 2, ai - 3, ai - 4 > r and bi - 1 = bi - 2 = bi - 3 = bi - 4 = 1
  • bi= 1 if ai, ai - 1, ai - 2, ai - 3, ai - 4 < l and bi - 1 = bi - 2 = bi - 3 = bi - 4 = 0
  • bi = bi - 1 otherwise

则b中出现00001可确定l下界,11110可确定r上界

 

1 #include 
2 #include
3 #include
4 using namespace std; 5 6 const int maxn = 1e5 + 10; 7 int A[maxn]; 8 char S[maxn]; 9 int n;10 11 int _min(int i) {12 int t = A[i];13 for (int j = i - 1; j > i - 5; j--) {14 t = min(t, A[j]);15 }16 return t;17 }18 19 int _max(int i) {20 int t = A[i];21 for (int j = i - 1; j > i - 5; j--) {22 t = max(t, A[j]);23 }24 return t;25 }26 27 int main() {28 scanf("%d", &n);29 for (int i = 0; i < n; i++) scanf("%d", &A[i]);30 scanf("%s", S);31 int zero = 0, one = 0;32 int r = 1e9;33 int l = -r;34 for (int i = 0; i < n; i++) {35 if (S[i] == '0') {36 if (one >= 4) {37 r = min(r, _min(i) - 1);38 }39 one = 0;40 zero++;41 } else if (S[i] == '1') {42 if (zero >= 4) {43 l = max(l, _max(i) + 1);44 }45 zero = 0;46 one++;47 }48 }49 printf("%d %d\n", l, r);50 return 0;51 }

 

转载于:https://www.cnblogs.com/xFANx/p/8570777.html

你可能感兴趣的文章
autofac
查看>>
MacOS 系统终端上传文件到 linux 服务器
查看>>
Excel导出POI
查看>>
兼容性
查看>>
自动执行sftp命令的脚本
查看>>
转 Merkle Tree(默克尔树)算法解析
查看>>
网络编程基础之socket编程
查看>>
各种浏览器的user-agent和
查看>>
Restful levels
查看>>
Phonegap移动开发:布局总结(一) 全局
查看>>
Java 变参函数的实现
查看>>
nrf51 SDK自带例程的解读
查看>>
SESSION技术
查看>>
数据结构(五)之直接插入排序
查看>>
SQL函数——LENGTH()和LENGTHB()
查看>>
vim - manual -个人笔记
查看>>
详解Javascript中prototype属性(推荐)
查看>>
angularjs实现首页轮播图
查看>>
Git 对象 和checkout 和stash的笔记
查看>>
团队项目总结2-服务器通信模型和顺序图
查看>>