Time of Update: 2018-12-05
#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include <time.h>#include <cstdio>#include <math.h>#include
Time of Update: 2018-12-05
#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include <time.h>#include <cstdio>#include <math.h>#include
Time of Update: 2018-12-05
#define LL long long#define PI acos(-1.0)#define N 105#define MAX INT_MAX#define MIN INT_MIN#define eps 1e-8double a[N];int n;double maxm;double cal(double aa,double bb,double cc ){ return (aa*aa+bb*bb-cc*cc)/(2*aa*bb);}int gao(double x){ int
Time of Update: 2018-12-05
#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include <time.h>#include <cstdio>#include <math.h>#include
Time of Update: 2018-12-05
http://poj.org/problem?id=2187這裡很明顯不能直接暴力(50000*50000)=。=我們要知道最遠的兩點一定是凸包上的頂點,所以首先構造凸包,然後枚舉找出最遠距離,注意這裡是平方!還要注意n==2的情況,直接求距離#include<iostream>#include<vector>#include<map>#include<stack>#include<algorithm>#include<queue
Time of Update: 2018-12-05
http://acm.timus.ru/problem.aspx?space=1&num=1306—— 一道不錯的“水題”一開始用sort快排,結果到了test就MLE了。。。後來看了別人才知道可以用堆來做,今晚也花了整整一晚去研究用堆實現的priority_queue優先隊列,不過總是想不明白為啥預設的是<重載會按大到小來輸出,或許是因為小的數位於堆這棵二叉樹的兒子位置,而大的就是root。。。#include <vector>#include
Time of Update: 2018-12-05
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3278一道不錯的二分。。。第一次寫這樣的二分#include<iostream>#include<vector>#include<map>#include<stack>#include<algorithm>#include<queue>#include<list>#include<s
Time of Update: 2018-12-05
http://acm.timus.ru/problem.aspx?space=1&num=1028鬱悶啊!!!竟然想不到用樹狀數組。。。真水~#include <vector>#include <list>#include <map>#include <set>#include <queue>#include <string.h>#include <deque>#include <stack>
Time of Update: 2018-12-05
http://poj.org/problem?id=2823基礎單調隊列。用STL的deque竟然TLE!!!無論c++還是g++。。。而用數組做提交c++ac了,提交g++TLE不明白為啥這樣子堆操作:先對尾部進行操作,以小根堆為例:當從尾部加入一個元素後,檢查前面時候有比他大的,有就刪除前面,而此元素就向前推進,直至沒有比它大的,沒有就直接塞入;然後對隊列的頭進行操作:檢查下標是否滿足特定範圍之內,不滿足就刪除,最後取第一個就是當前結果。以這題為例,操作一下這個流程,加深理解1 3 -1 -
Time of Update: 2018-12-05
注意n個點有n-1條邊就ok#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n;char a[502][10];int b[502][5] = {0};int map[502][502];int dis[502];bool flag[502];int result;int mi(int i, int j){
Time of Update: 2018-12-05
http://acm.timus.ru/problem.aspx?space=1&num=1613hash+二分,其中hash可以用STL裡面的map實現。開始沒注意到原來那個序號是有序的!!!所以用vector就ok#include <vector>#include <list>#include <map>#include <set>#include <queue>#include
Time of Update: 2018-12-05
資料結構,棧的應用!#include <vector>#include <list>#include <map>#include <set>#include <queue>#include <string.h>#include <deque>#include <stack>#include <bitset>#include <algorithm>#include
Time of Update: 2018-12-05
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1558#include <vector>#include <list>#include <map>#include <set>#include <string.h>#include <deque>#include <stack>#include <bitset>#include
Time of Update: 2018-12-05
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2325本題可以直接排序再算可以看到全部的那段線段長度,也可以用相似三角形來做,我選擇後者具體方法:先把障礙物按x從小到大排序,然後就遍曆,令top=L.x1,記得要先串連a[i].x1與hou.x2,再用相似三角形求出要求地區的右端點,在類似的求出地區的左端點,要注意不能超過L.x2,因為最後還要L.x2-top,至於L.x1就不用討論,不影響結果,具體看代碼#includ
Time of Update: 2018-12-05
經典線段樹題目,如果用一般的深入到每個節點去修改值的方法會TLE,所以這裡引入一個新名詞“延遲最佳化”,意思是說每個節點線段有一個增量值inc,用來儲存增量的,噹噹前區間等於要查詢的區間就用當前區間的和sum+當前區間的增量inc*(t-s+1),否則就把增量傳下去,而當前區間則加上這增量和並且inc 歸零由於此時poj突然沒有了這題,估計要改資料,所以提交不了,先上代碼。線段樹Accepted7116K1688MSC++ int lowbit(int t){return t&(-t)
Time of Update: 2018-12-05
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3471位元運算的確很神的說。。。我這裡用1代表爆了,0代表沒爆,用二進位記錄每種狀態,廢話少說,上代碼。#include <vector>#include <list>#include <map>#include <set>#include <string.h>#include
Time of Update: 2018-12-05
#include<iostream>#include<vector>#include<map>#include<stack>#include<algorithm>#include<queue>#include<list>#include<set>#include<string.h>#include<stdlib.h>#include<math.h>#include&
Time of Update: 2018-12-05
#include <vector>#include <list>#include <map>#include <set>#include <string.h>#include <deque>#include <stack>#include <bitset>#include <algorithm>#include <functional>#include <numeric&
Time of Update: 2018-12-05
http://acm.hdu.edu.cn/showproblem.php?pid=2149簡單的bash博弈,如果滿足m%(n+1)==0,則先手敗(必敗態),因為可以這樣想:每輪後手總可以造出n+1這樣的情況,最後明顯是後手必勝。但是當m%(n+1)!=0,則先手要不敗就應該取m%(n+1)的餘數,因為當第一次先手取這個餘數後,就變成了後手的必敗態。#include <vector>#include <list>#include
Time of Update: 2018-12-05
http://livearchive.onlinejudge.org/index.php?option=com_onlinejudge&page=show_problem&problem=1722很腦殘的bfs,注意找水的時候不要標記!#include<iostream>#include<vector>#include<stack>#include<algorithm>#include<queue>#include<