NOIP2018 Day1 T1 鋪設道路 - 貪心
傻逼了,程式碼裡面不知道在寫啥,總之答案是 ∑i=1nmax(ai−ai−1,0),a0=0。
#include<bits/stdc++.h>
#define gc getchar()
using namespace std;
inline int inn()
{
int x,ch;while((ch=gc)<'0'||ch>'9');
x=ch^'0';while((ch=gc)>='0'&&ch<='9')
x=(x<<1)+(x<<3)+(ch^'0');return x;
}
const int N=100010;int s[N],top;
int main()
{
int n=inn(),ans=0;
for(int i=1,x;i<=n;i++)
{
x=inn(),ans+=max(x-s[top],0);
while(top&&x>=s[top]) top--;s[++top]=x;
}
return !printf("%d\n",ans);
}
相關推薦
NOIP2018 Day1 T1 鋪設道路 - 貪心
傻逼了,程式碼裡面不知道在寫啥,總之答案是 ∑ i
noip 2018 day1 T1 鋪設道路 貪心
Code: #include<cstdio> using namespace std; int main() { int last=0,ans=0; int n;scanf("%d",&n); for(int i=1;i<=n;++i) { int t;sca
[NOIp2013提高組]積木搭建/[NOIp2018提高組]鋪設道路
[NOIp2013提高組]積木搭建/[NOIp2018提高組]鋪設道路 題目大意: 對於長度為\(n(n\le10^5)\)的非負數列\(A\),每次可以選取一個區間\(-1\)。問將數列清零至少需要幾次操作。 思路: 差分後,將大於\(0\)的差分累加入答案即可。 原始碼: #include&l
NO1P2018 T1鋪設道路 | | (NO1P2013 積木大賽)
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; int n,last=0,ans=0; int main(){ scanf("%d",&n);
NO1P2018 T1鋪設道路 | | (NO1P2013 積木大賽)
序列 algo 一段 P20 i+1 spa str 道路 所有 #include<cstdio> #include<iostream> #include<algorithm> using namespace std; int n,las
【NOIP2018】D1T1 鋪設道路
@鋪設道路@ @題目描述@ @考場上的思路@ @比較正常的題解@ @[email protected] @題目描述@ 春春是一名道路工程師,負責鋪設一條長度為 n 的道路。 鋪設道路的主
NOIp2018鋪設道路(提高組T1)————模擬,貪心
本題主要考查模擬,貪心,我們可以畫出柱狀圖來分析。當左邊的一堆比右邊矮,左邊的一堆擺完後,右邊的還差一點,那麼擺放次數s加上兩堆的高度差。 程式碼如下: #include<iostream> using namespace std; int n,sum=0,i,j; int
【NOIP2018】【Luogu5019】鋪設道路(貪心,差分)
problem 給定一個目標序列,每次操作可以將一個區間全部減1。 求最少運算元使序列變為全0。 solution 講個笑話,NOIP2013中DAY1T1的程式碼直接複製貼上都能過這題。 考慮區間減法:我們用差分,即d[l]--,d[r+1]++
[貪心] NOIP2018 鋪設道路
[貪心] NOIP2018 鋪設道路 題面 題目描述 春春是一名道路工程師,負責鋪設一條長度為\(n\)的道路。 鋪設道路的主要工作是填平下陷的地表。整段道路可以看作是\(n\)塊首尾相連的區域,一開始,第\(i\)塊區域下陷的深度為\(d_i\)。 春春每天可以選擇一段連續區間\([L,R]\
2018 NOIP提高組Day1 T1 道路鋪設(原題洛谷 P1969 積木大賽)
題目描述 春春是一名道路工程師,負責鋪設一條長度為 n 的道路。 鋪設道路的主要工作是填平下陷的地表。整段道路可以看作是 n 塊首尾相連的區 域,一開始,第 i 塊區域下陷的深度為 di 。 春
NOIP2018 DAY1T1 鋪設道路(水題)
洛谷傳送門 【題目分析】 呵呵,NOIP竟然出原題,是不是刷過積木大賽這道題的人都禁賽啊? 結論很明顯,直接找區間最小值減去即可。 不知道nlogn的演算法能不能過,反正O(n)即可。 我選擇先讀完再掃一遍,當然也可以邊讀邊記錄答案。 記dp[i]表示消除1~i需要的最小次數
【JZOJ5961】【NOIP2018】鋪設道路
description 春春是一名道路工程師,負責鋪設一條長度為 n 的道路。 鋪設道路的主要工作是填平下陷的地表。整段道路可以看作是 n 塊首尾相連的區域,一開始,第 i 塊區域下陷的深度為 d[i] 。 春春每天可以選擇一段連續區間 [L,R] ,填充這段區間中的每塊區域,讓其下
NOIP2018 Day1 T3 賽道修建 - 二分套二分 - dp - 貪心
場上心路歷程: 首先這顯然好像是個dp。臥槽這個題能多項式? 考慮了一會列了個部分分表,發現我會做m=1求直徑,會做鏈,還以為會做星星。 嗯確定了一定是dp,一定要二分答案。 然後寫完暴力開始寫鏈的時候突然想,誒星星怎麼做來著??? 仔細冷靜了一下發現星星想得有問題。 開始慌,寫了一半的鏈棄
[multiset][貪心]NOIP2018 TG T1 賽道修建
題目描述 C 城將要舉辦一系列的賽車比賽。在比賽前,需要在城內修建 m 條賽道。 C 城一共有 nn 個路口,這些路口編號為1,2,…,n,有 n−1 條適合於修建賽道的雙向通行的道路,每條道路連線著兩個路口。其中,第 i 條
【LOJ2950】「NOIP2018」鋪設道路
【題目連結】 點選開啟連結 【思路要點】 有一個顯然正確的貪心:處理區間 [
noip2018 雅禮模擬賽day1 T1
分塊... 首先我們可以看到,對於任意的模數k,所有的可能答案一定會在所有k的整數倍的前驅處取到 證明:假設所有值均小於k,那麼我們顯然答案是這其中的最大值 假設所有值均小於2k,那麼我們將這些值分成兩部分,小於k的部分中的最大值即為取模k的最大值,而在[k,2k]之間
【NOIP2018】鋪設道路
題目連結 水題不詳寫 從頭到尾掃一遍,如果後一個比前一個大就把差值加入答案。 #include<cstdio> #include<algorithm> #include&l
5961. 【NOIP2018提高組D1T1】鋪設道路
Time Limits: 1000 ms Memory Limits: 524288 KB Description 春春是一名道路工程師,負責鋪設一條長度為 n 的道路。 鋪設道路的主要工作是填平下陷
【NOIP2018提高組D1T1】鋪設道路
這題不用講了吧,一遍掃直接過 #include<cstdio> using namespace std; int n,a[100010],ans=0; inline int read() { int x=0; char c=getchar(); while
NOIP2018(積木大賽/鋪設道路)_暴力一邊推
題目描述 春春是一名道路工程師,負責鋪設一條長度為 nn 的道路。 鋪設道路的主要工作是填平下陷的地表。整段道路可以看作是 nn 塊首尾相連的區域,一開始,第 ii 塊區域下陷的深度為 d_idi 。 春春每天可以選擇一段