Time of Update: 2018-12-03
題目大意: 給出一根長為l的木棒,要切指定的n刀(在木棒上的絕對位置)。而每一刀的消費是被切的木棒長度,求最小總消費。另外,注意輸出格式:e.g. The minimum cutting is 200. 題目類型: dp。分析:①開始還在想是不是可以貪心之類的(雖然知道做的是dp篇=。=),於是就想決策,考慮是不是每次要切較中間的部分,但第二個sample就不符合。還是老實想dp吧。②看了下輸入 l < 1000, n <
Time of Update: 2018-12-03
問題描述: 給定一個整數序列a[1..N],定義sum[i][j]=a[i]+a[i+l]+……+a[j],將所有的sum[i][j]從小到大排序(其中i,j滿足1<=i<=j<=N),得到一個長為N*(N+1)/2的序列,求該序列中的第k個元素。輸入格式(ktm.in) 第一行有兩個整數N,k,其中0<N<=20000,1<=k<=N*(N+1)/2,資料保證任何一個sum[i][j]的絕對值不超過2^30。 接下來N行每行一個整數。
Time of Update: 2018-12-03
題意: 給出一個f(x), 表示不大於x的正整數裡,不整除x 且 跟x有大於1的公約數 的數的個數。定義F(x), 為不大於x的正整數裡,滿足f(x)的值為奇數的數的個數。題目就是求這個F。分析:打表找規律的方法我就不說了。這裡我們來簡單推理證明下。先來看f(x),“不整除x” 等同於 不是x的約數,“跟x有大於1的公約數” 等同於 不是x的互質數。而且從F的定義知道,我們只需要考慮f(x)的奇偶性即可。所以, f(x) = x - 約數個數 - 互質數個數 +1
Time of Update: 2018-12-03
凸多邊形間最大距離給定兩個凸多邊形 P 和 Q, 目標是需要找到點對 (p,q) (p 屬於 P 且 q 屬於 Q) 使得他們之間的距離最大。 很直觀地,這些點不可能屬於他們各自多邊形的內部。 這個條件事實上與直徑問題非常相似: 兩凸多邊形 P 和 Q 間最大距離由多邊形間的對踵點對確定。 雖然說法一樣, 但是這個定義與給定凸多邊形的對踵點對的不同。 與凸多邊形間的對踵點對本質上的區別在於切線是有向且反向的。 展示了一個例子: 上述結論暗示不單純只是頂點對需要檢測,
Time of Update: 2018-12-03
轉載請註明出處,謝謝http://blog.csdn.net/acm_cxlove/article/details/7854526 by---cxlove題目:給出一個數n,找出他的一個倍數,而且這個數每一位都是8,找到最小的那個的位元,否則輸出0.http://poj.org/problem?id=3696 其實是個挺有意思的數論,而且代碼難度也不大。但是可惜就是不會~~~~~~囧8888888肯定可以寫成8*(10^k-1)/9=m*n,n是原數字,k是位元。稍微整理下8*(10
Time of Update: 2018-12-03
http://poj.org/problem?id=1011我表示這也許是我第一次做這種要強剪枝的題目....跪了...先是搜尋狀態搞不清連個dfs都寫不出來....然後是不會剪枝狂TLE....還是看了這位大神的部落格....才把幾個剪枝搞清楚....少了一個都會TLE....傷不起...搜尋狀態:應該要三維狀態, //狀態: [cur][idx][sum] 三維, cur 表示當前長棒, idx表示當前短棒(在構造一個長棒的過程中),
Time of Update: 2018-12-03
題目簡單的八方向搜尋,暴力即可代碼:#include<cstdio>#include<cstring>#include<ctype.h>#include<iostream>using namespace std;#define bug(s) cout<<#s<<"="<<s#define stop {getchar();getchar();}#define MAXN 52#define MAXK 22char
Time of Update: 2018-12-03
2-sat 基本是有三類題型,一種只判定解是否存在,一種判定+二分答案求最佳,一種判定解並輸出其中一組解。Wedding 這題是典型的第三種類型。ps. 最近太忙了,這題是前天A的,暫時先要把 2-sat 放一放。然後到時候再回來整理下,形成要用到的模板帶出去就行了,如果考到就是看臨場建圖了。於是這題先記錄下來。另外最後輸出還是有點疑問的,mark一下,輸出的新娘一邊,是刪除的scc點,還是選擇的scc點,即 select[],是一定的嗎?跟拓撲的第一個順序有關?AC代碼://POJ-3648
Time of Update: 2018-12-03
(1)關於模數(a+b)%c=(a%c+b%c)%c(a*b)%c=((a%c)*(b%c))%c(a-b)%c=(a%c-b%c+c)%c(a/b)%c=(a%c)*b'(b'表示b的逆元)(a^b)%c=((a%c)^b)%c(a^(p-1)-1)%p=0,p為素數(2)關於gcdGcd(a,b)=Gcd(a-b,b)Gcd(a,b)=Gcd(a%b,b),a>bgcd(a,b)*lcm(a,b)=a*b(3) 關於fibonacciF[i]=F[i-1]+f[i-2],i>23
Time of Update: 2018-12-03
一般樹狀數組能做的線段樹都能做,除非卡你空間。。。1、單點更新+區間查詢#define MAXN 100002int a[MAXN];int n;//線段 1~ninline lowbit(int x) { return x&(-x); }int getsum(int x)// 區間查詢,sum[1, x]{int ret = 0;while(x>0)//合并區間{ret += a[x];x-=lowbit(x);}return ret;}void insert(int x,
Time of Update: 2018-12-03
重新手敲下最短路的代碼。。bellman-forddijkstrafloydspfa(bellman-ford+queue)dijkstra+heap(priority_queue)怕自己堆敲不出來 - -........用的STL。拿 HDOJ 2544
Time of Update: 2018-12-03
找公切線公切線是同時與多邊形相切的簡單直線, 並且兩個多邊形都位於線的同一側。 換句話說, 一條公切線是一條與兩個多邊形都相切的線。 一個例子如所示: 兩個不相交的凸多邊形和一條他們的公切線事實上, 公切線可以通過多邊形間的一些確定橋的點對來確立。 因此, 給定兩個不相交的多邊形, 就存在兩個多邊形間兩條公切線, 並且當多邊形相交時, 還有可能存在與頂點數一樣多的公切線。 用來計算兩多邊形間橋的演算法(如歸併演算法)同樣可以用來確定公切線。 另一個“版本”的兩多邊形的公切線是關鍵切線。
Time of Update: 2018-12-03
凸多邊形交給定兩個多邊形, 我們第一個需要討論的問題應該是:“他們相交嗎?”。 Chazelle 和 Dobkin 1980年在他們的一篇叫做“Detection is easier than computation”的論文中發表了一個對數時間級的演算法(論文的名字很貼切)。 對於多邊形的交, 許多演算法能計算出交集。 有趣的是一個結論(由Guibas提出)證明了多邊形交點和和他們之間的橋是一一對應關係。 兩個多邊形(淺紅色和藍色)和他們的交集(淺紫色)。 交點以紅色標記。
Time of Update: 2018-12-03
本文純屬自娛自樂. 前些日子考了一道叫classroom的題目,大意是這樣的:給你一個序列a,每次將l到r的元素-k,問你哪次操作後會開始出現負的元素. 正解是二分+差分.很多人打的帶標記的線段樹.我考場上打的二分,後來有人說線段樹常數太大,我告訴他們標記不下放可以提高速度,戰神則堅持認為標記一定要下放,於是就有了這篇蛋疼的文章. 直接貼代碼,最裸的線段樹.我現在寫的線段樹跟以前的有了很大的變化,也許是因為打多了吧.Code:program
Time of Update: 2018-12-03
凸多邊形直徑我們將一個多邊形上任意兩點間的距離的最大值定義為多邊形的直徑。 確定這個直徑的點對數可能多於一對。 事實上, 對於擁有 n 個頂點的多邊形, 就可能有 n 對“直徑點對”存在。 一個多邊形直徑的簡單例子如左圖所示。 直徑點對在圖中顯示為被平行線穿過的黑點 (紅色的一對平行線). 直徑用淺藍色高亮顯示。顯然, 確定一個凸多邊形 P 直徑的點對不可能在多邊形 P 內部。 故搜尋應該在邊界上進行。 事實上, 由於直徑是由多邊形的平行切線的最遠距離決定的, 所以我們只需要查詢對踵點。
Time of Update: 2018-12-03
轉載請註明出處,謝謝http://blog.csdn.net/acm_cxlove/article/details/7854526 by---cxlove題目:查詢區間的最大值和最小值http://poj.org/problem?id=3264 以前只會線段樹的做法,nlgn的建樹,lgn的查詢。因為RMQ作為一種題目常見的問題,有必須學習一下,可以作為一個工具出現。ST演算法是另外一種高效的求解區間最值的演算法。nlgn的處理,可以達到o(1)的查詢,而且線段樹的常數也是非常大的。
Time of Update: 2018-12-03
轉載請註明出處,謝謝http://blog.csdn.net/acm_cxlove/article/details/7854526 by---cxlove題目:給出一些移動向量,最終形成一個多邊形,求多邊形的面積。以為多邊形內部的格點數目和多邊形邊上的格點數目
Time of Update: 2018-12-03
轉載請註明出處,謝謝http://blog.csdn.net/acm_cxlove/article/details/7854526 by---cxlove題目:字串字母按字典序遞增的為合法的,給出一個字串問是第幾個。POJ 1496 http://poj.org/problem?id=1496POJ 1850 http://poj.org/problem?id=1850 同樣先求出字串長度,那麼長度小的部分容易求出。對於要考慮字串內要按升序怎麼辦呢,其實很簡單,選出若干個不同的字母,
Time of Update: 2018-12-03
凸多邊形間對踵點對有向切線一個有向切線就如同其名字所闡述的。 有向切線在區分平行切線同向與反向時候是十分必要的。 進一步假設多邊形是順時針序的(當頂點順序排布時候是順時針的)並且多邊形的切線當多邊形線上的右側時候是正向的。 相反的, 當多邊形在切線的左側時多邊形能夠按照逆時針序給出。 雖然只是約定, 但制定一些標準, 來避免混淆結構與結果是必要的。 並且採用這個約定絕不會影響結果並且帶來任何限制。 注意: 切線的定義匯出了對踵點對. 凸多邊形間的對踵點對給定兩個多邊形 P 和 Q, 一對點
Time of Update: 2018-12-03
轉載請註明出處,謝謝http://blog.csdn.net/acm_cxlove/article/details/7854526 by---cxlove題目:給出一些螞蟻的點,給出一些樹的點,兩兩對應,使他們的連線不相交,輸出一種方案。http://poj.org/problem?id=3565可以任意假定一種組合,然後兩兩判斷,如果相交,則交換,直到全部不相交為止。這種思想很新穎,被稱為計算幾何中的調整思想。#include<iostream>#include<