Codeforces round #649 B. Most socially-distanced subsequence(数学,去绝对值)
生活随笔
收集整理的這篇文章主要介紹了
Codeforces round #649 B. Most socially-distanced subsequence(数学,去绝对值)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
不想翻譯題意了,這是題目鏈接。
題解:本題要求|a-b|+|b-c|的值最大,子數組且長度最短,我們肯定是選最少的數獲得最大的值(廢話),我們去下絕對值發現,有兩種情況下,b是可以消去的,(就是b比一個數大比另一個數小),這時候b的存在不影響我們的最終結果,考慮要選最小的數,那我們當然不選b啦。
AC代碼:
#include <iostream> #include <cstring> #include <cstdio> #include <vector> #include <algorithm> using namespace std; const int maxn=2e5+5; typedef long long ll; int a[maxn],vis[maxn]; int main(){int t;cin>>t;while(t--){memset(vis,0,sizeof(vis));int n;cin>>n;a[0]=0; for(int i=1;i<=n;i++)cin>>a[i];int ans=n;for(int i=2;i<n;i++){if((a[i]>=a[i-1]&&a[i]<=a[i+1])||(a[i]>=a[i+1]&&a[i]<=a[i-1])){vis[i]++;ans--;}}cout<<ans<<endl;for(int i=1;i<=n;i++){if(!vis[i])cout<<a[i]<<" ";}cout<<endl;} }?
總結
以上是生活随笔為你收集整理的Codeforces round #649 B. Most socially-distanced subsequence(数学,去绝对值)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Web项目之管理系统
- 下一篇: ES6数组find实现嵌套数据匹配