原创 UVA 11549 計算器謎題(floyd判圈)

題目:https://vjudge.net/problem/UVA-11549 可以想成兩個小孩,一個小孩去追另一個小孩,這個小孩是那個小孩的幾倍速度都沒有關係,若跑着跑着突然出現了一個循環圈, 那麼快的小孩一定可以套慢的小孩的圈,直到某

原创 LA 5031 圖詢問(Treap)

熟悉了Treap樹的常用操作. #include<cstdlib> struct Node{ Node *ch[2]; int r; //隨機優先值 int v; //值 int s;

原创 UVA 12174 Shuffle的播放記錄(滑動窗口)

自己實現的時候很多細節一直處理不好,最後看了看別人的。 思路:對於前s首歌,分別對於每一首歌,看能否以它爲首進行新的排序,對於每個滑動窗口,增加了一個數組,判斷每個數 在窗口中出現的次數,相當於set集。用temp記錄在一個滑動窗口中,是

原创 UVA 10561 Treblecross遊戲(Nim博弈)

題目:https://vjudge.net/problem/UVA-10561 由於禁區內誰放誰輸,所以禁區之外的一段一段分成了很多子游戲。 子游戲g(0)=0,g(1)=g(2)=g(3)=1,超過3以後就可以分成子游戲了,比如連續4個

原创 LA 3938 動態的最大連續和(線段樹)

第一次學習線段樹 #include<bits/stdc++.h> #define lson l,m,i<<1 #define rson m+1,r,i<<1|1 typedef long long ll; using namespace

原创 UVA 10795 新漢諾塔問題(遞歸)

題目:https://vjudge.net/problem/UVA-10795 新漢諾塔問題往舊漢諾塔問題上轉換,所以先來看舊漢諾塔問題。 舊漢諾塔: 漢諾塔問題是一個經典的問題。漢諾塔(Hanoi Tower),又稱河內塔,源於印度一個

原创 UVA 10859 放置街燈(樹形DP)

把無向圖轉化成有根樹。 兩個優化的量v1,v2,把二者組合成一個量Mv1+v2,讓M是一個比“v2的最大理論值和v2的最小理論值之差”還要大的數, 就可以先決定v1,再決定v2。 取M=2000,ans表示該節點放燈的情況,sum表示該節

原创 LA 3905 流星(掃描法)

題目:https://vjudge.net/problem/UVALive-3905 把進入的流星看成一個個時間的事件,當掃描線和最多的開區間相交時,維護答案。 應注意細節,事件的左端和事件的右端重合時,應先處理事件右端。 #inclu

原创 LA 2797 怪物陷阱(平面直線PSLG)

題目:https://vjudge.net/problem/UVALive-2797 把直線的每兩個端點點處理一遍,因爲只有貼着端點才能過。 若遇到直線端點相交情況,把每條線段稍微延長一點,通過判斷是否相交即可判斷是否可以通過 #inc

原创 LA 3890 離海最遠的點(半平面交)

題目:https://vjudge.net/problem/UVALive-3890 二分法,通過收縮凸邊型,直到半平面交爲空集。 #include<bits/stdc++.h> using namespace std; #inclu

原创 UVA 10652 Board Wrapping(凸包)

#include<bits/stdc++.h> using namespace std; struct Point{ double x,y; Point(double x=0,double y=0) :x(x),y(y){} };

原创 UVA 12304 2D Geometry 110 in 1!(與圓有關二維幾何問題)

關於InscribedCircle:O是ABC內心的充要條件是:aOA+bOB+cOC=0 (均表示向量) 設ABC的座標爲:A(x1,y1),B(x2,y2),C(x3,y3) BC=a,CA=b,AB=c 內心爲O(x,y)則有aOA

原创 UVA 11178 Morley定理(幾何入門)

#include<bits/stdc++.h> using namespace std; struct Point{ double x,y; Point(double x=0,double y=0) :x(x),y(y){} };

原创 UVA 11107 生命的形式(後綴數組+LCP)

把所有輸入的字符串拼起來,二分答案,每次判斷是否有一個長度爲p的串在超過一半的串中連續出現,判斷方法是掃描height數組,因爲height數組中,相同串長度都聚集在一起。   #include<bits/stdc++.h> using

原创 藍橋校內模擬賽擺動數列(動態規劃)

如果一個序列的奇數項都比前一項大,偶數項都比前一項小,則稱爲一個擺動序列。即 a[2i]<a[2i-1], a[2i+1]>a[2i]。   小明想知道,長度爲 m,每個數都是 1 到 n 之間的正整數的擺動序列一共有多少個。 輸入格式