Time of Update: 2018-08-21
4556: [Tjoi2016&Heoi2016]字串 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 423 Solved: 182 [ Submit][ Status][ Discuss] Description
Time of Update: 2018-08-21
首先給出一個結論:如果有n堆火柴,每堆火柴分別有a1、a2、a3…an根火柴,在傳統Nim遊戲的規則下,若a1^a2^a3^…^an=0則先手必敗。並且這兩個結論是完全等價的,也就是說如果不滿足這個條件則先手必勝。 那麼在本題中,在先手取完一些火柴之後,如果剩下火柴存在一個子集使得異或和為0,那麼後手把另外的火柴去掉,留下一個異或和為0的狀態,這樣先手必敗。 那麼為了防止這種情況,先手取完之後就不能有一個子集使得子集異或和為0,用線性基處理一下即可。
Time of Update: 2018-08-21
題目連結:http://www.lydsy.com/JudgeOnline/problem.php?id=2330 結題報告: 裸的差分約束,本應建負邊求最短路,但為了好處理建反圖正邊,再從0點向每個點建一條長度為1的邊確保每個人都至少拿一個糖,最後求最長路即可。 注意資料要卡建邊方式,如果Te了可以參考我的建邊方式。 #include<iostream>#include<cstdio>#include<cstring>#include<
Time of Update: 2018-08-21
題意不說了。 有點鬼畜,比賽只會50分,花了30分鐘思考一無所獲,連按模分組都沒想到遲早退役。 然後花了十分鐘打50分扔了這題。巨虧。 其實比賽還剩一個小時的時候發現是斜率最佳化,但是沒時間打所以就放了。。 事實上這並不是簡單的斜率最佳化,,因為如果直接做不能保證他的斜率是單調遞增的。 首先先把點按模分組,只有%c相同的點才能被到達。
Time of Update: 2018-08-21
題意:連結 方法: Hash+倍增floyd 解析: 首先這個BZ的無腦翻譯我真是受不了。 加倆條件 所有串的長度總和不超過100000,並且對於任意不同子串A,B,A不包含於B,B不包含於A。 然後可以做題了。 首先,我們可以暴力hash搞出來如果i串後面接j串則需要增加多少長度。 這個n非常的小所以直接開數組記錄。 然後就是倍增floyd了。 至於前半部分為什麼是複雜度可以接受的。 參見PoPoQQQ的證明,總之我們要求的
Time of Update: 2018-08-21
題意:求1-n的歐拉函數首碼和,n<=10^10; 這題要有一定數學基礎。。 推導過程可以看tangjz(%神犇)的博文,http://blog.csdn.net/skywalkert/article/details/50500009 這裡就不贅述了,畢竟挺簡單的。 問題是求出來了式子以後怎麼做。
Time of Update: 2018-08-21
題目: 我是超連結 題解: 建圖的話和有源匯可行流一樣 求解方法: 在新圖上跑ss到tt的最大流(附加源匯) 若新圖滿流,那麼一定存在一種可行流 記此時 ∑f(s,i)=sum1 ∑f(s,i)=sum1 將t->s這條邊拆掉,在新圖上跑s到t的最大流(原源匯) 記此時 ∑f(s,i)=sum2 ∑f(s,i)=sum2 最終答案即為 sum1+sum2 sum1+sum2
Time of Update: 2018-08-21
DMA(Direct Memory Access),即直接儲存空間存取,是一種快速傳送資料的機制。資料傳遞可以從適配卡到記憶體,從記憶體到適配卡或從一段記憶體到另一段記憶體。
Time of Update: 2018-08-21
題意就不說了。。 直接上主席樹。。無腦。。 #include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)using namespace std;int n,m,q;const int N=2e6;
Time of Update: 2018-08-21
差分約束題。。學了一下差分約束,我覺得還是挺簡單的,考慮f[u]-f[v]<=c,發現和最短路的鬆弛操作神似,最短路跑完之後對於一條邊(v,u),顯然有d[u]<=d[v]+c,不就是上面差分約束的式子嗎。。那就轉化成最短(長)路做咯,以最短路為例了,對於每個f[u]-f[v]<=c,連一條v到u權值為c的邊,然後跑最短路,如果有負環那就說明無解,沒有的話跑完之後各點的d值就是解。。 對於本題,d[a]==d[b],有 d[a]-d[b]>=0, d[b]-d[a]&
Time of Update: 2018-08-21
一、單項選擇題(共15題,每題1.5分,共計22.5分;每題有且僅有一個正確選項) 1. 以下哪個是物件導向的進階語言( )。 A. 組合語言 B. C++ C. Fortran D. Basic B 電腦語言具有進階語言和低級語言之分。而進階語言又主要是相對於組合語言而言的
Time of Update: 2018-08-21
DMA是什麼。 DMA(Direct Memory Access,直接記憶體存取) 是所有現代電腦的重要特色,它允許不同速度的硬體裝置來溝通,而不需要依賴於 CPU 的大量中斷負載。否則,CPU 需要從來源把每一片段的資料複製到暫存器,然後把它們再次寫回到新的地方。在這個時間中,CPU 對於其他的工作來說就無法使用。(百度百科) DMA可以看作是資料搬運工 DMA有什麼用。
Time of Update: 2018-08-21
【trick&&吐槽】 1,縮環重建圖的時候一定要注意映射關係。 【題意】 有n(3e5)個點,m(3e5)條雙向邊(xi,yi,zi)。 沒有重邊沒有自環(這個條件其實無所謂) 有些邊是特殊的邊(zi==1) 每條邊只能經過一次 問你我們能否有一條路徑,使得我們可以從ST出發到達ED 【類型】 雙連通分量tarjan縮環 BFS 【分析】 這題思考起來有些不著邊際。 關鍵資訊是——一條邊只能經過一次。 什麼情況下一條邊我們會經過多次呢。 經過多次必然形成了環。
Time of Update: 2018-08-21
在多線程編程當中對於共用變數的控制非常重要,平常的程式當中由於是單線程去處理的,因此不會出現變數資源同時被多個線程同時訪問修改,程式的運行是順序的。然而多線程的環境中就會出現資源同時被多個線程擷取,同時去做修改的狀況,可以看下面一段程式: public class MyThread implements Runnable{private int i=0;public void run() {try{i++;System.out.println(Thread.currentThread(
Time of Update: 2018-08-21
之前用FFmpeg的H264編碼器發現編碼出來的視頻延時很大,在解碼器一端最佳化各種可能產生延時的地方之後,延時還是有一秒,上網一查發現很多人遇到相同的問題,不過好在看到一個文章給出了這個問題的解決方案。 原來,FFmpeg的H264編碼器為了提高編碼的映像品質,預設會緩衝多幀映像,這個緩衝幀數跟GOP大小有關。我程式設定GOP等於100,結果緩衝了20多幀。為了降低編碼延時,可以添加-preset:v ultrafast和-tune:v
Time of Update: 2018-08-21
簡單的單點修改,求區間最值 #include<bits/stdc++.h>#define max_N 800000using namespace std;int ans; //求和int big; //求最大值struct seg{ int l,r,v,maxn;}tree[max_N];void build(int l,int r,int k) { tree[k].l=l; tree[k].r=r;
Time of Update: 2018-08-21
題目大意 一個長度為 n 的序列 a ,設其排過序之後為 b ,其中位元定義為 b[n/2] ,其中 a,b 從 0 開始標號 , 除法取下整。 給你一個長度為 n 的序列 s 。回答 Q 個這樣的詢問 : s 的左端點在 [a,b] 之間 , 右端點在 [c,d] 之間的子序列中 ,最大的中位元。 其中 a<b<c<d a。 位置也從 0 開始標號。 我會使用一些方式強制你線上。 解題思路
Time of Update: 2018-08-21
又是裸題,丟個模板跑 代碼: #include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<vector>#include<stack>using namespace std;const int SIZE=100010;int head[SIZE],nxt[SIZE],tot=0;int to[SIZE];void
Time of Update: 2018-08-21
** Description ** 在一個5×5的棋盤上有12個白色的騎士和12個黑色的騎士, 且有一個空位。在任何時候一個騎士都能按照騎士的走法(它可以走到和它橫座標相差為1,縱座標相差為2或者橫座標相差為2,縱座標相差為1的格子)移動到空位上。 給定一個初始的棋盤,怎樣才能經過移動變成如下目標棋盤: 為了體現出騎士精神,他們必須以最少的步數完成任務。 ** Input **
Time of Update: 2018-08-21
求網路流有很多演算法,這幾天學習了兩種,記錄一下EK演算法。 首先是網路流中的一些定義: V表示整個圖中的所有結點的集合.E表示整個圖中所有邊的集合.G = (V,E) ,表示整個圖.s表示網路的源點,t表示網路的匯點.對於每條邊(u,v),有一個容量c(u,v) (c(u,v)>=0),如果c(u,v)=0,則表示(u,v)不存在在網路中。相反,如果原網路中不存在邊(u,v),則令c(u,v)=0.對於每條邊(u,v),有一個流量f(u,v). 一個簡單的例子.