#649 (Div. 2)B. Most socially-distanced subsequence

题目描述

Given a permutation p of length n, find its subsequence s1, s2, …, sk of length at least 2 such that:
|s1−s2|+|s2−s3|+…+|sk−1−sk| is as big as possible over all subsequences of p with length at least 2.
Among all such subsequences, choose the one whose length, k, is as small as possible.
If multiple subsequences satisfy these conditions, you are allowed to find any of them.
A sequence a is a subsequence of an array b if a can be obtained from b by deleting some (possibly, zero or all) elements.
A permutation of length n is an array of length n in which every element from 1 to n occurs exactly once.

Input

The first line contains an integer t (1≤t≤2⋅104) — the number of test cases. The description of the test cases follows.
The first line of each test case contains an integer n (2≤n≤105) — the length of the permutation p.
The second line of each test case contains n integers p1, p2, …, pn (1≤pi≤n, pi are distinct) — the elements of the permutation p.
The sum of n across the test cases doesn’t exceed 105.

Output

For each test case, the first line should contain the length of the found subsequence, k. The second line should contain s1, s2, …, sk — its elements.
If multiple subsequences satisfy these conditions, you are allowed to find any of them.

Example

input
2
3
3 2 1
4
1 3 4 2
output
2
3 1
3
1 4 2

Note

In the first test case, there are 4 subsequences of length at least 2:
[3,2] which gives us |3−2|=1.
[3,1] which gives us |3−1|=2.
[2,1] which gives us |2−1|=1.
[3,2,1] which gives us |3−2|+|2−1|=2.
So the answer is either [3,1] or [3,2,1]. Since we want the subsequence to be as short as possible, the answer is [3,1].

题目分析

不难发现,当数组中存在连续的3个数且存在单调性时(如:123、321),我们可以删除三个数中间的数,这样得到的结果是一样的。
如:
1 2 3–> |1-2|+|2-3|=2。
删除中间数
1 3 --> |1-3|=2。
还有,如果两个相邻的数是相等的,则也可以删除其中一个。
这样,我们就可以找出a[]中所有的长度在3以上且具有单调性的子串,删除中间的数,只保留两头的两个数。最后剩下的数列即为答案。
这道题的思路很简单,我感觉这道题的难点其实是写代码。。。。

代码如下
#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <stack>
#include <map>
#include <unordered_map>
#include <queue>
#include <vector>
#include <set>
#include <algorithm>
#include <iomanip>
#define LL long long
using namespace std;
const int N=1e5+5;
int a[N];
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		int n;
		cin>>n;
		vector<int> ans; 	//用vector来储存答案串
		for(int i=0;i<n;i++)
			cin>>a[i];
		
		ans.push_back(a[0]);	//先将最头上的数放入(因为a[]两头的两个数是不可能被删的)
		for(int i=1;i<n-1;i++)	//枚举中间数
		{	//每次取出答案数组中最右边的数与a[i]和a[i+1]进行比较
			if(ans.back()==a[i]) continue;	//如果有两个相邻数相等,则只保留一个(即答案中的那个)
			if(ans.back()<a[i]&&a[i]<=a[i+1]) continue;//判断三个相邻的数是否具有单调性
			if(ans.back()>a[i]&&a[i]>=a[i+1]) continue;//有则跳过中间那个
			ans.push_back(a[i]);	//如果上述条件均不满足则将a[i]放入答案数组
		}
		ans.push_back(a[n-1]);	//最后再将最后一个数放入
		cout<<ans.size()<<endl;
		for(int it:ans) 
		cout<<it<<' ';
		cout<<endl;
	}
	return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
I choose Germany to talk about its attitude and measures towards sustainable energy use. Germany is a leading country in the world when it comes to sustainable energy use. The country has committed to phase out nuclear power and shift towards renewable energy sources. The German government has set a target of generating 65 percent of its electricity from renewable energy by 2030. One of the main measures taken by Germany to achieve this target is the Renewable Energy Sources Act, which was introduced in 2000. This act provides financial incentives for individuals and companies to invest in renewable energy sources such as wind, solar, and biomass. The act guarantees a fixed price for renewable energy generated by private individuals and businesses, making it easier for them to recover their investment costs. Germany has also invested heavily in research and development of renewable energy technologies. The country has a number of research institutions and universities that are dedicated to developing new and innovative technologies to support sustainable energy. Another notable measure taken by Germany is the introduction of the Energiewende program. This program is a comprehensive strategy aimed at transforming the country’s energy system to one that is based on renewable energy sources. The program seeks to create a sustainable and affordable energy system that is also socially responsible. The German government has also introduced a number of policies and regulations to promote energy efficiency. For instance, all new buildings in Germany are required to meet strict energy efficiency standards. The country has also implemented a number of policies to promote the use of electric vehicles and public transportation. In conclusion, Germany has shown a strong commitment towards sustainable energy use. The country has taken a number of measures to promote the use of renewable energy sources and to phase out nuclear power. With the Renewable Energy Sources Act, Energiewende program, and other policies and regulations, Germany is well on its way to achieving its target of generating 65 percent of its electricity from renewable energy by 2030.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lwz_159

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值