[codeforces 1364B] Most socially-distanced subsequence 绝对值脱壳的4种形态
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.PUSHAD (压栈) 代表程序的入口点 2.POPAD (出栈) 代表程序的出口点,与PUSHAD相对应,一般找到这个,说明OEP可能就在附近 3 ...
- 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 ...
- CodeForces #649 B. Most socially-distanced subsequence(思维、规律)
Most socially-distanced subsequence 题目大意:(文末原题) 给出一个长度为n的数组整型数组,输出使 相邻项的差 的绝对值 的和 最大,数组长度最小 的字串及其长度: ...
- codeforces 261D Maxim and Increasing Subsequence(树状数组优化最长上升子列)
题目链接:http://codeforces.com/problemset/problem/261/D 题意:最长上升子列. 思路:树状数组优化求最长上升子列. #include <iostre ...
- 关于徒手脱壳的几种方法
首先我们先来说说壳的原理吧,简单说下就好,带壳程序运行以后,都会做哪些事情呢? (想要了解更多的朋友们就去读看雪大哥的<加密与解密(第三版)>吧) 1.保存现场(pushad/popad, ...
- Codeforces Round #702 (Div. 3)---C. Sum of Cubes 两种方法 cbrt()函数应用
文章目录 题目 思路 代码 题目 题目链接 思路 思路一. 容易联想到枚举所有x存在的情况,用map映射.因为a取值在1e4上. 1e8的时间复杂度枚举,但是map具有自动排序 费时间,炸了. uno ...
- Codeforces 100548F - Color (组合数+容斥)
题目链接:http://codeforces.com/gym/100548/attachments 有n个物品 m种颜色,要求你只用k种颜色,且相邻物品的颜色不能相同,问你有多少种方案. 从m种颜色选 ...
- 脱壳_详细_使用的方法_01
ZC: 如何确定被调试程序已经来到了 未加壳的程序中? ZC: 视频中是使用判断集中语言的特征 ZC: 我的方法:上面的方式 + ESP平衡 1.第1课 (1).单步跟踪(原则:向下的跳转==> ...
- 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 ...
最新文章
- Spring Cloud(二): 注册中心Eureka的使用
- SGM:Sequence Generation Model for Multi-Label Classification(SGM)
- P8U8 IT这块出书门槛相对比较低
- 算法--库函数实现全排列
- WPF 界面提示加载出错
- javascript 组成
- oneno浏览器插件_onenote 插件-onenote clipper for chrome下载 v2.1.3官方版--pc6下载站
- 简单用电脑摄像头实现人脸识别
- matlab除水印,基于MATLAB视频处理——抖音小视频去除水印
- 安卓如何关闭软键盘?
- tensorflow学习 矩阵乘法和元素乘法
- java之I/O流【二】
- Solr--Solr 使用SolrJ 完成添加,删除,查询
- 远程登录Linux系统
- Log4j又发新版2.17.0,只有彻底搞懂漏洞原因,才能以不变应万变,
- 随机森林遥感影像识别+Rater转MultiShp
- 自然语言处理--朴素贝叶斯-情感分析
- 在Teams团队中快速添加SharePoint Online站点
- 四川流行的珠珠钓大致有三种方式
- 【文献阅读】MUTAN——多模态塔克融合VQA模型(Hedi Ben-younes等人,ArXiv,2017,有代码)
热门文章
- 三星数码相机误删的文件怎么恢复,相机照片删除了怎么恢复
- Spark运行任务时报错:org.apache.hadoop.hdfs.protocol.DSQuotaExceededException: The DiskSpace quota of...
- 超清晰思维导图(vue)
- Pycharm设置自动代码提示(超详细)
- 基于Vue.js的企业级前端代码架构设计设想
- linux企业级运维----->kubernetes(3)pod资源清单
- 百数教育培训领域能力展示——高校应用
- java Integer常用方法详解
- C++开发BHO之HelloWorld
- 基于QT(C++)实现(窗体)平台类对战游戏【100010513】