題目描述
給出平面上n 個點,試將他們黑白染色,要求染色後無法用一條直線把黑白完全分開。 隨便輸出一種方案。
資料範圍
n<=100000
題解:
①點數很多,但是可以發現至多需要4個點就可以完成。
②根據上述結論進行分類討論即可:
找三個點,若三點共線,則按圖1方法染色。
若三點不共線,再找第四個點,若與其中兩點共線,則按圖2方法染色。
若第四個點在三角形外,則按圖3方式染色。
若第四個點在三角形內,則按圖4方式染色。
#include#include#include#include#include#define go(i,a,b) for(int i=a;i<=b;i++)#define ro(i,a,b) for(int i=a;i>=b;i--)
#define fo(i,a,x) for(int i=a[x],v=e[i].v;i;i=e[i].next,v=e[i].v)
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
int main()
//czy020202
無憂無慮的日子和成功的人一樣,突然有一天我回想這走來的一路
不由自主的我哭得像個孩子一樣。——————————————汪峰《大橋上》
CZY選講 棋盤迷宮
題目描述 乙個n m的棋盤,表示可以通過,表示不能通過,給出q個詢問,給定起點和終點,判斷兩點是否聯通,如聯通輸出 yes 否則輸出 no 資料範圍 n,m 500,q 10 6。題解 由於存在兩個方向和不可逆性,標記聯通分量的方法不可行 分治演算法。按照行將棋盤一分為二,進行dp處理 用f i j...
CZY選講 吃東西
題目描述 乙個神秘的村莊裡有4家美食店。這四家店分別有a,b,c,d種不同的美食。lyk想在每一家店都吃其中一種美食。每種美食需要吃的時間可能是不一樣的。現在給定第1家店a種不同的美食所需要吃的時間a1,a2,aa。給定第2家店b種不同的美食所需要吃的時間b1,b2,bb。以及c和d。lyk擁有n個...
CZY選講 最大子矩陣和
題目描述 有乙個n m的矩陣,恰好改變其中乙個數變成給定的常數p,使得改變後的這個矩陣的最大子矩陣最大。資料範圍 n,m 300。題解 如果沒有p,那麼二維矩陣和就是一維最長連續子串行的dp公升級就可以了 設f i j k 表示在i行j行之間1 k列這乙個矩形中的最大子矩陣的值 轉移方程 f i j...