原创 poj 2356 Find a multiple 鴿巢原理的簡單應用

題目要求任選幾個自然數,使得他們的和是n的倍數。 由鴿巢原理如果我們只選連續的數,一定能得到解。 首先預處理前綴和模n下的sum,如果發現sum[i]==sum[j] 那麼(sum[j]-sum[i])%n一定爲0,直接輸出i+1~j就夠

原创 hdu 3657 Game 最小割

首先經典的奇偶建立二分圖(X,Y),對於相鄰兩點連邊2*(X&Y),源->X連邊,Y->匯連邊,權值w爲點權,求最小割。 考慮一條路徑 源->X->Y->匯 若割邊選取的是源->X,則表示選Y點不選X點, 答案爲w(X+Y)-w(X) 若

原创 poj 3735 Training little cats 矩陣

假設n=3 構造矩陣【1,0,0,0】 對於g 1操作,構造矩陣(0行i列++) 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 對於e 1操作,構造矩陣 (i整列清空) 1 0 0 0 0 0 0 0 0 0 1 0

原创 HDU 4859 海岸線 最小割

強烈建議閱讀一下最小割模型在信息學競賽中的應用 其中2.2.2的Optimal Marks一題和此題建模非常相像。 在原圖外圍虛擬一圈‘D’,我們要最大化的周長,就可以等價爲最大化相鄰的'D'和'.' 的總對數,也就是最大化相鄰格子不同類

原创 HDU 4862 Jump 費用流

建圖: 將所有點拆成兩個點分別放在X和Y集,源點到所有X集,Y集到所有匯點連邊。X如果能到Y,則連邊。 源點連接一個X集的新節點,流量爲K,這個新節點和Y集的所有點連邊。 跑最大費用流,若不滿流量則-1. 新節點相當於直接選擇了一個起點a

原创 UVA 10735 混合圖的歐拉回路+輸出路徑

#include<cstdio> #include<cstring> #include<cmath> #include<iostream> #include<algorithm> #include<set> #include<map> #

原创 基於Jpcap的網絡抓包+分析軟件

這是我們網絡編程與協議分析的課設,由於最近一直在用JAVA寫項目,後面就快要寫到界面了,所以乾脆直接學習用JAVA來寫這次的課設,算是一舉兩得了。 課設的要求是獲取局域網內的所有數據包,並且分析TCP,UDP,ICMP各個字段,和一些應

原创 ZOJ 3209 Treasure Map DLX

用最少的矩陣覆蓋n*m的地圖,注意矩陣不能互相覆蓋。 這裏顯然是一個精確覆蓋,但由於矩陣拼接過程中,有公共的邊,這裏需要的技巧就是把矩陣的左邊和下面截去一個單位。 #include <stdio.h> #include <string.h

原创 hdu 4966 最小樹形圖

將每門課等級拆成0,1,2,3...a[i]個點,對每個等級大於0的點向它低一級連邊,權值爲0【意思是,若修了level k,則level(0~k)都當做修了】 將輸入的邊建邊,權值爲money[i]。 建立根節點,向每個level 0的

原创 hdu 4407 Sum 容斥+離線

求X-Y之間和p互質的數的和,典型的容斥問題,求和用等差數列求和,注意首項末項是多少。 首先記錄下不修改的答案,離線處理,存下詢問,輸出的時候,遇到一個操作1,就遍歷前面的操作,把修改加上去,注意要判重,只保留最後一次修改。 #inclu

原创 hdu 4063 Aircraft 計算幾何+最短路

易知最短路一定是以圓心或者兩圓交點作爲中間點到達的。所以把這些點拿出來建圖跑最短路就夠了。 現在的問題就是,給定兩個點,能否連邊 add(a,b,dist(a,b)) 題目要求,ab線段必須完全在圓上,所以可以求出ab線段和所有圓的所有交

原创 SPOJ - QTREE 375 Query on a tree 樹鏈剖分+線段樹

操作1:修改第k條邊權。 操作2:詢問兩點間最大邊權。 樹鏈剖分,然後線段樹維護最大值 #include<cstdio> #include<cstring> #include<cmath> #include<iostream> #incl

原创 UVA 11212 IDA*

移動一塊連續的區間使得數列遞增。問最少次數。 直接IDA*暴搜,不過我沒有想到A*函數,所以就隨手寫了個連續遞增塊數作爲估價函數,WA了,然後除以2,還是WA,除以3,WA,除以4.。。過了= = #include<iostream>

原创 ZOJ - 3794 Greedy Driver 最短路

首先正向跑一遍1爲起點的最短路,注意鬆弛過程如果走到加油站則dis=0,並且路上任意時刻dis都不能大於C,判斷dis[n]是否<=C就能判斷無解情況了。 然後反向建圖再跑一次N爲起點的最短路,這樣可以求到每個點到n點的最短路。 對於每一

原创 ZOJ 3814 Sawtooth Puzzle 狀態壓縮搜索

由於一個框框只有4種狀態,總狀態數只有4^9,bfs可解。 麻煩的地方就在於模擬。 我的狀態的存法是,將初始狀態看做000000000,若順時針旋轉一次就+1, 3+1=0。 bfs的過程中,需要套一個dfs計算旋轉當前框框會影響到哪些框