世界真的很大
最近狀態感覺真的很不好。。。考試連續**。。。
倒不是因為想不出來,而是老是在一些細節操作上出問題
看來是時候調整一波狀態了,noip說實話也的卻不遠了
看題先:
【問題描述】
mushroom手中有n個數排成一排,現在mushroom想取乙個連續的子串行,使得這個子串行滿足:最多隻改變乙個數,使得這個連續的子串行是嚴格上公升子串行,mushroom想知道這個序列的最長長度是多少。
【輸入格式】
第一行乙個整數n,表示有n個數。
第二行為n個數。
【輸出格式】
乙個數,為最長長度。
【輸入樣例】
6 7 2 3 1 5 6
【輸出樣例】
5 【樣例解釋】
選擇第2個數到第6個數,把1改變成4即可。
【資料範圍】
對於30%的資料,n<=10
對於60%的資料,n<=1000
對於100%的資料,n<=100000
老實說這道題其實很簡單。。
一開始把題目看錯了,話說既然是連續的為什麼要叫子串行?不是應該叫子串吧?這讓我不得不開始質疑出題人的語文水平。。
一開始我以為就是乙個nlogn的lis再加1,和n取乙個min
發現題讀錯了才開始想正解
也算是秒想吧,dp預處理一邊從每個點開始往後的最長連續上公升子串,每個點往前的最長連續上公升子串
列舉分界點
特判只取一邊然後加1的情況,和n取乙個min
然後我就把我一開始讀錯題的**交上去了。。。
完整**:
#include
#include
using
namespace
std;
const
int inf=0x3f3f3f3f;
int f[100010],a[100010],g[100010],ans=0,n;
int main()
for(int i=n;i>=1;i--)
ans=min(ans+1,n);
for(int i=1;i<=n;i++)
if(a[i+1]-a[i-1]>=2) ans=max(ans,f[i-1]+g[i+1]+1);
printf("%d\n",ans);
return
0;}
【題目描述】
mushroom有一行數,初始時全部是0。現在mushroom有m個區間[l,r],他希望用以下操作得到新的序列。
從m個給定區間中選擇乙個區間[s,t],把區間中的數對應元素全部翻轉。(0變1,1變0)
請告訴mushroom他能得到多少區間。(模10^9+7)
【輸入格式】
第一行包含兩個整數n,m。表示n個數和m個區間。
接下來m行是所表示的區間。
【輸出格式】
乙個整數,表示能得到的區間數。
【樣例輸入】
3 3
1 1
2 2
3 3
【樣例輸出】
8 【資料範圍】
對於30%的資料,n,m<=20
對於60%的資料,n,m<=100
對於100%的資料,n,m<=100000
【樣例解釋】
每個位置都可以單個修改,所以有8種可能。
這道題其實一看就知道應該是那種**量少,思維難度高的題
當時就是直接開始yy
考慮m個區間互不重疊的情況,答案直接就是2^m
然後假設只有兩個區間,如果互不重疊,答案就是4,如果兩個區間有重疊部分,在草稿紙上一畫,好像也是4
然後我靈光一現,大膽推測,答案就是2^m,只不過重複的區間不算數,然後就unique區間去個重,2^cnt
報0後來考完看題解,才知道我這個思路其實沒有錯,但是漏了一種情況
如果有兩個區間首尾相接且不重疊,那麼答案就是4了,如果現在再來乙個大區間,正好把兩區間最左和最右覆蓋完,那麼這個大區間其實是沒有用的
也就是說每個區間算不算數,只需要看他左右兩個端點有沒有通過之前的區間連在一起
然後我們就可以用並查集來維護。
為了區分左和右把左邊搞成l-1
完整**:
#include
#include
using namespace std;
const int mod=1e9+7;
struct seq
a[100010];
bool cmp(const seq &a,const seq &b)
int n,m,ans=1,fa[200010];
int getfather(int
x)int main()
printf("%d\n",ans);
}
【題目描述】
冬眠了五年,光終於從夢中醒來。
千咲、要,大家都在。
隱約記得「昨天」的海船祭,愛花意外成為貢女,沉入海底。
海面冰封,卻有絲絲暖流在冰面之下湧動。
此時,愛花沉睡在祭海女神的墓地。她的胞衣在一點點脫落,化作一簇簇暖流,夾雜著她的感情,向海面上湧去。
愛花,你在**?
五年之後,紡已經成為海洋學研究科的大學生。
在紡的幫助下,光得知了海面下海流的情況。
紡告訴光,暖流一旦產生,就會不斷地向四周擴散,直到遇到海中的岩石。
紅腹海牛,快告訴光,愛花在**。
紡幫你繪製了一張海流情況圖,長度為n,寬度為m。
海很大,一邊有沙灘,一邊一望無際,但長度和寬度都不會超過300。沙灘是金黃色的,所以用y表示。海是藍色的,所以用b表示。暖流很暖和,所以用h表示
海中有大大小小的石頭。石頭很危險,所以用x表示
光相信自己一定能找到愛花(愛花的位置只有一種可能)
【輸入格式】
第一行包括兩個整數n,m。
接下來n行,每行m個字元。
【輸出格式】
僅一行,表示愛花的位置(如果你無能為力,請輸出 -1 ,只要你盡力,光不會責怪你)
【樣例輸入】
5 5
yyyhb
yyhhh
yhhxb
bbhbb
bbbbb
【樣例輸出】
2 3
【資料範圍】
對於30%的資料,n,m<=10
對於70%的資料,n,m<=100
對於100%的資料,n,m<=300
【樣例解釋】
在(2,3)出現第乙個h後,經過3s後,出現樣例輸入的地圖。
p.s. mushroom拜託他gf出的這題= =
題面巨長,巨難懂
最後一句看得我心痛
這道題暴力寫得好的話能a
直接去列舉哪乙個是原點,然後暴力模擬海流擴散的過程
考試的時候寫掛了
特判實在是有點多
記錄乙個海流擴散的時間,看有沒有海流擴散的範圍超過時間的
時間就通過看乙個點周圍有沒有b沒有擴散出去
完整**:
#include
#include
#include
#include
using
namespace
std;
const
int inf=0x3f3f3f3f;
queue
int,int> > state ;
int dis[310][310],vis[310][310],fx[4]=,fy[4]=;
int n,m,anx,any,tim;
char mp[310][310];
bool bfs(int x,int y)
if((mp[x1][y1]=='x' || mp[x1][y1]=='y'))
flag1++;
if( mp[x1][y1]=='h')
flag3++;
}if(x0==1) flag2--;
if(x0==n && n!=1) flag2--;
if(y0==1) flag2--;
if(y0==m && m!=1) flag2--;
if(flag3+flag1!=flag2 &&tim==inf) tim=dis[x0][y0];
}return
true ;
}int main()
printf("-1\n");
return
0;}
這次考試呢,題雖然簡單但是發揮的卻不盡人意
感覺狀態還不是很好
noip臨近了,一邊刷題一邊複習一邊調整狀態吧
以後做簡單題一定要仔細仔細再仔細
交題的時候要檢查檢查再檢查
嗯,就是這樣
比賽心得 NOIP2016總結
這次noip結束了。民間資料的結果出來以後,我對這個結果不是很滿意,覺得有幾點沒有做好 1 為了使 量小一點,我用了一種很不容易找錯的方法。結果只把前面的60 可以騙的測試點過了,其它的都沒過。所以,量大無所謂,首先得保證你的方法好寫 好調,這樣才能保證自己的正確率。2 資料測得太少。比如說第三題。...
NOIP普及組考試心得
考試小技巧 這有幾個關於博主本人的說明 1.c 選手 2.並不熟悉devc 3.2016普及組300分弱雞 這篇文章講述的是博主本人對於noip考試的幾個心得和技巧 目前只是初稿,一些詳細的事務會補上 1.士力架 巧克力 或曼妥思 糖果 不是開玩笑的,在考試的時候給自己隨手丟一顆有助於提神醒腦 2....
5天noip訓練心得
100 95 0 195 t1二分答案,並查集,很像noip2017 day2 t1 t2縮環,然後資料結構維護求答案,貌似也是原題 t3樹形dp,比賽上沒有做出來,90 70 60 220 t1dp隨便維護一下,比賽上沒看清題意,沒有注意到 1的情況 t2樹鏈剖分,我打錯一些細節,只有70分 t3...