原创 2017暑假集訓 div1 DP(1)

HDU 1024 題意:爲給定一個數組,求其分成m個不相交子段和最大值的問題。 做法:很容易想到轉移方程 DP[i][j]=max(DP[i][j-1],dp[i-1][k])+a[j];  n2的狀態,轉移又有n ,所以一共n3。

原创 2017暑假集訓 div1 DP(2)

poj 3186 題意:給一串數字,每次可以從最左端和最右端拿去一個數字,得到的價值是本身數字乘以拿去的次序 做法:區間DP 每次枚舉長度然後枚舉起點,從左右兩端開始轉移即可DP[I][J]代表I是起點J 是終點的最大值。 #incl

原创 2017暑假集訓 div1 連通圖(1) POJ3694 &&POJ3177

POJ 3694 題意:一個網絡管理員管理一個網絡,網絡中的電腦直接或間接的相連接,管理員有Q次操作,每次向網絡中建立一條新邊,向管理員報告橋的個數 思路:先將網絡中的橋求出來,在求的過程中進行並查集縮點,在詢問的時候,進行最樸素的LCA

原创 割邊

#include <iostream> #include <stdio.h> #include <algorithm> #include <string.h> #include <vector> #include <stack> usin

原创 2017 暑假艾教集訓 day5

HDU 2157 做法:做一個矩陣 MU[S][T]=1 ,那麼答案就是 MU[S][T] 在 K次矩陣乘之後的(矩陣快速冪);   HDU 821E 做法:和上道題略有區別 分段矩陣快速冪,每次保留最右界的可能數,這裏有個wa點需要把

原创 2017 暑假艾教集訓 day4

 題庫: https://cn.vjudge.net/contest/176263#overview A:HDU 40704 做法:相當於將 n 任意組合, 可能的情況爲 2^(n-1),因爲n會很大,使用歐拉降冪公式 B:Given

原创 強聯通注意點

重邊的判斷模式 void tarjan(int u,int pre) { low[u] = dfn[u] = ++d_cnt; mys.push(u); int flag=0; for(int i=head[u];

原创 斜率DP模板

斜率dp 線性裸題 3507 #include<stdio.h> #define N 500010 int dp[N]; int q[N]; int head,tail; int sum[N]; int a[N]; int n,m;

原创 cf985

題目鏈接:http://codeforces.com/contest/985A:暴力題吧,只需要在把黑色和白色的值都算一遍,最後取兩種情況的min就可以了。B:模擬題,只需要每次枚舉那個開關不動即可。C:只需要sort一下,想一下如何選取

原创 UVA 11990 bit + cdq 分治

題意:動態逆序對 做法:對於刪除操作可以當做逆向的添加操作 , 所以對於每個數字都有三個屬性 (T,ID,Num)  所以這道題其實就是一個三維偏序問題 。 對於一個數 只需要 左邊比它大的數 和右邊比它小的數 ,我們可以用一個bit l

原创 2017 暑假艾教集訓 day12 網絡流(最大流 最小割)!

模板 using namespace std; int n,m; const int maxn=1005; struct node { int to,next,cap; }edge[maxn<<2]; int head[maxn]

原创 2017 暑假艾教集訓 day10 (補zoj2112帶修改的第k大)整體二分

ZOJ   2112 帶修改的區間第k小隻用比靜態的多加一個刪除操作即可 #include <bits/stdc++.h> using namespace std; const int inf=1e9+7; const int maxn

原创 HDU 1892 二維樹狀數組 模板題

假設每個格子代表一個數A[i][j],i是橫座標,j是縱座標,左上角的座標爲(1,1)我們要求紅色區域元素之和,設sum(i,j)表示以i,j座標爲右下角座標,以0,0爲左上角座標矩形內的元素之和, sum(c,d):綠色+黃色+紅

原创 樹剖模板

void dfs1(int u,int pre,int step) { dep[u]=step; fa[u]=pre; num[u]=1; for(int i=head[u];i!=-1;i=edge[i]

原创 2017 暑假艾教集訓 day9(整體二分 + cdq分治 cdq真是我女神!!!)

POJ 2104 求第k小 做法:整體二分加樹狀數組。 離線把詢問和插入做整體二分,每次把s,t掃一般 如果是插入就在線段樹上相應的位置插入(val,1)。 對於每個詢問查詢在l,r 中 用多少個數 如果加上累加的數 小於k那麼 答案