1. 程式人生 > >【JZOJ A組】【NOIP2017提高A組模擬7.10】隨機

【JZOJ A組】【NOIP2017提高A組模擬7.10】隨機

題目

FAQ

get soft

思路

水法

正解時不可能的,這輩子都不可能的

首先,我們發現選兩個端點作為si,sj才是最優的。
所以我們可以列舉區間長度(i

#include<cstdio>
#include<cmath>
using namespace std;
int ans,n,a[1000077];
int main()
{
    freopen("random.in","r",stdin);
    freopen("random.out","w",stdout);
    scanf("%d",&n);
    for(int i=1; i<=n; i++) scanf
("%d",&a[i]); ans=n; for(int i=2; i<ans; i++) { for(int j=1; j+i<n; j++) { if(abs(a[j]-a[j+i-1])<ans) ans=abs(a[j]-a[j+i-1]); } } printf("%d",(ans>1?ans:2)); }

正解

啊,真香!

這裡寫圖片描述

問題是,怎麼維護?

我們可以開兩個set,一個記錄a[l..r] (s),一個記錄(s1-s0,s2-s1…) (ss)

首先考慮加入一個數x。
設x在s中的位置為t,可以發現我們要把SS(St+1-St-1)刪掉,再插入與其相鄰的兩個數。

然後考慮刪除一個數x
與插入反過來,刪掉相鄰兩個,插入一個。

我的程式玄學WA,但當個虛擬碼是可以的

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<set>
using namespace std;
const int maxn=1000077,inf=0x3f3f3f3f;
multiset<int
>
s,ss; int n,a[maxn],ans; int main() { // freopen("random.in","r",stdin); // freopen("random.out","w",stdout); scanf("%d",&n); for(int i=1; i<=n; i++) scanf("%d",&a[i]); int l=1,r=2; s.insert(a[1]); s.insert(a[2]); ss.insert(abs(a[1]-a[2])); ans=inf; multiset<int>::iterator si,ssi=ss.begin(); while(r<=n&&l<r) { int t=*ssi,t1=r-l+1; ans=min(ans,max(t,t1)); if(t>t1) { r++; s.insert(a[r]); si=s.find(a[r]); int x=*--si; si++; int y=*++si; si--; ss.erase(abs(x-y)); ss.insert(abs(*si-*--si)); ss.insert(abs(*++si-*++si)); }else { si=s.find(a[l]); ss.erase(abs(*si-*--si)); ss.erase(abs(*++si-*++si)); int x=*si; si--; si--; int y=*si; ss.insert(abs(x-y)); s.erase(a[l]); l++; } } printf("%d",ans); }

相關推薦

JZOJ ANOIP2017提高A模擬7.10隨機

題目 思路 水法 正解時不可能的,這輩子都不可能的 首先,我們發現選兩個端點作為si,sj才是最優的。 所以我們可以列舉區間長度(i #include<cstdio> #include<cmath> using

JZOJ 100035. NOIP2017提高A模擬7.10區間

Description Input Output Sample Input sample1: 4 2 10 5 1 1 10 sample2: 1000

JZOJ 5439. NOIP2017提高A集訓10.31Calculate

題目 資料範圍 題解 直接求每個 ⌊ T

JZOJ 100027. NOIP2017提高A模擬7.7表示式

JZOJ 100027. 【NOIP2017提高A組模擬7.7】表示式 題目 Description Input 一行兩個整數k,p。 Output 一行一個整數表示答案。 Sample Input 1 3 Sample Output 6 D

JZOJ 5455NOIP2017提高A衝刺11.6拆網線

目錄: 題目: 分析: 程式碼: 題目: 傳送門 分析: 設f[i][0]f[i][0]表示在xx的子樹中,xx沒有被選擇的情況下最多有多少對點是兩兩配對的 f[

[JZOJ 5195] NOIP2017提高模擬7.3A//2018.10.29 {動態規劃}

題目 解題思路動態規劃 我們可以將方案分成兩種: 至少包含一個 111 的; 一個 111 都不包含。 設f[i][j]f[i][j]f[i][j]表示答案,那麼表示111的答案即為f[

JZOJ 5416NOIP2017提高A集訓10.22密碼

Description 現在身為校慶志願者的小C正在引導校友們到他們集合的教室。終於,忙了一段時間的他可以休息一會兒了。這時,旁邊一位老校友的話吸引到了他。“我後來當了一名探險家,有一次,我來到了一個地方,在正前方有一扇門,旁邊寫著一行文字:’現在給你前m個字

JZOJ 5441. NOIP2017提高A衝刺11.1序列

Description 給定一個1~n的排列x,每次你可以將x1~xi翻轉。你需要求出將序列變為升序的最小操作次數。有多組資料。 Input 第一行一個整數t表示資料組數。 每組資料第一行一個整數n,第二行n個整數x1~xn。 Output 每組

JZOJ 5400. NOIP2017提高A模擬10.7Repulsed

Description 小w 心裡的火焰就要被熄滅了。 簡便起見,假設小w 的內心是一棵n -1 條邊,n 個節點的樹。 現在你要在每個節點裡放一些個滅火器,每個節點可以放任意多個。 接下來每個

JZOJ 5377. NOIP2017提高A模擬9.19開拓

Description Input Output Sample Input 5 50 50 10 1 10 1 20 2 10 2 20 1 30 Sam

JZOJ 5400NOIP2017提高A模擬10.7Repulsed

DH ---------以上初三THU/PKU大爺---- Alan_cty LYD XHM HZJ ZZ ---以下是大神%-- YMW Samjia2000 werkeytom_ftd Crazy_czy WorldWide_D Yxuan

JZOJ 5444. NOIP2017提高A衝刺11.2救贖

Description “是的。”我回答,“我不會忘記你。在森林裡我會一點點記起往日的世界。要記起的大概很多很多:各種人、各種場所、各種光、各種歌曲……” ——村上春樹《世界盡頭與冷酷仙境》 在沒有心存在的世界盡頭,音樂能夠使小鎮居民消散的心重新聚攏成形。

JZOJ 5404. NOIP2017提高A模擬10.10Graph

Description 給定一張n個點m條邊的無向圖,每條邊連線兩個頂點,保證無重邊自環,不保證連通 你想在這張圖上進行若干次旅遊,每次旅遊可以任選一個點x作為起點,再走到一個與x 直接有邊相連的點y,再走到一個與y 直接有邊相連的點z 並結束本次旅遊 作

JZOJ 5449NOIP2017提高A衝刺11.4Pacifist

DH ---------以上初三THU/PKU大爺---- Alan_cty LYD XHM HZJ ZZ ---以下是大神%-- YMW Samjia2000 werkeytom_ftd Crazy_czy WorldWide_D Yxuan

JZOJ 5460. NOIP2017提高A衝刺11.7士兵訓練

Description Input 第一行兩個數n,q 表示士兵數以及閱兵次數。 接下來一行n-1 個整數,第i 個整數表示士兵i+1 的直屬教官。 接下來n 行每行兩個整數i i b ,l 描述一位士兵的屬性。 接下來q 行每行一個整數i s

JZOJ 5440. NOIP2017提高A衝刺11.1揹包

Description 蛤布斯有n種商品,第i種物品的價格為ai,價值為bi。有m個人來向蛤布斯購買商品,每個人每種物品只能購買一個。第j個人有cj的錢,他會不停選擇一個能買得起的價格最高的商品買走(如果有多個則選擇價值最高的)。你需要求出每個人購買的物品的價

JZOJ 5462. NOIP2017提高A衝刺11.8好文章

Description nodgd寫了一篇文章,自認為這是一篇好文章。nodgd的文章由n個小寫英文字母組成。文章的一個子串指的是文章中的一段連續的字母,子串的長度就是這一段的字母個數。nodgd在文章中用了排比、對偶、前後照應之類的手法,所以就有很多個子串是

JZOJ5372.NOIP2017提高A模擬9.17貓鏈表+貪心+堆優化

margin targe sga gin bt5 ie8 usm shu auc x壹鼐順51比http://shequ.docin.com/txqq_cb3d1e346f 惹M3桓7O2疽http://www.docin.com/app/user/userinfo?use

[JZOJ5456]NOIP2017提高A沖刺11.6奇怪的隊列

失望 output 第一個 粉絲 排隊 return algo nod struct Description nodgd的粉絲太多了,每天都會有很多人排隊要簽名。今天有??個人排隊,每個人的身高都是一個整數,且互不相同。很不巧,nodgd今天去忙別的事情去了,就只好讓

JZOJ_100029. NOIP2017提高A模擬7.8陪審團 (Standard IO)

qsort sta begin tput 關心 關鍵字 int 最有 制度 Description 陪審團制度歷來是司法研究中的一個熱議話題,由於陪審團的成員組成會對案件最終的結果產生巨大的影響,訴訟雙方往往圍繞陪審團由哪些人組成這一議題激烈爭奪。 小 W 提出了