模擬測試20190811

2022-02-03 13:43:25 字數 3395 閱讀 8882

這次。。。。。。好像稍有起色?

不像前幾次那麼差了,但是還是不盡如人意

憑君莫話封侯事,一將功成萬骨枯,也許是在暗示著什麼吧

繼續保持

簡要說一下考試經歷

上來肛t1,想岔了把字首和相減想成了相加,複雜度平添乙個log,得到了和暴力一樣的好成績

然後肛t2,很快發現是乙個貪心,然而由於倍增打錯以及剪枝剪錯wa成了65分,鼓掌

然後發現只剩30分鐘,想t3毫無起色,開始打特判,得到了16分的好成績

總分60+65+16=141pts,rank10,emmm......還好吧

t1:入陣曲

60pts演算法:n^4直接做,或者n^3logn的分治(,zkt的n^3??),沒什麼差別......沒有

100pts演算法:我們將思路從相加改為相減,那麼如果我們固定了左右邊,直接開乙個桶從上掃到下就好了,複雜度o(n^3)

#include#define ll long long

#define re register

#define cri const register int

#define crs const register short

#define re register

#define db double

using

namespace

std;

int n,m,k,has[510

];short tong[2000010

];int sum[510][510

];inline

intmo(cri x)

ll solve(crs l,crs r)

short mid=l+r>>1

; ans=solve(l,mid)+solve(mid+1

,r);

for(re short i=1;i<=m;i++)

for(re short j=i;j<=m;j++)

for(re short t=mid+1;t<=r;t++)

for(re short t=mid;t>=l;t--)

}//cout

ans;

}signed main()

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

printf(

"%lld

",ans);

}

view code

t2:將軍令

考試想了想dp感覺不可做(%%yxm),然後發現這就是個貪心

每次找到剩餘深度最深的點,找到他的k層父親然後暴力更新這個點周圍k層就好了

複雜度o(kn)

#include#define ll long long

#define re register

#define cri const register int

#define re register

#define db double

#define mp make_pair

using

namespace

std;

int f[100010][8],dep[100010],v[100010

];int fa[100010],to[200010],la[200010],cnt,now,q[100010

];inline

void

add(cri x,cri y)

void

dfs(cri x,cri ff)

}void dfss(cri x,cri k,cri ff,cri is)}

inline

bool

as(cri x,cri y)

signed main()

q[n]=n;

dep[

1]=1

; dfs(

1,0);

sort(q+1,q+n+1,as

);

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

if(!v[q[j]])

printf("%d

",ans);

}

view code

t3:星空

最近t3日常神仙啊......

24分我們可以直接狀壓,但是我們發現根本沒用到k很小這個條件

這啟發我們把用n狀壓改變成用k狀壓,需要經歷下面幾次題意轉換

f,我們直接最暴力地暴力翻轉一段區間是o(n)的,考慮優化,區間修改轉單點修改,emmm,差分啊

我們設g[i]=a[i]^a[i+1],那麼每次修改[l,r]這個區間就變成了讓g[l-1],g[r]取反

顯然我們每次都要對1(表示數不同)進行操作,考慮以下兩種情況

1,改變乙個1和乙個0,可以看成乙個1轉移了位置

2,改變兩個1,可以看成乙個移動到另乙個的位置然後都變成0

這樣我們就把原來的操作轉換成了移動

s,原題轉換成了:讓原序列上的1進行移動,遇到1可以一起消除,問最小移動距離和

等等,最小距離?邊權為1?bfs不就好了嘛,bfs預處理出每兩個1之間的最短路就好了,複雜度o(nmk)

然後我們繼續轉換題意

t,有2k個物品,每次選兩個消去,消去操作有花費,問最小花費

k很小,簡單的狀壓dp就好了,複雜度o(k*22k)

等等,列舉兩個點不是k^2的嗎?為什麼複雜度是o(k*22k)?

顯然,我們發現每個點最終都要刪去,那麼我們在列舉點對的時候直接選乙個點固定下來,列舉另乙個點就好了

總複雜度o(nmk+k*22k)

#include#define ll long long

#define re register

#define cri const register int

#define re register

#define db double

using

namespace

std;

int n,k,m,b[100

];bool a[40010],g[40010

];int dis[20][40010],v[40010],is[20],len[20][20],f[700010],h[70010

];inline

void

spfa(cri x,cri num)

if(u-b[i]>=0&&v[u-b[i]]!=num)}}

}signed main()

memset(f,

0x3f,sizeof

f); f[(

1<1]=0

;

for(int i=(1

<1;i>=1;i--)

printf("%d

",f[0

]);

return0;

}

view code

2019 08 11 測試工程師筆試

2019 08 11晚上7.00 8.30進行筆試 題型 5道單選題,5道多選題,2道程式設計題 選擇題全部是關於協議 程序的 eg 關於tcp ip傳輸層協議的描述,錯誤的是 關於程序的描述,正確的是 linux下如何在多個程序間進行資料共享 兩道程式設計題 猜字謎謎面為任意乙個不包含重複的字串a...

2019 08 11考試報告

這次考試在策略上出了問題,主要還是因為不夠強。先打了t1t2的暴力,感覺t1似乎不可做,各種資料結構都用不來,t2部分分是個小胖守皇宮,但現在回憶有些難,之後嘗試了點分治,打完過了樣例但是不久就被手模的樣例卡掉了,最後想出了正解的貪心,然而卻因為大意手模錯了樣例 其實還是思路不夠明確 所以只好把它稍...

愛上 Mybatis原始碼 (2019 08 11)

第一次學習原始碼,自己很難吃透原始碼,也做不到直接擼原始碼,一句一句的解析。先學習一下別人的文章,吃透原始碼的流程,日後有能力了再逐句擼。原始碼的樂趣就在於首先能明白為什麼我在用框架的時候要這樣用,以及明白整個流程以後,幫助我們排錯,避免問題。總覽 mybatis 原始碼結構 sqlsessionf...