Time of Update: 2018-12-03
轉載請註明出處:優YoU http://user.qzone.qq.com/289065406/blog/1303612537題目大意:把一個完全圖分成兩部分,使得串連這兩部分邊的權和最大。 解題思路:圖論的無向完全圖的最大割問題 (做網路最大流的時候同學們應該看過最小割,所以別問我什麼是最大割了。。。不懂的百度去。。。)可以用 隨機化演算法 Random Algorithm 去做 一開始我沒讀懂題,以為是求最大權。。。傻呼呼的用最了最小產生樹的演算法去做=
Time of Update: 2018-12-03
轉載請註明出處:優YoU http://user.qzone.qq.com/289065406/blog/1301474058大致題意:(與POJ1850基本一致)輸出某個str字串在字典中的位置,由於字典是從a=1開始的,因此str的位置值就是 在str前面所有字串的個數
Time of Update: 2018-12-03
轉載請註明出處:優YoU http://user.qzone.qq.com/289065406/blog/1301527312大致題意:有一串數字串,其規律為1 12 123 1234 12345 123456 1234567 12345678 123456789 12345678910 1234567891011
Time of Update: 2018-12-03
轉載請註明出處:優YoU http://user.qzone.qq.com/289065406/blog/1303311018 大致題意:就是給出三維座標繫上的一些球的球心座標和其半徑,搭建通路,使得他們能夠相互連通。如果兩個球有重疊的部分則算為已連通,無需再搭橋。求搭建通路的最小費用(費用就是邊權,就是兩個球面之間的距離)。 解題思路:不要被三維嚇到了,其實就是圖論的最小產生樹問題球心座標和半徑是用來求 兩點之間的邊權
Time of Update: 2018-12-03
轉載請註明出處:優YoU http://user.qzone.qq.com/289065406/blog/1304863551 大致題意:ACM比賽中,共M道題,T個隊,pij表示第i隊解出第j題的機率問 每隊至少解出一題且冠軍隊至少解出N道題的機率。 解題思路:真費解為什麼這題被劃分到了Hash。。。明明是 機率+DP ,機率不好真的拿不下這題T .T,建議數學不好的同學直接放棄算了。。。這題痛點不在編程,在於問題的轉化和理解=
Time of Update: 2018-12-03
轉載請註明出處:優YoU http://user.qzone.qq.com/289065406/blog/1301543725大致題意:給定一個矩形網格的長m和高n,其中m和n都是unsigned int32類型,一格代表一個單位,就是一步,求從左下角到右上方有多少種走法,每步只能向上或者向右走 解題思路:非常水的中學數學題,用組合做先簡單建立一個數學模型:只要給定了長m和高n,那麼要從左下角走到右上方,不管怎麼走,一定要往右走m次,往上走n次例如給定 m=5,n=4那麼可以
Time of Update: 2018-12-03
http://codeforces.com/contest/279/problem/AA:一個螺旋線,自己畫畫圖就知道規律,給你一個點,問這個點在該螺旋線上轉了幾個彎。思路:我是類比做的,因為資料量不大,從內往外暴力,看點是否在當前的線段上即可。#include <iostream>#include <string.h>#include <stdio.h>using namespace std;int dir[4][2]={1,0,0,1,-1,0,0,-1}
Time of Update: 2018-12-03
題意:求一個字串中重複出現兩次以上且不重疊的不同字串的個數。比如aaaa中 a和aa符合要求,而aaa和aaaa不符合要求。思路:好像標程給的是尾碼數組,但我是尾碼自動機過的,我們只要在尾碼自動機中的每一個狀態裡,設l,r分別表示在這個狀態中的子串集合的最左與最右位置,num表示這個狀態中的子串一共出現了多少次。因為在尾碼自動機中,每一個狀態代表了一類子串,(設一個狀態為p)它們的長度範圍是[p->par->val+1,p->val],(不妨設為left和right)則如果p-
Time of Update: 2018-12-03
轉載請註明出處:優YoU
Time of Update: 2018-12-03
轉載請註明出處:優YoU http://user.qzone.qq.com/289065406/blog/1300626728 在s2中找s1的子串而已,本來還想用LCS的,後來想想,這樣空間消耗太大,用滾動數組又麻煩。。。畢竟列數最多高達10W = = 所以還是算了,直接類比更快= =結論:水題一道,放開懷抱去類比吧\(^o^)/~注意下標範圍 int是夠不到10W的,我用了long //Memory Time //364K 0MS #include<iostream>#
Time of Update: 2018-12-03
http://codeforces.com/problemset/problem/123/D題意:給你一個字串S,定義一個函數F(S,x),其中x為S中的字串,F(S,x)的定義太麻煩啦,其實就是設x在S中出現了n次,則F(S,x)=n*(n+1)/2。要你求對於所有的x,F(S,x)的和。 思路:裸的尾碼自動機吧,首先設num為SAM中一個狀態所表示的子串的出現次數,這個由拓撲排序然後自底向上更新即可,然後對於每一個狀態(設為p),它所表示的串一共有p->val-p->par-&g
Time of Update: 2018-12-03
轉載請註明出處:優YoU http://blog.csdn.net/lyy289065406/article/details/6642789大致題意:八皇后的擴充:N皇后問題 PS: 我用了傳統DFS回溯 和 構造法 兩種方法去解決解題思路:先說說傳統回溯的DFS思路:按行逐行填放皇后,標記已填放的列,兩斜邊的標記則利用斜率進行標記,當準備填放的點與任一已填放的點之間的斜率為1或-1時,那麼該位置不允許填放 雖說是八皇后的擴充,但這麼一擴充就難很多了。。。題目要求n值範圍在
Time of Update: 2018-12-03
http://poj.org/problem?id=1509題意:就是求一個字串的最小標記法開頭字元的位置,如果有多個,求最小的位置。 思路:這道題用尾碼自動機來做本身就是閑著,有點大材小用的感覺,這道題有別的更加精簡的演算法的,時間複雜度也為O(n),但是這裡用SAM做能對SAM有更加清晰的認識,純粹是為了練習SAM吧。將原字元S串複製一下加到原字串之後變成SS,則我們便是要求SS長度為|S|的字典序最小的字串,於是我們可以構造出SS的SAM,從root開始每次走最小編號的轉移,走了|S|步以
Time of Update: 2018-12-03
轉載請註明出處:優YoU http://user.qzone.qq.com/289065406/blog/1299076400提示:翻轉棋,可以建模為多叉樹本題痛點有兩個,一個就是不要以全黑(或全白)作為目標進行搜尋,而是要把全黑(或全白)作為“根”,去搜尋樹葉,看看是否有 輸入的棋盤狀態。 另一個痛點需要一點數學功底,就是要知道 樹
Time of Update: 2018-12-03
題目大意:給你一串數列,a[1]~a[n]。有兩種操作操作1:", (1 ≤ l ≤ r ≤ n; 0 ≤ x ≤ 109). 表示將區間[l,r]中的數全賦值為x。操作2:"", (1 ≤ l ≤ r ≤ n; 0 ≤ k ≤ 5).
Time of Update: 2018-12-03
轉載請註明出處:優YoU http://user.qzone.qq.com/289065406/blog/1306975576 大致題意:給出數軸上的n個區間,每個區間都是連續的int區間。現在要在數軸上任意取一堆元素,構成一個元素集合V要求每個區間和元素集合V的交集至少有兩個不同的元素求集合V最小的元素個數。 解題思路:一、貪心演算法先對所有區間按末端點排序取第i個區間的最後兩個元素Selem和Eelem若第i+1個區間包含了這兩個元素,則跳到下一個區間所取的元素個數+0若第i+1個區間只
Time of Update: 2018-12-03
轉載請註明出處:優YoUhttp://user.qzone.qq.com/289065406/blog/1307201897 題目大意:給出M個運算式,判斷這些資訊是否可靠。 解題思路:差分約束+Bellman-Ford(建議用最佳化的Bellman-Ford)設dist[i]為超級源點到i點的距離,則建立<=的差分系統: 由於P A B X 指“確定A到B的距離(邊權)為X”從P A B X得到的差分系統為dist[A] - dist[B] >= X
Time of Update: 2018-12-03
轉載請註明出處:優YoU http://user.qzone.qq.com/289065406/blog/1311864665 大致題意:l 通過給定的六種操作將一個六位元變為另一個六位元,求需要的最少運算元。l 六種操作:l 左移和右移:將游標位置左移一位或右移一位,在第一位時無法左移,最後一位時無法右移。l 左交換和右交換:將游標位置的數字與第一位或最後一位交換l
Time of Update: 2018-12-03
題目大意:給一個長度為n的47序列(就是只有4和7),兩種操作:操作1:count 要求輸出當前數列的最長非下降子序列(注意是子序列,不是子串。。。一開始沒看清題WA半天)。操作2 : switch l r 將區間[l,r]之間的數反轉(這裡的反轉指的是4變成7 7變成4)然後就是給你一堆操作,對每一個操作1輸出相應的值。。。PS:這竟然是div1 的 E,我覺得就是一道很中規中矩的線段樹啊。。。
Time of Update: 2018-12-03
轉載請註明出處:優YoU http://user.qzone.qq.com/289065406/blog/1301472836大致題意:輸入兩個十進位正整數a和b,求閉區間 [a ,b] 內有多少個Round number所謂的Round Number就是把一個十進位數轉換為一個無符號位元,若該位元中0的個數大於等於1的個數,則它就是一個Round Number注意,轉換所得的位元,最高位必然是1,最高位的前面不允許有0規定輸入範圍: 1<= a