原创 LOJ #2290(「THUWC 2017」隨機二分圖-狀態壓縮dp)

某人在玩一個非常神奇的遊戲。這個遊戲中有一個左右各 n (≤15 )個點的二分圖,圖中的邊會按照一定的規律隨機出現。 爲了描述這些規律,某人將這些邊分到若干個組中。每條邊或者不屬於任何組 (這樣的邊一定不會出現),或者只屬於一個

原创 CF 462D(Appleman and Tree-樹形dp)

題意:一棵n個節點的樹(根爲0),樹上有一些點是黑色的,你希望刪除一個邊的集合,使每個剩下的聯通塊都恰好只有1個黑節點。求方案數。 dp[x][0] 表示對於節點i的子樹的一個劃分,x所在的聯通塊無黑節點 dp[x][1] 表示

原创 BZOJ 3503([Cqoi2014]和諧矩陣-gauss消元)

Description 我們稱一個由0和1組成的矩陣是和諧的,當且僅當每個元素都有偶數個相鄰的1。一個元素相鄰的元素包括它本 身,及他上下左右的4個元素(如果存在)。 給定矩陣的行數和列數,請計算並輸出一個和諧的矩陣。注意:所

原创 Wannafly挑戰賽4 (方程的解-二次剩餘)

題目描述 對於一個模意義下的一元二次方程:x^2 + ax + b = 0 (mod p),其中 p 是質數。 每次給定一組 a,b,p,問這個方程有沒有整數解,有解輸出“Yes”,無解輸出“No”。 有 T 組詢問。 輸

原创 Codejam Round 3 2020(Naming Compromise-DP)

Problem Cameron and Jamie are about to welcome a second baby into their lives. They are already good at working tog

原创 CCPC-Wannafly Winter Camp Day7

A.迷宮 有一個 nnn 個點 n−1n-1n−1 條邊的無向連通圖迷宮,其中有些點上面有人. 現在所有人的目標都是逃離這個迷宮,而迷宮的出口是 1 號點,每一時刻,會依次發生以下的事情: 1.在點 x 上的人選擇一個點 f(x)

原创 ARC 084(Small Multiple-最短路)

給k≤100000 ,求k的倍數(必須是正數)中數位和的最小值。 BFS 考慮在某一位填1相當於對這個數modk的值貢獻了vi ,我們可以處理出所有的vi . 注意填2貢獻了2vi ,可以視爲填了2個vi ,而且10imod

原创 Codeforces Round #450 (Div. 2) 題解

A #include<bits/stdc++.h> using namespace std; #define For(i,n) for(int i=1;i<=n;i++) #define Fork(i,k,n) for(int

原创 2017 United Kingdom and Ireland Programming Contest (UKIEPC 2017)

A Alien Sunset 模擬 #include<bits/stdc++.h> using namespace std; #define For(i,n) for(int i=1;i<=n;i++) #define Fork

原创 2017-2018 ACM-ICPC, NEERC, Northern Subregional Contest(Dividing Marbles-構造)

有一堆n=2d1+2d2+2d3+2d4 個石子。現在每次操作都選擇一堆,分成兩堆,使每堆至少有一顆石子,之後如果場上有相同數量的石子堆,則只保留一堆。問至少幾次操作使石子只剩1個。 顯然可以先將n化成2進制。 如果1的個數

原创 BZOJ 4289(PA2012 Tax-最短路)

給出一個N個點M條邊的無向圖,經過一個點的代價是進入和離開這個點的兩條邊的邊權的較大值,求從起點1到點N的最小代價。起點的代價是離開起點的邊的邊權,終點的代價是進入終點的邊的邊權 N<=100000 M<=200000 經典做

原创 CF 894E(Ralph and Mushrooms-Tarjen)

給一個有向圖,每條邊有邊權w ,第k次經過一條邊獲得max(0,w−1−2−..−(k−1)) ,問最大獲得權值。 顯然一個點強聯通分量裏的點可以一次取走,對原圖縮點,跑DAG. #include <iostream> #inc

原创 2017 ACM Jordanian Collegiate Programming Contest I(Counting Votes-特徵值)

在一個n*m的白板上有若干8聯通聯通塊,每塊必須是字母(H,M,Y) 中的一個,統計白板上各字母出現次數。注意各字母字體相同. 記錄特徵值。 #include<bits/stdc++.h> using namespace s

原创 BZOJ 5099([POI2018]Pionek-極角排序)

題意:有n個向量,每個向量可以選擇取或者不取,要求選一些向量,使得它們和最大。 假設最終答案的方向向量已知,顯然只要取和它點積爲正的向量就行。 維護一條過原點的直線,讓它轉一週,並維護這條直線上方的向量,將它們全取。 #inc

原创 BZOJ 5085(最大-經典題)

Description 給你一個n×m的矩形,要你找一個子矩形,價值爲左上角左下角右上角右下角這四個數的最小值,要你最大化矩形(這個矩形的行數和列數都大於1) 的價值。 Input 第一行兩個數n,m,接下來n行每行m個數,用來