Codeforces Round #649 (Div. 2)  参与排名人数11286

[codeforces 1364B]   Most socially-distanced subsequence   绝对值脱壳的4种形态

总目录详见https://blog.csdn.net/mrcrack/article/details/103564004

在线测评地址https://codeforces.com/contest/1364/problem/B

Problem Lang Verdict Time Memory
B - Most socially-distanced subsequence GNU C++17 Accepted 46 ms 800 KB

题目大意:给定数组a,可以删除任意元素,要求剩下的元素,相邻差值绝对值和最大,对应的剩下元素的个数最少,输出最少个数。

|x-y|+|y-z|

1.|x-y|脱壳情况如下

x>=y,|x-y|=x-y

x<=y,|x-y|=y-x

2.|y-z|脱壳情况如下

y>=z,|y-z|=y-z

y<=z,|y-z|=z-y

3.|x-y|+|y-z|脱壳情况如下

有4种组合

x>=y,y>=z

|x-y|+|y-z|=x-y+y-z=x-z此种情况,可删除元素y

x>=y,y<=z

|x-y|+|y-z|=x-y+z-y=x+z-2*y

x<=y,y>=z

|x-y|+|y-z|=y-x+y-z=2*y-(x+z)

x<=y,y<=z

|x-y|+|y-z|=y-x+z-y=z-x此种情况,可删除元素y

按上述思路,采用栈(在连续数据中,有目的的选取部分数据,用栈比较合适)的方式,编写的AC代码如下

#include <stdio.h>
#define maxn 100010
int a[maxn],st[maxn],top;
void solve(){int i,x,y,z,n;scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d",&a[i]);top=0;for(i=1;i<=n;i++){while(top>=2){x=st[top-1],y=st[top],z=i;if((a[x]>=a[y]&&a[y]>=a[z])||(a[x]<=a[y]&&a[y]<=a[z]))top--;else break;}st[++top]=i;}printf("%d\n",top);for(i=1;i<=top;i++)printf("%d ",a[st[i]]);printf("\n");
}
int main(){int t;scanf("%d",&t);while(t--)solve();return 0;
}

按上述思路,采用再开一个数组用来存储剩下的数组元素,对应的AC代码,建议读者不用细读,只是告诉读者掌握数据结构有多么重要,懂和不懂,同一个思路,编出的代码差太多了。

Problem Lang Verdict Time Memory
B - Most socially-distanced subsequence GNU C++17 Accepted 62 ms 1900 KB
#include <stdio.h>
#define maxn 100010
int a[maxn],b[maxn],l[maxn],r[maxn],vis[maxn];
void solve(){int n,i,x,y,z,ans,j;scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d",&a[i]);for(i=1;i<=n;i++)vis[i]=0;if(n==2){printf("2\n");for(i=1;i<=n;i++)printf("%d ",a[i]);printf("\n");return ;}l[2]=1,y=2,r[2]=3,j=0;while(y+1<=n){//n>=3if((a[l[y]]>=a[y]&&a[y]>=a[r[y]])||(a[l[y]]<=a[y]&&a[y]<=a[r[y]])){y++;l[y]=l[y-1],r[y]=y+1;if(!vis[l[y-1]])vis[l[y-1]]=1,b[++j]=a[l[y-1]];}else{if(!vis[l[y]])vis[l[y]]=1,b[++j]=a[l[y]];if(!vis[y])vis[y]=1,b[++j]=a[y];y++,l[y]=y-1,r[y]=y+1;;}}b[++j]=a[y];printf("%d\n",j);for(i=1;i<=j;i++)printf("%d ",b[i]);printf("\n");
}
int main(){int t;scanf("%d",&t);while(t--)solve();return 0;
}

