zoukankan      html  css  js  c++  java
  • Most socially-distanced subsequence(贪心+思维)

    传送门


    一道原汁原味的贪心题目

    随心证明:

    对于连续的K个数字(假设k = 3),如果这三个是递增或者递减的,那么|a1 - a2| + |a2 - a3|就是 |a1 - a3|,也就是说,对于连续单调的一个数列,只需要取首和尾就可以了,中间的都是多余项。
    还有一点就是第一个数字和最后一个都要算上。

    #include <bits/stdc++.h>
    using namespace std;
    
    const int N = 100010;
    
    int a[N], b[N];
    vector<int> vec;
    void solve(){
    	vec.clear();
    	int n, ver = 0;
    	cin >> n;
    	for(int i = 1; i <= n; i ++)
    		cin >> a[i];
    	b[++ ver] = a[1];
    	for(int i = 2; i <= n; i ++)
    		if(a[i] != a[i - 1])
    			b[++ ver] = a[i];
    	vec.push_back(a[1]);
    	for(int i = 2; i < ver; i ++)
    		if(b[i] > b[i - 1] && b[i] > b[i + 1] || b[i] < b[i - 1] && b[i] < b[i + 1])
    			vec.push_back(b[i]);
    	vec.push_back(b[ver]);
    	cout << vec.size() << endl;
    	for(int i = 0; i < vec.size(); i ++)
    		cout << vec[i] << ' ';
    	cout << endl;
    }
    int main(){
    	ios::sync_with_stdio(false);
    	int t;
    	cin >> t;
    	while(t --){
    		solve();
    	}
    	
    	return 0;
    }
    
  • 相关阅读:
    Flask发送邮件
    python 可调用对象之类实例
    flask 跨域请求
    flask登录插件 flask-login
    flask 更新数据库
    python事物管理及同步锁
    Django signals 信号作用及用法说明
    python中各个response使用
    Ntp时间服务器
    Iptables-主机防火墙设置
  • 原文地址:https://www.cnblogs.com/pureayu/p/14413474.html
Copyright © 2011-2022 走看看