原创 HihoCoder - 1055 樹形dp

題目鏈接 題意:有一棵樹,每個節點有不同的值,選擇m個連接的節點使總和最大 因爲題目中已經分析了並且給了我們核心的僞代碼。。。(簡直送分題)。這裏就簡單地翻譯下吧。 dp [ u ] [ j ] 在以u爲根的一棵樹中,選出包含根節點u的j

原创 歐拉降冪 模板

#include <stdio.h> #include <string.h> const int N = 1005; int phi[N * 10], vis[N * 10], m, n, a[N]; char M[15]; int

原创 HDU 3008 Warcraft 完全揹包

題目鏈接 題意 有n個技能和一個普攻,技能消耗魔法(消耗魔法值w,打出v傷害),普攻什麼也不消耗也就是說普工可以無限使用(傷害爲1),你有100點生命和100點魔法,野怪有100點生命,你還有一個回覆技能可以回覆魔法(每秒恢復t點血),

原创 hash判斷迴文串(根據起始位置)

這篇寫得很棒 代碼: #include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace std; const int

原创 LCA和RMQ算法

  RMQ(Range Minimum/Maximum Query),即區間最值查詢,是指這樣一個問題:對於長度爲n的數列A,回答若干次詢問RMQ(i,j),返回數列A中下標在區間[i,j]中的最小/大值。 本文介紹一種比較高效的ST算法

原创 Check the difficulty of problems 概率dp

題目鏈接 題意:已知有m道題,t支隊伍,以及隊伍i做對第j題的概率pij,現在求每個隊至少做一道題並且冠軍隊伍至少做n道題的概率 思路: 開個三維數組  表示第i支隊伍做了j道題對k道題的概率 狀態轉移公式很好寫:      注意k的範圍

原创 Successor hdu 4366 dfs序+分塊

題意: 已知一棵樹,求樹上一節點 x  的子樹中能力比x大的且擁有最大貢獻值的子節點 思路: 首先用dfs序將樹形變爲線性,然後將總結點數n 分塊 每塊有u=sqrt(n)個節點,將每個塊按能力值從小到大排序 ma數組記錄 從節點 i 到

原创 Can you find it? 暴力 計算空間

題目 題意 如果給你三個數列 A[],B[],C[],請問對於給定的數字 X,能否從這三個數列中各選一個,使得A[i]+B[j]+C[k]=X? 多組數據,處理到 EOF。 每組數據的第一行是三個數 L, M, N,分別代表數列 A

原创 UVA - 1600 可以連續過不超過K個障礙物的dfs

題意:有個機器人,可以上下左右移動,表格中1表示障礙物,機器人可以連續通過不超過K個障礙物,問從(1,1)出發,到達點(n,m)的最小步數,如果無法到達,輸出-1; 題目鏈接 很容易想到這是個dfs,但是我的dfsT了 T的代碼: #i

原创 動態求中位數 --堆+優先隊列

堆是一種類似二叉樹的結構,分爲小根堆和大根堆,小根堆是父節點的值比子節點小,大根堆是父節點的值比子節點大。堆是用數組來實現的,0爲根節點,每個結點的子節點下標爲2*i+1和2*i+2;如果要保證堆的結構,需要 上浮 shift_up; 下

原创 大數分解質因數 pollard_rho

一般思路,遍歷1-sqrt(n),當n爲2^63次方時,時間複雜度爲1e9. 而pollard_rho算法的時間複雜度理論爲O(n^1/4),也就是開方再開方 代碼: #include<iostream> #include<ctime>

原创 CodeForces - 915E 動態開點線段樹

題目鏈接 大意: 晚上有n個亮着的燈泡,標號從1到n。 現在存在2種操作,如下: 操作1,關掉標號 [l,r] 區間的燈 操作2,打開標號 [l,r] 區間的燈 下面有q次詢問,每次詢問執行其中一種操作,詢問格式,l,r,k。k爲執行操

原创 FZU - 2204 簡單環形dp

題目鏈接  n個有標號的球圍成一個圈。每個球有兩種顏色可以選擇黑或白染色。問有多少種方案使得沒有出現連續白球7個或連續黑球7個。 輸入 第一行有多組數據。第一行T表示組數。(T <= 20) 每組包含n,表示球的個數。(1 <= n

原创 CCPC Final 2017 Alice's Stamps dp(有覆蓋點)

題意:  郵票編號是1到N。郵票必須成套購買。有M套不同的郵票可供選擇; 第i套包括編號從 li 到 ri 的郵票 。同一枚郵票可能會出現在不止一套郵票中。愛麗絲最多隻能買K套不同的郵票。愛麗絲最多能買到多少種不同的郵票?  輸入

原创 擴展歐幾里得 逆元 費馬小定理 逆元求組合數 逆元求除法同餘

擴歐講解 歐幾里得 int gcd(int a,int b) { return b==0?a:gcd(b,a%b); } gcd和extgcd複雜度是相同的。O(log max(a,b)); 形如a*x+b*y=c(a,b均不爲0)的