【JZOJ A組】【NOIP2017提高A組模擬7.10】隨機
題目
思路
水法
正解時不可能的,這輩子都不可能的
首先,我們發現選兩個端點作為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 A組】【NOIP2017提高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.31】Calculate
題目 資料範圍 題解 直接求每個 ⌊ 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 5455【NOIP2017提高A組衝刺11.6】拆網線
目錄: 題目: 分析: 程式碼: 題目: 傳送門 分析: 設f[i][0]f[i][0]表示在xx的子樹中,xx沒有被選擇的情況下最多有多少對點是兩兩配對的 f[
[JZOJ 5195] 【NOIP2017提高組模擬7.3】A//2018.10.29 {動態規劃}
題目 解題思路動態規劃 我們可以將方案分成兩種: 至少包含一個 111 的; 一個 111 都不包含。 設f[i][j]f[i][j]f[i][j]表示答案,那麼表示111的答案即為f[
【JZOJ 5416】【NOIP2017提高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.7】Repulsed
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 5400】【NOIP2017提高A組模擬10.7】Repulsed
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.10】Graph
Description 給定一張n個點m條邊的無向圖,每條邊連線兩個頂點,保證無重邊自環,不保證連通 你想在這張圖上進行若干次旅遊,每次旅遊可以任選一個點x作為起點,再走到一個與x 直接有邊相連的點y,再走到一個與y 直接有邊相連的點z 並結束本次旅遊 作
【JZOJ 5449】【NOIP2017提高A組衝刺11.4】Pacifist
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 提出了