原创 UVA11400 - Lighting System Design(DP)

題意 給定n種類型燈泡,每個燈泡給出其電壓v,電源花費k,每個燈的花費c和這種燈泡需求數量l(一套燈光系統總的燈泡數是每種燈泡數量之和),現在通過用電壓大的燈泡替換某些電壓小的燈泡來減小燈光系統總花費,求最小的花費。 題解 考慮到替換燈泡

原创 __int128

__int128 getmax(__int128 a,__int128 b){ if (a>b) return(a);else return(b); } void print(__int128 x){

原创 洛古P1725(DP+單調隊列)

題意 有0~n這樣的n+1個位置,每個位置都有一個權值,一個人在這個位置就會獲得這個位置的權值A[i]。 一個人最開始在0位置權值爲0,假設他現在在i,他下一步只能走到[i+L, i+R]的位置。 問他走完後獲得的最大權值,i >=n就

原创 BZOJ2212(線段樹合併)

題意 TP 現在有一棵二叉樹,所有非葉子節點都有兩個孩子。在每個葉子節點上有一個權值(有n個葉子節點,滿足這些權值爲1..n的一個排列)。可以任意交換每個非葉子節點的左右孩子。 要求進行一系列交換,使得最終所有葉子節點的權值按照遍歷序寫

原创 HDU6356 (ST)

#include <stdio.h> #include <string.h> #include <stdlib.h> #include <algorithm> #include <iostream> #include <queue> #

原创 分數模板

struct fraction { long long numerator; // 分子 long long denominator; // 分母 fraction() { numerator = 0; denominat

原创 POJ2096(概率DP基礎)

 題意 一個軟件有s個子系統,這個軟件會產生n種bug。 某人一天發現一個bug,這個bug屬於n種bug中的某種bug,發生在某個子系統中。 求找到所有的n種bug,且每個子系統都找到bug,這樣所要的天數的期望。 題解 找到某種

原创 HDU6406(ST表)

題意 給一個長度爲n的序列,從i = 1開始貪心的取當前最大的值,記長度len爲最大值改變多少次。 有m次詢問,每次改變序列中的某個值,問改變後len的長度。(n = 1,len = 1) 樣例 1 5 3 1 2 3 4 4

原创 樹狀數組模板

int N, c[maxn]; int lowbit(int i) { return i&(-i); } //單點更新 void add(int i, int value) { while(i <= N) {

原创 HDU6333 2018多校第四場(莫隊+組合數)

題意 T組樣例,給兩個數n,m,求下式。 題解 先觀察一手楊輝三角找找規律 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 可以得到 f(n,m+1)=f(n,m)+C(n,m+1) f(n+1,m)=2f(n,m)-C

原创 KMP算法模板

char mo[10005];      //模式串 char str[1000005];   //原串 求next數組(其實應該叫最大前綴長數組) int next[10005] = {-1};   int i = 0, j =

原创 SGU 495 Kids and Prizes (概率DP基礎)

題意 n個盒子裏裝有禮物,m個人依次隨機選擇禮物,選完之後空盒子放回 問最後選中的禮物數的期望。 題解 (1) 第i個人得到禮物的概率:假如第i-1個人沒有得到禮物,那麼i得到禮物的概率和i-1一樣。 假如第i-1個人得到了禮物,那

原创 BZOJ2038 小Z的襪子(莫隊)

題意 BZOJ2038 題解 詢問區間(L, R)選兩隻襪子顏色相同的概率 ans = C(a,2) + C(b,2) + C(c,2) + ... / C(R-L+1, 2) 找規律可得 (a^2 + b^2 + c^2  - a -

原创 字典樹模板

  int trie[1000010][26]; int num[1000010] = {0}; int pos = 1; void Insert(char word[]) { int c = 0; for(int i

原创 HDU6397(容斥)

#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std; #define