博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cf378C(模拟)
阅读量:5239 次
发布时间:2019-06-14

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

题目链接:

 

思路:模拟

因为数组b里的元素是顺序对应a数组元素的和,可以开个c数组储存b数组元素对应的a数组元素区间;

然后对每个c数组区间,找出最大并且存在与其相邻且小于它的元素的元素,从这个元素开始向左或者向右合并此区间所有元素;

要注意一下区间长度为1即只有一个元素的情况,还有输出的位置是合并后的相对位置;

 

代码:

1 #include 
2 #define MAXN 501 3 using namespace std; 4 5 int main(void){ 6 int n, a[MAXN], k, b[MAXN], c[MAXN]; 7 scanf("%d", &n); 8 for(int i=0; i
num){ 33 num=a[j]; 34 mm=j; 35 } 36 } 37 int mmm=mm; 38 if(mmm==c[i]+1-(i==0)&&mmm
a[mm+1]){ 53 int x=mm; 54 while(x
c[i]-(i==0)){ 63 d[star]='L'; 64 e[star]=jj; 65 x--; 66 jj--; 67 star++; 68 } 69 }else if(mm>c[i]+(i!=0)&&a[mm]>a[mm-1]){ 70 int x=mm; 71 while(x>c[i]+(i!=0)){ 72 d[star]='L'; 73 e[star]=jj; 74 x--; 75 jj--; 76 star++; 77 } 78 x=mm+1; 79 while(x<=c[i+1]){ 80 d[star]='R'; 81 e[star]=jj; 82 x++; 83 star++; 84 } 85 }else if(b[i]==a[c[i]+1]){ 86 continue; 87 } 88 if(!flag){ 89 printf("NO\n"); 90 return 0; 91 } 92 } 93 printf("YES\n"); 94 for(int j=0; j

 

转载于:https://www.cnblogs.com/geloutingyu/p/6029690.html

你可能感兴趣的文章
强连通tarjan模版
查看>>
javascript_09-数组
查看>>
多进程与多线程的区别
查看>>
Linux 系统下用源码包安装软件
查看>>
PAT 1145 1078| hashing哈希表 平方探测法
查看>>
Ubuntu(虚拟机)下安装Qt5.5.1
查看>>
Linux第七周学习总结——可执行程序的装载
查看>>
java.io.IOException: read failed, socket might closed or timeout, read ret: -1
查看>>
细说php(二) 变量和常量
查看>>
iOS开发网络篇之Web Service和XML数据解析
查看>>
个人寒假作业项目《印象笔记》第一天
查看>>
java 常用命令
查看>>
ZOJ 1666 G-Square Coins
查看>>
CodeForces Round #545 Div.2
查看>>
卷积中的参数
查看>>
Linux中Zabbix4.0的搭建
查看>>
《LoadRunner没有告诉你的》之六——获取有效的性能需求
查看>>
51nod1076 (边双连通)
查看>>
Item 9: Avoid Conversion Operators in Your APIs(Effective C#)
查看>>
js去除空格
查看>>