日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Codeforces 1093C (思维+贪心)

發布時間:2025/3/16 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Codeforces 1093C (思维+贪心) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題面

傳送門

題目大意:

有一個長n(n為偶數)的序列a

已知a滿足 \(a_1≤a_2≤?≤a_n\)

給出一個長度為\(\frac{n}{2}\) 的序列b,定義\(b_i=a_i+a_{n-i+1}\)

求出序列a (輸出任意一種答案即可)

分析

為了保證序列不下降,我們采用貪心的思想,先假設\(a_i=a_{i-1}\),這樣給后面的數留有的余地更大

然后計算出\(a_{n-i+1}=b_i-a_i\),如果\(a_{n-i+1}>a_{n-i+1+1}\),即不滿足不下降的條件,則進行局部調整

\(a_{n-i+1}=a_{n-i+1+1}\),重新計算\(a_i=b_i-a_{n-i+1}\) (注,設$a_{n+1}=+\inf $)

由于\(a_{n-i+1}>a_{n-i+2}\),新的\(a_i\)的值會變大,依然滿足不下降的條件

該方法的正確性顯然,時間復雜度\(O(n)\)

代碼

#include<iostream> #include<cstdio> #define maxn 200005 #define INF 0x7fffffffffffffff using namespace std; int n; long long a[maxn]; long long b[maxn]; int main(){scanf("%d",&n);for(int i=1;i<=n/2;i++) scanf("%I64d",&b[i]);a[n+1]=INF; for(int i=1;i<=n/2;i++){a[i]=a[i-1];a[n+1-i]=b[i]-a[i];if(a[n+2-i]<a[n+1-i]){a[n+1-i]=a[n+2-i];a[i]=b[i]-a[n+1-i];}} for(int i=1;i<=n;i++){printf("%I64d ",a[i]);} }

轉載于:https://www.cnblogs.com/birchtree/p/10126769.html

總結

以上是生活随笔為你收集整理的Codeforces 1093C (思维+贪心)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。