Codeforces Round #555 (Div. 3) C1,C2【补题】
时间:2019-11-11
本文章向大家介绍Codeforces Round #555 (Div. 3) C1,C2【补题】,主要包括Codeforces Round #555 (Div. 3) C1,C2【补题】使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
D1:思路:L,R指针移动,每次选最小的即可。
1 #include<bits/stdc++.h> 2 3 using namespace std; 4 #define int long long 5 #define N 200009 6 int arr[N]; 7 int ans[N]; 8 signed main(){ 9 int n; 10 cin>>n; 11 for(int i=1;i<=n;i++){ 12 cin>>arr[i]; 13 } 14 int l=1,r=n; 15 int cnt=0; 16 int now=0; 17 while(1){ 18 if(now<arr[l]&&now<arr[r]){ 19 if(arr[l]<arr[r]){ 20 21 ans[++cnt]=0; 22 now=arr[l]; 23 l++; 24 }else{ 25 26 ans[++cnt]=1; 27 now=arr[r]; 28 r--; 29 } 30 }else if(now<arr[l]){ 31 32 ans[++cnt]=0; 33 now=arr[l];l++; 34 }else if(now<arr[r]){ 35 36 ans[++cnt]=1; 37 now=arr[r];r--; 38 }else{ 39 break; 40 } 41 } 42 cout<<cnt<<'\n'; 43 for(int i=1;i<=cnt;i++){ 44 if(ans[i]) 45 cout<<"R"; 46 else 47 cout<<"L"; 48 49 } 50 return 0; 51 }
D1:思路:L,R指针移动,每次选最小的即可。【注意:特判左右两个数相等即可】
1 #include<bits/stdc++.h> 2 3 using namespace std; 4 #define int long long 5 #define N 200009 6 int arr[N]; 7 int ans[N]; 8 signed main(){ 9 int n; 10 cin>>n; 11 for(int i=1;i<=n;i++) cin>>arr[i]; 12 int l=1,r=n; 13 int cnt=0; 14 int now=0; 15 while(1){ 16 if(arr[l]==arr[r]&&l<r&&arr[l]>now){ 17 //cout<<"=="; 18 int temp; 19 temp=l; 20 int sum1=1; 21 while(arr[temp]<arr[temp+1]&&(temp+1)<r){ 22 temp++; 23 sum1++; 24 } 25 temp=r; 26 int sum2=1; 27 while(arr[temp]<arr[temp-1]&&(temp-1)>l){ 28 temp--; 29 sum2++; 30 } 31 if(sum1>sum2){ 32 ans[++cnt]=0; 33 now=arr[l]; 34 l++; 35 }else{ 36 ans[++cnt]=1; 37 now=arr[r]; 38 r--; 39 } 40 }else if(now<arr[l]&&now<arr[r]){ 41 if(arr[l]<arr[r]){ 42 ans[++cnt]=0; 43 now=arr[l]; 44 l++; 45 }else{ 46 ans[++cnt]=1; 47 now=arr[r]; 48 r--; 49 } 50 }else if(now<arr[l]){ 51 52 ans[++cnt]=0; 53 now=arr[l];l++; 54 }else if(now<arr[r]){ 55 56 ans[++cnt]=1; 57 now=arr[r];r--; 58 }else{ 59 break; 60 } 61 } 62 cout<<cnt<<'\n'; 63 for(int i=1;i<=cnt;i++){ 64 if(ans[i]) 65 cout<<"R"; 66 else 67 cout<<"L"; 68 } 69 return 0; 70 } 71 72 /* 73 1 3 5 4 2 1 74 15 75 37504 79054 80071 95721 135743 164345 189260 190810 191657 196168 200000 200000 190810 190018 185437 76 */
左右两端数都小于等于构造的数组的最后一个数字
原文地址:https://www.cnblogs.com/pengge666/p/11837937.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法