考試反思 0921csp s模擬測試49 困頓

2022-02-18 15:26:53 字數 3314 閱讀 9828

太弱。還是太弱。

拉不開分差,離第一機房分數線估計還是300多分。

但是,還是要罵:xx出題人。

部分分非常少且沒有意義,t1基本只有0/純暴力20/100三個檔,

t2正解是n2但是n3一分不給,還要卡n2的空間,t3的n5有51分但沒有任何提示,除了送了與正解根本就無關的7分。

而且造的資料還出了鍋,這個出題人啊。。。

出題人是有多痛恨人類。

開考看題。

t1上來先看錯了題以為是xor,然後就是trie裸題了,然後直接開始打。

很快地打出來發現過不了樣例,然後發現是mod。

重新看題,全不會,傻眼了。

想再找一道最簡單的題先做穩住,但是無從下手。

剛開始t2有乙個n3的思路,發現沒有設分,就絕望了。

想了乙個半小時多吧,想出了n2,然後發現卡空間。

太弱了沒有直接想到正解,zkt就知道直接按x排序,我和臉和toot都是按y排的。

然後大臉秒掉了空間優化,toot放棄了空間優化拿80分走了。

我以為只有50分於是不想放棄,但是剩下兩題還沒有打,於是走了。

回去弄了乙個t1的隨機化+測試點分治暴力,然後忘記取模,本來40分的**炸成0了。

因為沒有打正解所以就沒有打對拍。。。

然後t3順手把特殊性質7分拿下,直接放棄。

回t2,對拍,然後空間優化。

思路還可以,可以節約25%的空間,但是忘了vector會翻倍導致空間浪費,於是結果就是和toot沒優化一樣,80分。

暴力也要打對拍。

對於卡空間的題要精打細算,注意vector的2倍空間。

get黑科技:resize。

還是沒有能把所有能拿下的分拿下,還是弱啊。。。

t1:養花

分塊。預處理塊中對於100001的所有詢問的最大答案。

預處理的方法類似於lower_bound但是可以記在陣列上就去掉了不必要的log。

開陣列lst[i]記錄下這個塊裡小於等於i的值裡的最大值。

那麼對於每乙個詢問就可以搞了:mod k的最大值就是max(lst[k-1],lst[2k-1]-k,lst[3k-1]-2k...)

而計算這個式子的複雜度是調和級數$\sum\limits_^ \frac = ln n$

所以總的複雜度就是$o(\sqrt \times 100001 \times ln 100001 + m \sqrt)$

然而其實不是$\sqrt$,會t的,塊要開的稍大一點(1300左右)跑的能快一些

1 #include2 #include3

using

namespace

std;

4#define s 1234

5#define n 100001

6int lst[100005],n,m,x[130005],ans[101][130005],bl[130005];7

intmain()

17 ans[i][j]=max(ans[i][j],lst[k-1]%j);18}

19}20for(int t=1,l,r,q;t<=m;++t)printf("

%d\n

",ans);28}

29 }

view code

思路積累:

t2:折射

dp式子都不一樣。我說我的按y排序後的n2空間的了。(因為另一種我並想不到)

先把x離散化,然後按y排序。我是dp[i][j]表示選到了第i個裝置,上上個選的裝置的x是j。

先考慮n3,emm還是不說了吧真的是暴力啊,加個if就行。

然後其實我們發現是乙個區間加,那麼字首和一下複雜度就對了。

這時候的dp[i][x[j]]+=dp[j][x[i]];

我們發現對於每乙個i只從前面的i-1項轉移而來,那麼總的就是1/2 n2而不是n2

那麼我們把要加的專案提前放進vector裡,把dp陣列滾動,就不會再炸空間了。

1 #include2 #include3 #include4

using

namespace

std;

5 vectornum[6001

];6 vectorpos[6001];7

int mod(int p)

8struct ps}p[6005];9

bool com(ps a,ps b)

10int dp[6001

],n,ans;

11int

main()

28 printf("

%d\n

",mod(ans+n));

29 }

view code

思路積累:

t3:畫作

大神題。

有乙個結論就是最優方案中一定有一種的所有操作的交集不是空集。

那麼我們只要抓住某乙個點向四周擴充套件,把所有同色區域取反就好了,知道全部區域都是白色。

複雜度$o(n^5)$

同色區域被多次擴充套件了,我們只在乎最遠的點幾次能擴充套件幾次。

同色連0邊,異色連1邊,跑bfs即可。

因為懶得打雙端佇列所以開了100個佇列。。。(因為曼哈頓距離不會超過100)

1 #include2 #include3

using

namespace

std;

4const

int xx=,yy=;

5#define tx x+xx[p]

6#define ty y+yy[p]

7char s[55][55];int o[55][55],n,m,dt[55][55],qx[105][2555],qy[105][2555],qh[105],qt[105],ans=123;8

intmain()

23int mx=0;24

for(int x=1;x<=n;++x)for(int y=1;y<=m;++y)mx=max(mx,dt[x][y]),dt[x][y]=1000

;25 mx+=mx&1^o[i][j];

26 ans=min(ans,mx);

27 }printf("

%d\n

",ans);

28 }

view code

考試反思 1114csp s模擬測試115 零遲

最後一次了,允許自己混進榜裡吧。沒有心態,原題不會做 真的忘了 t2的搜尋沒有分。零 遲 酷刑 只有在最後的時刻才開始意識到,一切的一切都已經晚了。就在眼前了。沒有機會了。退役,告別oi,粉碎夢想,這,就是最嚴苛的酷刑。生存,生存!hzoi2018!所有人!一年走來,我們還要繼續走下去!csp s,...

考試反思 1112csp s模擬測試111 二重

還是ak場。考前信心賽?而且t3的部分分還放反了所有80的都其實只有50。總算在ak場真正ak了一次。手感好,整場考試很順利。要不是因為t3是原題可能就沒這麼好看了。20mint1,50mint2,去趟廁所回來70min想到t3,110min寫完調完對拍完,然後去學skyh寫平衡樹了。然後我發現我不...

考試反思 1110csp s模擬測試108 消遣

是套廢題。t1題面錯了,t2細節多而暴力 部分分,t3題目錯了。t1 打表 題面應該是輸出差值期望而不是答案值期望。看到題目,果斷打表。答案就是所有值差之和除2的k次方。1 include2 int k,a 333333 long long ans 3int main view code t2 蛇 ...