原创 【BZOJ 1076】[SCOI2008]獎勵關

思路: 二進制狀壓所有的狀態,設f[i][j] 表示當前已經從1→i−1 當中得到狀態j ,後面進行選擇的最大收益。 轉移就是枚舉之前的狀態,枚舉當前出現哪一個元素。 ORZ hzwer 代碼: #include <iostr

原创 SDOI 2017 Round1 題解

Day1 Problem 1:數字表格 題目描述 Doris剛剛學習了fibonacci數列。用f[i] 表示數列的第i 項,那麼 f[0]=0f[1]=1f[n]=f[n−1]+f[n−2],n≥2 Doris用老師的超級計算

原创 【學習】動態樹 link cut tree

介紹 LCT是動態的樹鏈剖分,他用Splay 維護重鏈的信息,並且動態維護重鏈。 可以支持合併分割操作,並且動態維護樹鏈的信息。 原樹中的重鏈對應的是Splay 中的實邊,輕鏈對應輕邊,這樣一棵樹被劃分成了若干個Splay 。

原创 【學習】博弈遊戲

博弈問題 所討論的博弈問題滿足以下條件: 玩家只有兩個人,輪流做出決策,且操作公平。 遊戲的狀態集有限,保證遊戲在有限步後結束. 博弈雙方都使用最優決策。 一個遊戲有兩個狀態,我們稱爲必勝態和必敗態,他們的關係: 必勝態表示

原创 【BZOJ 1009】GT考試

思路 動態規劃 我們可以先考慮當n 的範圍較小時的做法,設f[i][j] 表示現在處理到第i 位,與不吉利數字已經成功匹配j 位的方案數。 很顯然的是,需要枚舉i 位出現的數字是哪一個,枚舉完數字以後,如果與不幸運數字匹配成功,

原创 【BZOJ 1257】[CQOI2007]餘數之和sum

題意 給出正整數n 和k ,計算j(n,k)=kmod1+kmod2+kmod3+…+kmodn 的值,其中kmodi 表示k 除以i 的餘數。 1≤n,k≤109 思路 ans=∑i=1nk%i=∑i=1nk−⌊ki⌋×i=n

原创 【模板】對拍器

gen #include <bits/stdc++.h> using namespace std; int n, m, T; int main(){ srand(time(NULL)); return 0; } chec

原创 【BZOJ 1833】數字計數

思路: 數位dp,先預處理dp數組,然後統計答案。 先計算位數小於當前位的,再枚舉第一位,從1 到最大值−1 ,後面的每一位,從從0 到最大值−1 。 代碼: #include <cstdio> #include <cstrin

原创 【BNUOJ】Another Server

第十五屆北京師範大學程序設計競賽決賽 A. Another Server 何老師某天在機房裏搞事情的時候,發現機房裏有n 臺服務器,從1 到n 標號,同時有2n−2 條網線,從1 到2n−2 標號,其中第i 條網線雙向連接着⌊i+

原创 【BZOJ 3295】[Cqoi2011]動態逆序對

思路: 考慮到倒着插入,原問題就變成了一個三維偏序問題,我們首先對插入時間t 進行排序,然後對t 進行CDQ 分治,對x 一維進行排序,用樹狀數組維護左邊的貢獻對右邊的影響,對於右邊的每一個元素,考慮他前面比他大的數對答案的貢獻和

原创 【BZOJ 3711】[PA2014] Druzyny

題目: Description 體育課上,nnn個小朋友排成一行(從111到nnn編號),老師想把他們分成若干組,每一組都包含編號連續的一段小朋友,每個小朋友屬於且僅屬於一個組。 第iii個小朋友希望它所在的組的人數不多於d[i

原创 【BZOJ 3343】教主的魔法

題目來源:BZOJ 3343 思路: 分塊 代碼: #include <iostream> #include <cstdio> #include <cmath> #include <algorithm> using namespa

原创 【BZOJ 1926】[Sdoi2010]粟粟的書架

題目來源:BZOJ 1926 思路: 考慮分成兩個部分做,R=1是可以考慮用主席樹維護,R,C是200的時候考慮用三維前綴和暴力。 具體的,主席樹的做法與區間求第K個數類似,當時維護的權值出現的次數,現在維護的是二元組(數字出現的

原创 【學習】線段樹和並

(摘自 黃嘉泰 的課件) ##合併: 由線段樹的定義我們不難寫出下面的過程,來合併兩棵代表範圍相同的線段樹 merge(a,b): 如果a,b中有一個不含任何元素,就返回另一個 如果a,b都是葉子,返回merge_leaf(a,b