[codeforces 1364B] Most socially-distanced subsequence 绝对值脱壳的4种形态相关推荐

  1. 脱壳的几种方法 详细操作步骤

    脱壳的几种方法  详细操作步骤 常见脱壳知识: 1.PUSHAD (压栈) 代表程序的入口点 2.POPAD (出栈) 代表程序的出口点,与PUSHAD相对应,一般找到这个,说明OEP可能就在附近 3 ...

  2. Most socially-distanced subsequence CodeForces - 1364B(贪心)

    Given a permutation p of length n, find its subsequence s1, s2, -, sk of length at least 2 such that ...

  3. CodeForces #649 B. Most socially-distanced subsequence(思维、规律)

    Most socially-distanced subsequence 题目大意:(文末原题) 给出一个长度为n的数组整型数组,输出使 相邻项的差 的绝对值 的和 最大,数组长度最小 的字串及其长度: ...

  4. codeforces 261D Maxim and Increasing Subsequence(树状数组优化最长上升子列)

    题目链接:http://codeforces.com/problemset/problem/261/D 题意:最长上升子列. 思路:树状数组优化求最长上升子列. #include <iostre ...

  5. 关于徒手脱壳的几种方法

    首先我们先来说说壳的原理吧,简单说下就好,带壳程序运行以后,都会做哪些事情呢? (想要了解更多的朋友们就去读看雪大哥的<加密与解密(第三版)>吧) 1.保存现场(pushad/popad, ...

  6. Codeforces Round #702 (Div. 3)---C. Sum of Cubes 两种方法 cbrt()函数应用

    文章目录 题目 思路 代码 题目 题目链接 思路 思路一. 容易联想到枚举所有x存在的情况,用map映射.因为a取值在1e4上. 1e8的时间复杂度枚举,但是map具有自动排序 费时间,炸了. uno ...

  7. Codeforces 100548F - Color (组合数+容斥)

    题目链接:http://codeforces.com/gym/100548/attachments 有n个物品 m种颜色,要求你只用k种颜色,且相邻物品的颜色不能相同,问你有多少种方案. 从m种颜色选 ...

  8. 脱壳_详细_使用的方法_01

    ZC: 如何确定被调试程序已经来到了 未加壳的程序中? ZC: 视频中是使用判断集中语言的特征 ZC: 我的方法:上面的方式 + ESP平衡 1.第1课 (1).单步跟踪(原则:向下的跳转==> ...

  9. Educational Codeforces Round 104 (Rated for Div. 2)A~E解题报告

    Educational Codeforces Round 104 (Rated for Div. 2) A. Arena \quad原题链接 http://codeforces.com/contest ...

最新文章

  1. Spring Cloud(二): 注册中心Eureka的使用
  2. SGM:Sequence Generation Model for Multi-Label Classification(SGM)
  3. P8U8 IT这块出书门槛相对比较低
  4. 算法--库函数实现全排列
  5. WPF 界面提示加载出错
  6. javascript 组成
  7. oneno浏览器插件_onenote 插件-onenote clipper for chrome下载 v2.1.3官方版--pc6下载站
  8. 简单用电脑摄像头实现人脸识别
  9. matlab除水印,基于MATLAB视频处理——抖音小视频去除水印
  10. 安卓如何关闭软键盘?
  11. tensorflow学习 矩阵乘法和元素乘法
  12. java之I/O流【二】
  13. Solr--Solr 使用SolrJ 完成添加,删除,查询
  14. 远程登录Linux系统
  15. Log4j又发新版2.17.0,只有彻底搞懂漏洞原因,才能以不变应万变,
  16. 随机森林遥感影像识别+Rater转MultiShp
  17. 自然语言处理--朴素贝叶斯-情感分析
  18. 在Teams团队中快速添加SharePoint Online站点
  19. 四川流行的珠珠钓大致有三种方式
  20. 【文献阅读】MUTAN——多模态塔克融合VQA模型(Hedi Ben-younes等人,ArXiv,2017,有代码)

热门文章

  1. 三星数码相机误删的文件怎么恢复,相机照片删除了怎么恢复
  2. Spark运行任务时报错:org.apache.hadoop.hdfs.protocol.DSQuotaExceededException: The DiskSpace quota of...
  3. 超清晰思维导图(vue)
  4. Pycharm设置自动代码提示(超详细)
  5. 基于Vue.js的企业级前端代码架构设计设想
  6. linux企业级运维----->kubernetes(3)pod资源清单
  7. 百数教育培训领域能力展示——高校应用
  8. java Integer常用方法详解
  9. C++开发BHO之HelloWorld
  10. 基于QT(C++)实现(窗体)平台类对战游戏【100010513】