1 16 高一周賽總結

2022-07-02 08:18:07 字數 3007 閱讀 6439

wtclwtcl!! t3的簡單式子我推了半個小時才推正確額額額,導致沒時間做t2 。

t1:nkoj4312 飛行管制

題目大意:給定若干架飛機的原定起飛時間和延誤單位時間的代價,先要求在第k + 1分鐘才能開始髮機,求最小代價。

題解:應該是一道老題了,我感覺我見過的。反正話不多說,這個題直接維護乙個最小代價的小根堆,然後每次直接取出堆頂計算代價即可。

#includeusing

namespace

std;

#define ll long long

const ll maxn = 600005

; struct

node

}a[maxn];

priority_queue

, greater >q;

ll ans[maxn];

main()

for(ll i = 1; i <= k + 1; i++)

ll hd = k + 1, tl = k + 2, sum = 0

; ans[q.top().id] =hd;

sum += (hd - q.top().id) *q.top().m;

q.pop();

for (ll i = 2; i <= n; i++)

if (tl <=n)

hd++;

sum += (hd - q.top().id) *q.top().m;

ans[q.top().id] =hd;

q.pop();

}printf(

"%lld\n

", sum);

}

t2(訂正) nkoj7842 疫情防控

這個題連向神都沒有做出來。。我以為它很難。。。

題目大意:有n座城市和m條雙向道連線各個城市,先要求將雙行道改為單行道,使任兩座都只有一種走法,判斷是否有解。

題解:我一拿到這個題就傻了,還想著去跑dfs或者搞一搞強聯通分量之類的東西。。

然鵝事實上這個題只需要判斷1至n是否有環,有則有解,否則無解,於是直接用並查集維護點是否已經聯通即可。

#include using

namespace

std;

bool mark[100005

];int fa[100005

];int find(int x)

intmain()

else mark[fx] = 1

; }

for (int i = 1; i <= n; i++) if (!mark[find(i)]) return puts("

no"), 0

; puts(

"yes");

}

t3 nkoj7836 玩玩異或

題目大意:給定一串數,要求支援兩個操作:單點修改和區間查詢所有子區間異或和的異或和。

題解:一開始看到這個題傻了,後來看到丁神(%%%!!!)爆切此題,我再仔細分析此題,發現這就是個大水題。

單點修改很簡單,用a[i]記錄i位置當前的數值,眾所周知乙個數異或它本身等於0,我們利用這個性質,可以在修改時先再異或一次a[i]然後直接修改a[i],再將修改後的值異或一次。而區間查詢我推了好久,發現了兩個規律:

1. 若區間左端點位置和右端點位置奇偶性不同則答案為0.

2. 若區間左右端點均為奇數字,則答案等於區間內所有奇數字上的數的異或和,若都為偶數則答案等於區間內所有偶數字上的數的異或和。

又因為異或具有字首性質,於是想到用樹狀陣列分別維護奇數字和偶數字異或和,查詢時類似字首一樣異或即可(這大概是我寫過的最詳細的題解了)。

#include using

namespace

std;

int c[200005][2], a[200005

], n, q;

void modify(int x, int p, int

k) int query(int x, int

k)int

main()

else

else}}

}

t4 nkoj3751 掃雷遊戲

題面:有一款有趣的手機遊戲。棋盤上有n顆地雷,玩家需要至少掃掉其中的k顆雷。

每一步,玩家可以用手指在手機螢幕上劃一條直線,該直線經過的地雷都會被掃除掉。

問,最少需要劃幾次就能掃除k顆以上的地雷?

題解:這個題狀壓 + 記憶化搜尋,先通過斜率判斷是否三點一線,用狀壓記錄下共線的情況,然後直接有沒掃的點直接逐個搜尋將它掃掉即可。

ps:這個題我因為判斷共線時將乙個減號寫成了乘號直接調了半個小時(小聲嗶嗶)。

#include using

namespace

std;

struct

node a[(

1<< 16) + 5

];int map[20][20], f[(1

<< 16) + 5

], n, m;

inline

bool check(int i, int j, int k)

int dfs(int

s) }

}return

f[s];

}int

main()

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

}memset(f,

0x3f, sizeof

(f));

//for(int s = 0; s <= tot; s ++)f[s] = 0x3f3f3f3f;

printf("

%d\n

", dfs(tot));

memset(map,

0, sizeof

(map));

memset(a,

0, sizeof

(a));}}

工作一周總結

乙個字 累.不過確實可以學到蠻多東西的.總的來說,群碩還是很不錯的.第一天,弄錯人了,可糗了 真的是丟臉丟到家了.不過謝謝 浩南哥哥 在我工作的第一天請我吃飯的,很是感動 第二天,daily report的郵件沒發對,白白浪費了兩個小時,很不好意思地讓 晚輩 等了那麼久 第三天,被人捉弄,把我名牌給...

一周總結 09 11 13

用.net環境開發機房收費系統這是乙個中期任務,應用這大半年來學到的知識,用.net做東西,說來容易,做來難呀。設計模式,一遍不夠,兩邊太淺,一遍一遍慢慢體會 uml建模,多年開發經驗的軟體開發人員都不很熟練的操作rose的相關建模工具來進行軟體建模,這說明什麼呢?功成名就不是一蹴而就的,別急,別急...

TWU一周總結

之前很鬱悶的事情是我忘記了部落格的使用者名稱和密碼,所以一直沒有更新,估計這種事情也只能發生在我的身上了吧。8。11號正式入職,那天也第一次出國,西安 成都 bangalore,一天的跋涉,在凌晨4點左右我們到達了這個陌生的地方,睡眼惺忪,滿身疲倦,然後出機場大門,有人來接,輾轉來到了我們即將呆乙個...