ZOJ HDU 3538 Arrange the Schedule

 打表找規律,推出了公式,但是各種調試還是不過最後發現在公式裡有一個除法,而對相應的模數操作忘處理了,導致一直WA到比賽結束都沒調出來以後要注意這個問題了。。。這題類似高中的排列組合裡的傳球問題, 甲乙丙丁4人傳球,從甲傳n次到甲 和從甲傳n次到乙丙丁的個數即為所要求的分段的個數。能夠推出公式分別自己到自己和自己到其他人2種 , 分奇偶2種公式 if ( Node[i].s == Node[i-1].s ) { temp

插頭DP【入門】

 強烈推薦網址:http://www.notonlysuccess.com/?p=931 hdu 1693 Eat the Trees多迴路的不用判聯通狀態,二進位即可,轉移情況2*2種。 時間O(n*m*2^n)  空間O(n*2^n)/**插頭DP**/#include <cstdio>#include <cstring>const int maxm=13 ;const int maxn=1<<12;typedef long long ll ;ll dp[

【FFT快速傅裡葉變換】除草

前幾天的SRM和一個ACM比賽居然都很坑爹的考了FFT,現在的題目還真是想怎麼出就怎麼出啊。於是就參考算導研究了一下FFT,發現無論是思想還是實現都挺簡單的,就只要用一些個複數的定理來用O(nlogn)的時間完成DFT,然後再用一個非常詭異的定理把DFT弄成逆DFT,然後就可以輸出答案了。具體實現起來的時候還有一個值得一提的地方,就是如何只用O(n)的空間。可以發現無論遞迴到什麼地方,係數向量的原編號都是以為2^k為步長的連續一段,所以只要在遞迴時記一下到了第幾層和當前的起點就能知道當前的係數向

多校第十場 HDU 3936 FIB Query(fibonacci 數列的性質 ,及Ologn 矩陣加速乘演算法)

Fibonacci數列通項公式∴F(n)=(1/√5)*{[(1+√5)/2]^(n+1) - [(1-√5)/2]^(n+1)}性質:  1.f(0)+f(1)+f(2)+…+f(n)=f(n+2)-1。   2.f(1)+f(3)+f(5)+…+f(2n-1)=f(2n)。   3.f(2)+f(4)+f(6)+…+f(2n) =f(2n+1)-1。   4.[f(0)]^2+[f(1)]^2+…+[f(n)]^2=f(n)·f(n+1)。   5.f(0)-f(1)+f(2)-…+(-1)

POJ1185 炮兵陣地(壓縮DP)

一道水題又調了一晚上。。。發現每次的錯誤都讓人很蛋疼。。。這題和POJ3254類似,只不過相互影響的狀態多了一行,dp數組就要增加一維,記錄的總合法情況數變成了最大合法情況,還是很水的一道題。。。dp[i][j][k]表示第i行 ,本行狀態為val[j],上一行狀態為val[k]的最大炮的個數,一開始寫成了dp[i][val[j]][val[k]]將狀態無形中擴大了,一直在RE和WA中徘徊,後來發現了數組越界的問題 #include <cstdio>#include

joj 2569: Musical Chairs (約瑟夫環 數學方法非迭代)

為了討論方便,先把問題稍微改變一下,並不影響原意:   問題描述:n個人(編號0~(n-1)),從0開始報數,報到(m-1)的退出   ,剩下的人繼續從0開始報數。求勝利者的編號。   我們知道第一個人(編號一定是(m-1)%n) 出列之後,剩下的n-1個人組成了一個新的約瑟夫環(以編號為k=m%n的人開始):   k k+1 k+2 ... n-2, n-1, 0, 1, 2, ... k-2   並且從k開始報0。   現在我們把他們的編號做一下轉換:   k --> 0   k+1

joj 2077: In Danger (約瑟夫環+位元運算初步)

文章目錄 Input SpecificationOutput SpecificationSample InputSample Output ResultTIME LimitMEMORY LimitRun TimesAC TimesJUDGE3s8192K12855StandardFlavius Josephus and 40 fellow rebels were trapped by the Romans. His companions

joj 2243: Endless Carry (水題,獻給位元運算)

文章目錄 InputOutputSample InputSample Output ResultTIME LimitMEMORY LimitRun TimesAC

poj3074/3076 Dancing Links 解數獨

好吧,我承認這個數獨的圖不好弄,建圖建了好久,才想到每一行就四個結點,數獨轉化為精確覆蓋問題的方法還是參照Knuth的論文,如果讀取到一個格子是空的,那麼加9行,分別表示這個格子填1到9這9個數字,如果讀取到的格子是一個數字,那麼就加一行就可以了,然後列有9*9*4列,前81列表示這一行表示填的是第i行第j列的格子,接下來81列表示第i行填寫k,接下來81列表示第j列填寫k,最後81列表示對應九宮格填寫k。轉化為精確覆蓋之後,直接跑dlx的dfs就可以了,主要還是建圖,對於3076的16*16做

【pku2451+3525+3384+1755】半平面交O(nlogn)

又來到了十分弱勢的計算幾何上,手中對付幾何題的武器又多了一把本人對牛書上那個N^2演算法不感冒,便直接學習這個進階點的演算法(集訓隊朱澤園論文)略讀一遍,英文太多十分之礙眼,加之論文講的又不太清楚,所以一度陷入迷惘磨蹭了良久,無意中翻見一標程,竟然就是一個簡單的雙端隊列,豁然開朗,遂速切出此模板好了,結束廢話,進入正題演算法思想非常簡單,把直線按極角排序之後,在順序掃描的過程中求出可行域,整個過程有點類似於凸包那個掃描法實現的時候,除了一個存當前可行域上的直線的雙端隊列之外,我還弄了個點隊列,記

splay經典題目舉例

資料結構專攻告一段落吧,把這段時間和以前做過的splay的題目拿出來晒晒,每題都寫了一下簡單的解題報告,用白色的字型,每道題的做法最好要多花時間琢磨琢磨,splay的題目主要就是中間過程的處理上比較麻煩。為了方便,我對區間操作都是將l-1結點splay到根,r+1結點splay到根的右子樹,定義根的右子樹的左子樹為關鍵結點。常見的splay問題的處理首先是標記,下放標記和上傳標記最好分開寫,否則的話非常容易出問題,我們下放標記記錄的是孩子結點的資訊,所以我們如果要對一個結點打標記,我們要先處理好

多校第12場 FZU H Monster (簡單貪心)

類似排隊打水問題;定義每個怪物的性價比bi=怪物的攻擊力/v11對怪物的擊打次數。對bi進行一次sort 從大到小,一次加和即可。可以證明先消滅性價比小的 後消滅大的 會使損失值增大,對性價比相同的怎麼處理都不影響結果。代碼:要用longlong 。 #include <cstdio>#include <algorithm>using namespace std;const int maxn=10010;typedef long long typec;struct

joj 2330: Math

ResultTIME LimitMEMORY LimitRun TimesAC TimesJUDGE1s8192K39554StandardGiven a nonnegative integer a, and a positive integer N, we define: f(a, 1) = af(a, k) = f(a, k – 1) * f(a, k – 1) % N, k > 1There may or may not exist some positive integer k

POJ 3311 Hie with the Pie (TSP問題 狀壓DP解法)

TSP問題的狀態DP解法:題意:從1點開始遍曆全圖的點後回到起點的最短路徑問題因為TSP不限制每個點遍曆的次數,所以可以用floyd處理下兩點間的距離,之後DP處理下,DP[i][j]表示狀態為二進位i下,當前遍曆第j個點的最小值,DP[1<<j][j]初始化為map[0][j] #include <stdio.h>#include <string.h>#include <iostream>using namespace std;const

DP求一類最大子矩陣

HDU 最大子矩陣 1559 利用容斥原理求出(0,0)到(i,j)的矩陣裡的值的和,類似一維的首碼和。#include <cstdio>#include <cstring>const int maxn=1001;int dp[maxn][maxn];int main (){ int cas; int n,m,x,y; scanf("%d",&cas); for (int I=1 ; I<=cas ; ++I) {

多校第十場 HDU 3938 Portal(離線的並查集)

題意:定義T是2點間某條路徑上的最大邊權,要找出某兩點間所有路徑上的T的最小值,給定一個L問,滿足小於等於L的min{T}的個數 題出的挺坑爹的,讀半天沒讀懂啥意思。達哥說是離線的並查集,大概就是用並查集來維護圖,根據邊權從小到大不斷往圖中加邊,新加的邊一定滿足是2點間的某路徑的最大值,若2點本身不在同一連通分量上,則這條邊就是所求的minT,滿足它的個數就是2個連通分量的定點個數的乘積。#include <cstdio>#include

POJ2336 Ferry Loading II 動態規劃

好吧,今天開始正式學DP,隨便點了一個簡單題,練了下手。。。 這道題轉移方程不難,O(n^2)的複雜度,可以AC。 dp[i][j]表示考慮跑了i趟前j個車走完花的時間 先進行對時間排序(不知道為什麼,第一次交沒排序也AC了。。。。難道是原來就是有序的?) dp[1][i]={i<=n時:a[i]+ti>n時:oo} 至於趟數大於1的,有如下轉移方程:dp[k][i]=min{max(dp[i-1][j][j-1]+t,a[i])+t}

JOJ 1984: A Round Peg in a Ground Hole (判斷點在凸多邊形內)

之前的代碼,整理一下,計算幾何已經被我忘差不多了 。。。#include<iostream>#include<cstdio>#include<cmath>const double pi=acos(-1.0);const double eps = 1e-8;const int maxn=1000;struct point{ double x,y; point operator-(point p) { point res;

POJ2373動態規劃

單調隊列最佳化的dp。首先我們先進行預先處理,將可以合并的區間合并到一起,這個可以在O(nlogn)的時間內完成。方法是按照x排序,然後找相鄰的兩個區間(a,b)和(c,d)是否滿足a<d並且b>c,注意這裡必須嚴格大於才行,因為這裡的區間都是開區間,如果存在b==c這樣的情況,那麼b這個點就可以分割。然後進行動態規劃轉移,令dp[i]為前i個區間可以劃分的最小區間數目,那麼就有:dp[i]=min{dp[i-2*k]}+1, 

joj 1839: Arctan

ResultTIME LimitMEMORY LimitRun TimesAC TimesJUDGE5s8192K26242StandardArctan function can expand to an infinite progression: People often caculate pi using arctan functions.For example,the easiest way to calculate π is : however,it's too inefficient,

總頁數: 61357 1 .... 17425 17426 17427 17428 17429 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.