wtclwtcl!! t3的簡單式子我推了半個小時才推正確額額額,導致沒時間做t2 。
t1:nkoj4312 飛行管制
題目大意:給定若干架飛機的原定起飛時間和延誤單位時間的代價,先要求在第k + 1分鐘才能開始髮機,求最小代價。
題解:應該是一道老題了,我感覺我見過的。反正話不多說,這個題直接維護乙個最小代價的小根堆,然後每次直接取出堆頂計算代價即可。
#includeusingt2(訂正) nkoj7842 疫情防控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);
}
這個題連向神都沒有做出來。。我以為它很難。。。
題目大意:有n座城市和m條雙向道連線各個城市,先要求將雙行道改為單行道,使任兩座都只有一種走法,判斷是否有解。
題解:我一拿到這個題就傻了,還想著去跑dfs或者搞一搞強聯通分量之類的東西。。
然鵝事實上這個題只需要判斷1至n是否有環,有則有解,否則無解,於是直接用並查集維護點是否已經聯通即可。
#include usingt3 nkoj7836 玩玩異或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");
}
題目大意:給定一串數,要求支援兩個操作:單點修改和區間查詢所有子區間異或和的異或和。
題解:一開始看到這個題傻了,後來看到丁神(%%%!!!)爆切此題,我再仔細分析此題,發現這就是個大水題。
單點修改很簡單,用a[i]記錄i位置當前的數值,眾所周知乙個數異或它本身等於0,我們利用這個性質,可以在修改時先再異或一次a[i]然後直接修改a[i],再將修改後的值異或一次。而區間查詢我推了好久,發現了兩個規律:
1. 若區間左端點位置和右端點位置奇偶性不同則答案為0.
2. 若區間左右端點均為奇數字,則答案等於區間內所有奇數字上的數的異或和,若都為偶數則答案等於區間內所有偶數字上的數的異或和。
又因為異或具有字首性質,於是想到用樹狀陣列分別維護奇數字和偶數字異或和,查詢時類似字首一樣異或即可(這大概是我寫過的最詳細的題解了)。
#include usingt4 nkoj3751 掃雷遊戲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}}
}
題面:有一款有趣的手機遊戲。棋盤上有n顆地雷,玩家需要至少掃掉其中的k顆雷。
每一步,玩家可以用手指在手機螢幕上劃一條直線,該直線經過的地雷都會被掃除掉。
問,最少需要劃幾次就能掃除k顆以上的地雷?
題解:這個題狀壓 + 記憶化搜尋,先通過斜率判斷是否三點一線,用狀壓記錄下共線的情況,然後直接有沒掃的點直接逐個搜尋將它掃掉即可。
ps:這個題我因為判斷共線時將乙個減號寫成了乘號直接調了半個小時(小聲嗶嗶)。
#include usingnamespace
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點左右我們到達了這個陌生的地方,睡眼惺忪,滿身疲倦,然後出機場大門,有人來接,輾轉來到了我們即將呆乙個...