原创 歐拉函數+莫比烏斯函數 模板

求單個數的歐拉函數 ll getoula(ll n) { if(n==1) return 0; ll ans=n; for(int i=2;i<=(int)sqrt(n+0.5);++i) {

原创 2017 暑假艾教集訓 day2

練習題 :https://cn.vjudge.net/contest/175510#overview CTSC 拯救大兵瑞恩 做法:狀壓BFS,每個節點加一個當前所有的鑰匙數,然後進行普通的BFS即可 POJ 2411 做法:輪廓線

原创 2017 暑假艾教集訓 day3

題目:https://cn.vjudge.net/contest/176068#overview Uva 12260 做法:Petra的策略滿足貪心,所以先把糖果按P在按J排序,然後去取,就看Jan會取哪些糖果了。  每次默認Jan

原创 強聯通

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

原创 2017暑假集訓 div1 連通圖(2)

HDU  4612 題意,給一張圖,問加一條邊之後最小剩多少橋 做法(參考大神):直接算出原始橋的個數減去縮點後樹的直徑(啥玩意啊) 樹的直徑:樹上最長的一條路的長度。 就是從最深點經過root到次深點那條路的長度 具體的做法就是:先

原创 2017暑假集訓 div1 匹配問題(1)

A ZOJ 1002 題意:放棋子,棋子橫豎不能相見。 做法:直接暴力DFS就行了。n很小隻有4 B HDU2444 題意:給定n個學生,他們之間可能互相認識,首先判斷能不能將這些學生分爲兩組,使組內學生不認識; 現想將學生兩兩分組,

原创 2017 暑假艾教集訓 day10 AC自動機+馬拉車+後綴數組 +kmp

https://vjudge.net/contest/177933#overview H HDU3068 做法:馬拉車模板 #include <bits/stdc++.h> using namespace std; const int m

原创 2017 暑假艾教集訓 day1

1.蓄水池問題 http://acm.nyist.net/JudgeOnline/problem.php?pid=547 做法:先把池子的四周用優先隊列存起來,枚舉每個點向四個方向延伸(注意vis數組),如果拓展點的高度小於當前節點的高度

原创 大數的質數檢驗以及求最小質因子

#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <time.h> #include <stdlib.h> using n

原创 2017暑假集訓 div1 匹配問題(1)

HDU 4185 題意:給一張圖,其中有一些#,兩個相連的#可以稱爲一次覆蓋,爲最多幾次覆蓋(#只能被用一次) 做法:每個#標號,暴力跑一邊每個#的四個方向,建圖做匈牙利  答案 是pp/2; POJ 3020 題意:用天線覆蓋城市

原创 模板 BSGS

大佬的手寫Hash。飛快 ll p,b,n; class HASH { public: ll a[100005],inv[100005],mod; HASH() { memset(a,-1,siz

原创 合數的質因數分解 + 遞歸求等比數列前n項和

質因數分解 const int maxn=10000; bool book[maxn+10]; int prim[maxn+10],pnum=0; void getprim() { memset(book,0,sizeof(bo