原创 遞歸算法——約瑟夫問題

經典的約瑟夫問題: 問題描述:n個人圍成一圈,每隔k個殺死一個,問最後的倖存者的編號 假設標號是0~n-1,倖存者是f[n] 1、特殊情況:f[1]=0 2、一般情況:f[i] = (f[i-1]+k)%i 第i個被殺的與第i-1個被殺的

原创 HDU 1710 Binary Tree Traversals(已知先序中序求後序)

題目鏈接:【HDU 1710】 輸入先序遍歷跟中序遍歷,輸出後序遍歷 #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #incl

原创 UVa 122 Trees on the level(二叉樹層次遍歷)

題目鏈接:【UVa 122】 輸入一棵二叉樹,二叉樹上的點不超過156個,輸出先序遍歷 紫書P150 #include <bits/stdc++.h> using namespace std; vector<int>ans; bool

原创 【組隊補題題】The Seventh Hunan Collegiate Programming Contest Semilive

題目鏈接:點擊打開鏈接 B 【UVA 12290】 Counting Game D 【UVA 12292】 Polyomino Decomposer 將給出的圖形中的*按照順序標記,枚舉狀態,然後判斷這個狀態是否可行 #includ

原创 CodeForces 631C Report(找規律)

題目鏈接:【CodeForces 631C】 長度是n的數列,m個次訪問,兩種操作:1、t=1,將數列1~r從小到大排序;2、t=2,將數列1~r從大到小排列。輸出最後得到的數列 如果i>j&&ri>rj,那麼i之前的操作都是無效的,所以

原创 codeforces 665F. Four Divisors(求n以內因子數是4的數的個數)

F. Four Divisors time limit per test 10 seconds memory limit per test 768 megabytes input standard input outp

原创 玲瓏oj 1032A-B(組合數學)

1032 - A-B Time Limit:1s Memory Limit:128MByte Submissions:528Solved:105 DESCRIPTION 你有n個球,需要把他們放到m個盒子裏。要求擁有最多球的盒

原创 ZOJ 3327Friend Number(模擬題)

題目鏈接:【ZOJ 3327】 定義P(x)是x中所有數字的乘積,如:P(123)=6,輸入x(0<x<=10^1000),求使得P(y)=P(x)成立的最小的y 解題思路:分類討論 1、x中有0:如果0在末尾,那就從倒數第二位開始+1

原创 HDU 2489 Minimal Ratio Tree(dfs+最小生成樹)

題目鏈接:【HDU 2489】 從n(2<=n<=15)個點中選取連通的m(2<=m<=n)個點,使得下圖中的Ratio最小 題目中節點值以及兩個點之間的線的權值範圍是[1,100] (除了兩個相同的點之間的線的權值) 做這個題目真的可

原创 hdu 5901(模板,10^11以內的素數個數)

Count primes                                                                     Time Limit: 12000/6000 MS (Java/Oth

原创 雙塔DP

專題鏈接:點擊打開鏈接 A.【POJ 2609】Ferry Loading B.【ZOJ 3331】Process the Tasks 有兩臺機器,n(0<n<100)個任務,每個任務用1號機器需要花費時間T1,用2號機器需要花費T2(

原创 hdu 5876 Sparse Graph(補圖最短路)

Sparse Graph                                                                        Time Limit: 4000/2000 MS (Java/O

原创 codeforces 712D. Memory and Scores(dp)

D. Memory and Scores time limit per test 2 seconds memory limit per test 512 megabytes input standard input ou

原创 CSU 1681 Adjoin(樹形dp && 樹的直徑)

題目鏈接:【CSU 1681】 一共有n個點,m條線,每條線將兩個點連接在一起,導致這n個點中有些點是連通的有些點是不連通的,加入最少的線,使得n個點兩兩連通,求每兩個點之間最大距離的最小值 樹的直徑:樹上兩個點之間的最大距離 每一個連

原创 二叉樹的遞歸遍歷(dp)

已知先序遍歷跟後序遍歷,求這樣的二叉樹的個數 對於一條鏈來說,先序跟後序的區別就是正着念跟倒着唸的區別,利用這條性質,不停的將先序遍歷得到的串去掉第一個後進行劃分(同時後序遍歷得到的串去掉最後一個) #include <bits/std