2017 10 25考試總結

2021-08-09 20:14:24 字數 3513 閱讀 3349

其實這次考試的題目並不難,但是卻考得比較崩。總結下原因有這麼些:

詳細請戳鏈結!

偷個懶應該沒人會發現吧

第一眼就是線段樹,這不明擺著嘛,利用最長連續零的套路,維護左右區間的顏色狀態(雜色/ci色),還有區間最左邊最右邊的顏色,順便計數即可。然而,這種輕輕鬆鬆就ac的想法還是too *****了。但因為n,

m<=

200000

,建樹,加更新經常需要遞迴至最下層,效率比線段樹低了很多,而且這題的常數比較大。

後來打完了,回來看這道題,發現可以優化,但是時間不夠,開始打對拍。

我想的優化是,因為修改和查詢都是對於全區間而言,那麼顏色種類數k經過修改只可能變得更少,因為同種顏色必定會同時修改,不可能分為兩種或多種顏色。而且既然線段樹有較大的可能性要遞迴到最底層,那麼就可以用zkw線段樹優化,直接採用鏈式前向星的思想,修改特定顏色的時候,直接可以查詢,並且把修改當做單點修改。

然後蒟蒻就想不到有什麼比較好的優化方法了……然後在下考前幾分鐘草率地打了個對拍,拍了幾百組就草率地交了。

期望得分:70 實際得分:50

考後,打了優化的思想,發現也是50分,資料一點梯度都沒有啊喂

事實上,我從第一眼就被誤導了,打線段樹真個錯誤的決定。正解要用鍊錶優化和啟發式合併。

也就是,修改的時候,並不實際去進行修改,而是做標記,用nc[i]陣列表示第i個現在是什麼顏色,在讀入的時候,就先處理出ans,修改時維護即可。在合併時,將元素較少的顏色合併到元素較多的顏色上。和題目中要求的反了?沒關係,標記一下就好了。

#include 

#include

#include

using

namespace

std;

template

inline

void read(tp &x)

const

int size=1000010;

int n,m,ans,c[size],nc[size],head[size],tail[size],nxt[size],cnt[size];

void merge(int a,int b)

for(int i=head[a];~i;i=nxt[i])

c[i]=b;

nxt[tail[b]]=head[a];//接起來

tail[b]=tail[a];

head[a]=tail[a]=-1;//將a顏色清空

cnt[a]=0;

}int main()

while(m--)

}return

0;}

詳細請戳鏈結!

再偷個懶應該還是沒人會發現吧

考試的時候想複雜了,看了很久,覺得有點像組合數學+容斥原理,然後就需要知道連續兩次的,減去連續三次,加上連續四次……但是這個常數不好推啊,我暴力+手推,推了兩次公式,均被自己推翻。當時內心是崩潰的,而且心態又不是很好,因為先做了第三題(欲知有多慘,見下)……所以推了好久,沒推出來,就去打對拍了,沒救了,放棄**qwq

期望得分:0 實際得分:(已和諧)

事實上,第二題是最水的……看來只有我沒有推出來,被各位神犇暴踩qaq

考慮補集,首先所有方案是mn

,如若要沒有任意兩個相鄰方塊顏色相同,顯然我們有m∗

(m−1

)n−1

,那麼答案就是兩者的差了,注意開long long,打個快速冪再%一下。

#include 

#include

using

namespace

std;

typedef

long

long ll;

const ll mod=100003;

ll n,m;

ll power(ll a,ll b)

return res;

}int main()

沒找到原題,偷不了懶了……

給你一張含有 n 個點 m 條邊的聯通無向圖,記錄 1 號點到每個點的最短路長度,詢問

去掉與 i 號相鄰的所有邊後,1 號點到多少個點的最短路長度改變,若不連通則也視為改

變。第一行兩個正整數 n,m,

接下來 m 行,每行三個正整數數 i,j,k,表示一條邊

n 行,第 i 行表示去掉與 i 號相鄰的所有邊後,1 號點到多少個點的最短路長度改變。

2 1

1 2 11 1

30% :

n<=

100,

m<=

300

100% :

n<=

5000,m

<=

20000

,邊權均為不超過 100 的正整數。

草率地看完題目後,我聯想到了noip2013貨車運輸。剛開始的想法(錯的!)是找一棵最小生成樹,然後進行一次樹形dp,找到每個節點的兒子節點並統計個數cnt,則刪去該節點之後最短路徑長發生改變的就是cnt。舉了乙個例子,掛了,發現當產生了有多條路徑到x點均為最小權值時會掛,於是又做了各種麻煩的操作改……然而,打了一發對拍,慘烈地掛了。誰說最短路徑的路徑一定在最小生成樹上的……

期望得分:0 實際得分:(已和諧)

正解需要先跑一邊spfa跑出單源最短路,然後再以每個點檢查,找出作為最短路徑的邊,並重新建圖,然後對於每乙個刪去的節點,bfs一下,檢視能訪問到多少節點,未訪問到的就是改變的節點數。

這叫做建最短路圖。貌似還是很有用的。

吐槽:重新建圖超級麻煩,還要寫兩個不同的鏈式前向星,陣列開到手抖

#include 

#include

#include

#include

using

namespace

std;

template

inline

void read(tp &x)

const

int maxn=5010,maxm=20010;

int p,head[maxn],to[maxm<<1],w[maxm<<1],nxt[maxm<<1];

int n,m,dis[maxn],que[maxn],p2,h2[maxn],t2[maxm<<1],n2[maxm<<1];

bool inq[maxn],vis[maxn];

queue

q;void insert(int u,int v,int tw)

void insert2(int u,int v)

void input()

}void spfa()

}for(int i=1;i<=n;i++)

}}void work(int k)

for(int i=1;i<=n;i++)

if(!vis[i])

ans++;

printf("%d\n",ans);

}int main()

20171025 迷戀小概率事件

有一次,乙個朋友去買雙色球,我沒買過,所以好奇,也就跟過去看看怎麼買。他在投注的時候,我說 你買這幹嘛呢,又中不了,還不如買棒棒糖。聽到這話店員不樂意了,回敬說 你吃棒棒糖能吃出500萬嗎?我一想也是啊,兩塊錢又不多,萬一呢?新聞裡不也經常報道,某某一不小心買一張彩票就中了。或許下乙個就是我。於是鬼...

考試總結 CQOI2017 考試總結

再奮鬥一年,爭取ak noip2016 cqoi2017 這是去年我立的flag。看考場,電腦挺快,而且配置和評測機一樣,可以放心的在自己的電腦上卡常測試啦,好評。碼了一道fft的題,沒網只好拷著回家交,鍵盤蜜汁小,enter佔據了兩行,旁邊還有關機按鈕。座位安排奧妙重重,和巴蜀dyf大神坐在一起。...

MBA考試總結

終於考完了 mba入學統考,兩年來參加了兩次,感覺還是挺辛苦和有壓力的。第一年沒有通過是因為之前了解太遲,大概準備了 20天左右,最後還是功成垂敗。09年其實也一直沒有心情複習的,逼到最後的 20天,狠了一把勁,還是狠狠的複習了幾天,貌似今年應該可以通過了。總結經驗如下 1 如果你決定去做一件事,請...