loj
明顯是二分答案.
首先考慮每乙個點在乙個時間內能夠到達的點是乙個圓,那麼如果圓和大圓相離,顯然不行.
現在考慮有交,你取的一定是兩個端點中的乙個,接著你就可以發現這個東西可以網路流.
唯一的問題在於,你需要考慮這段區間外要把這個匹配刪除,那麼可以考慮模擬退流的過程.
#include#include#include#include#include#include#include#include#includeusing namespace std;
#define mp make_pair
#define ll long long
#define re register
typedef pairpii;
#define file(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout)
inline int gi()
while(ch>='0'&&ch<='9')
return f*sum;
}const int n=5010,inf = 1e9+10;
const double pi=acos(-1.0),eps=1e-8;
int n,r,x[n],y[n],q;
double nd;
struct nodee[n*n<<2];
struct quesq[n];
int front[n], cnt, s, t, dep[n] ;
void add(int u,int v,int w)
;front[u]=cnt++;
e[cnt]=(node);front[v]=cnt++;
}bool cmp(ques a, ques b)
queueque;
bool bfs()
} }return dep[t];
}int dfs(int u, int flow)
else dep[v] = -1;
} }return 0;
}void del(int u,int v,int &ans)
for(int j=0,i=front[u];i;j=i,i=e[i].nxt)
if(e[i].to==v)
if(!val)return;--ans;
for(int i=front[s];i;i=e[i].nxt)if(e[i].to==u)
for(int i=front[t];i;i=e[i].nxt)if(e[i].to==v)
if(bfs())ans+=dfs(s,inf);
}bool check(double mid)
printf("%.10lf\n",l);
return 0;
}
JSOI2018 軍訓列隊
n n le5 times10 5 個學生排成一排,第 i 個學生的位置為 a i m m le5 times10 5 次命令,每次將編號在 l,r 之間的學生移動到 k,k r l 位置上,每個位置站乙個人,順序自定 無需考慮原來在 k,k r l 位置上的人 每次的代價為每個人移動距離之和。求每...
JSOI2018 防禦網路
題面 題解這道題對我來說意義重大,是我花了很長時間獨立完成的dp。分析題目 給出乙個仙人掌,對於乙個點集 s 把原圖中使他聯通的最小的邊集記做 h s 求 sum h s 從考慮邊的貢獻的思路開始。對於非環邊,假設它把 v 分成了 s 和 t 兩個區域,如果它被使用,當且僅當其中存在兩個點 a,b ...
JSOI2018 潛入行動
題目 我好菜啊,嚶嚶嚶 原來本地訪問陣列負下標不會報 re 或者 wa 甚至能跑出正解啊 這道題還是非常呆的 我們發現 k 很小,於是斷定這是乙個樹上揹包 發現在乙個點上安裝控制器並不能控制這個點,可能需要到父親那邊才能控制這個點,於是我們設 dp i j 0 1 0 1 表示在以 i 為根的子樹裡...