Codeforces- Educational Codeforces Round 69
生活随笔
收集整理的這篇文章主要介紹了
Codeforces- Educational Codeforces Round 69
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
A題 DIY Wooden Ladder
簽到題,求n-2和第二大的最小值
#include<bits/stdc++.h> using namespace std; int arr[100020]; int main() {int t,n;cin>>t;while(t--){cin>>n;for(int i=0;i<n;i++)cin>>arr[i];sort(arr,arr+n);cout<<min(arr[n-2]-1,n-2)<<endl;}return 0; }B題 Pillars
水題,求峰值,兩邊掃描,若不單調(diào)為NO
#include<bits/stdc++.h> using namespace std; int arr[200020]; int brr[200020]; int main() {int n;cin>>n;bool flag=false;int cnt=0;int maxa=0;for(int i=0;i<n;i++){cin>>arr[i];if(maxa<arr[i]){maxa=arr[i];cnt=i;}}for(int i=0;i<cnt-1;i++)if(arr[i]>arr[i+1]){cout<<"NO"<<endl;return 0;}for(int i=cnt+1;i<n-1;i++){if(arr[i]<arr[i+1]){cout<<"NO"<<endl;return 0;}}cout<<"YES"<<endl;return 0; }C題 Array Splitting
差分區(qū)間,排序后刪去后K-1個區(qū)間的差,求前面所有差的和
#include<bits/stdc++.h> #define FOR(i,a,b) for(int i=a;i<b;i++) #define FOR2(i,a,b) for(int i=a;i<=b;i++) #define sync ios::sync_with_stdio(false);cin.tie(0) #define ll long long using namespace std; int n,k,arr[300030]; vector<int>brr; int main() {cin>>n>>k;if(n==k){cout<<0<<endl;return 0;}for(int i=0;i<n;i++){cin>>arr[i];if(i!=0)brr.push_back(arr[i]-arr[i-1]);}sort(brr.begin(),brr.end());ll sum=0;for(int i=0;i<brr.size()-k+1;i++){sum+=brr[i];}cout<<sum<<endl;return 0; }D題 Yet Another Subarray Problem
dp題,有原公式\(\sum_{i=l}^r{a_i}-k*[(l-r+1)/m]\)得出全部用前綴和轉(zhuǎn)換后的公式\(S_r-S_l-k*[(r-l)/m]\).
構(gòu)造一個m大小的數(shù)組,存放每次循環(huán)一個m大小的段取得的最小值即\(S_l\),用res存放i選取的r的值的最大值,即\(res=max(res,S_i-min(f)-k*[(i-l)/m)]\)。
對于取余>=0的多減去一個k即可。
轉(zhuǎn)載于:https://www.cnblogs.com/tldr/p/11233960.html
總結(jié)
以上是生活随笔為你收集整理的Codeforces- Educational Codeforces Round 69的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英雄联盟火男中单对得赢不祥吗?
- 下一篇: 和平精英头上的王牌印记怎么隐藏?