原创 URAL 1062 - Triathlon(半平面交)

這個題乍眼一看好像很簡單,然後我就認爲u、v、w只要有全部比另外一個人小的就不能win,否則就能win,但是這個思路只對了一半 不能win的結論是正確的,但是win的結論不止排除這一個條件 將這個人與其他人的條件列式 如果都win的話,則

原创 HDU 4631 - Sad Love Story(最近點對)

題意:給出A、B、C,按照給出的公式推出每一個點,添加每一個點時,求出相應的最短距離,所有最短距離加和 因爲是隨機點,不可能有邊界數據,所以可以爆搞 每次找(0,R-1)區間的最近點對(R爲上一個最近點對裏面編號最大的),然後加上R到N裏

原创 SGU 162 - Pyramids(四面體體積公式)

任意一個三棱錐或者說四面體,其棱爲a,b,c,d,e,f,其中a與d,b與e,c與f互爲對邊,那麼有三棱錐(四面體)的體積公式爲

原创 URAL 1026 - Questions and Answers(計數排序)

整數的範圍只有1到5000,所以開個5000的數組,記錄一下每個數出現的個數即可 複雜度爲O(k*5000),效率比較高 #include <stdio.h> #include <string.h> #include <algorithm

原创 HDU 4635 - Strongly connected(2013MUTC4-1004)(強連通分量)

t這道題在我們隊屬於我的範疇,最終因爲最後一個環節想錯了,也沒搞出來 題解是這麼說的: 最終添加完邊的圖,肯定可以分成兩個部X和Y,其中只有X到Y的邊沒有Y到X的邊,那麼要使得邊數儘可能的多,則X部肯定是一個完全圖,Y部也是,同時X部中

原创 SGU 144 - Meeting(連續概率)

有兩個人在x到y時間段約會,先到的先等,等z分鐘,求他們約會成功的概率 畫個圖就明白了 #include <stdio.h> int main() { double x,y,z; scanf("%lf%lf%lf",&

原创 HDU 4259 - Double Dealing(求循環節)

首先將撲克牌進行一次置換,然後分解出所有的循環節,所有循環節的撲克牌個數的最小公倍數即爲答案 #include <stdio.h> #include <string.h> #include <algorithm> using names

原创 URAL 1117 - Hierarchy(遞推或遞歸)

數據量不大,可以遞推出所有1——2^k的結果,然後可以把過程分解 首先找到比n小的最大的2^k,然後從2^k繼續計算,2^k到n即可轉化爲1到n-2^k 從i到j的時間可表示成從1到i的時間和從1到j的時間的差的絕對值。 #include

原创 SGU 126 - Boxes

非常好的一個題,一開始打算純暴,結果發現出現了好多循環,後來發現了這個遊戲其中的內涵 還是以前的逆推思想,終態是(2*x,0),那麼上一步一定是(x,x),再上一步是(3/2x,1/2x),再上一步有兩種情況(就不一一舉出了),再上一步還

原创 SPOJ 428 - Particular Palindromes(數位類DP)

求長度爲L的被m整除的迴文串的個數 建立狀態:d(i,j)表示第i位模m的餘數爲j的個數 d(i,j)=d(i+1,j+k*10^i)(L爲奇數且最中間的情況) d(i,j)=d(i+1,j+k*(10^i+10^L-1-i))(其他情況

原创 SPOJ 416 - Divisibility by 15(貪心)

糟爛的代碼啊...  這個題目思路很簡單——末位只可能爲0和5,所有數字的和肯定被3整除 沒有0和5的肯定不行 否則,把所有數字求和 如果被3整除,則從大到小輸出 如果除3餘1,則按以下順序——刪1;刪4;刪7;刪2、5、8中的2個(特別

原创 UVa 11027 - Palindromic Permutation(排列編碼)

題意:給出一個串,問你第k個迴文排列是什麼 從最高位開始往下找,從最小的字母開始,算出第i位爲這個字母的個數(組合方法),直至這些個數加起來都等於k #include <stdio.h> #include <string.h> #inc

原创 URAL 1055 - Combinations(快速篩素因子個數)

數據量不超過50000,先篩出50000以內的素數(約5200個),然後在log時間內篩出每個素因子的個數,總複雜度O(nlogn) #include <stdio.h> #include <string.h> #include <mat

原创 UVa 557 - Burger

做了這個題之後我才發現,對數是個極其好的東西 一開始我直接用公式暴力的,但是超出了浮點數範圍,後來改成對數,但是超時了,我也很糾結,後來發現可以打表,然後打了表就過了 #include <stdio.h> #include <math.h

原创 URAL 1019 - Line Painting

跟前面某個題一樣,都是區間染色問題,還是用我的老方法,區間離散化+二分區間端點+區間處理做的,時間跑的還挺短 坑爹的情況就是最左端是0,最右端是1e9,區間求的是開區間 #include <stdio.h> #include <