這次。。。。。。好像稍有起色?
不像前幾次那麼差了,但是還是不盡如人意
憑君莫話封侯事,一將功成萬骨枯,也許是在暗示著什麼吧
繼續保持
簡要說一下考試經歷
上來肛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 longview code#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);
}
t2:將軍令
考試想了想dp感覺不可做(%%yxm),然後發現這就是個貪心
每次找到剩餘深度最深的點,找到他的k層父親然後暴力更新這個點周圍k層就好了
複雜度o(kn)
#include#define ll long longview code#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);
}
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 longview code#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;
}
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...