k4

100714G

别说谁变了你拦得住时间么 提交于 2019-12-02 03:17:43
可恶啊这队友又背着我偷偷打比赛 (迷惑发言) 点开发现是个傻逼题,一个小时就施展完了。 题意很简单,在y轴上有一些球,让你求它们的表面积。 一看就直接考虑每个球的贡献吧, 维护一下其他球对这个球造成的影响,然后这个球的贡献就会在[down,up]里,分几种情况求就行了。 不想多分的话可以直接对0取max,比方说down>up这样子。 这队友没板子手写一直wa看得我好心疼啊。 不过 援 圆交手写起来也不难吧。。。(超小声) #include <bits/stdc++.h> using namespace std; typedef double db; const db eps=1e-6; const db pi=acos(-1); int sign(db k){ if (k>eps) return 1; else if (k<-eps) return -1; return 0; } int cmp(db k1,db k2){return sign(k1-k2);} int inmid(db k1,db k2,db k3){return sign(k1-k3)*sign(k2-k3)<=0;}// k3 在 [k1,k2] 内 struct point{ db x,y; point operator + (const point &k1) const{return (point){k1

cf 975E

柔情痞子 提交于 2019-11-27 04:18:52
出于某种不可抗力我翻了一下以前绿名时打的div2,然后插旗:这种傻逼div2我现在不是随手ak吗? 然后就没有然后了 给一个凸包,一开始固定两个点,每次拆下一个点(取消固定),待稳定后再固定另外一个点。 支持查询第几个点的坐标。 首先求凸包重心,全部划分成三角形那样子。 考虑一次旋转操作,其实是将重心旋转到了固定点的正下方。 那么在知道了每个点相对于重心的向量后,这其实蛮好求的。 同样,重心每次旋转的角度也容易知道。 所以我们翻过来考虑,维护重心坐标和旋转角度,对于一个查询,我们用它的相对位置*角度+重心即可。 很好的一道题。 有点神志不清调了好久 #include <bits/stdc++.h> #define mp make_pair #define fi first #define se second #define pb push_back using namespace std; typedef double db; const db eps=1e-6; const db pi=acos(-1); int sign(db k){ if (k>eps) return 1; else if (k<-eps) return -1; return 0; } int cmp(db k1,db k2){return sign(k1-k2);} int inmid(db k1,db

zoj2589

不打扰是莪最后的温柔 提交于 2019-11-26 18:00:01
是cf933C的升级版。 平面图欧拉定理。over! f=e-v+c+1 c是联通块,相交才视为一块。 e是圆弧数,v是顶点数。 #include <bits/stdc++.h> #define pii pair<int,int> #define mp make_pair #define fi first #define se second #define pb push_back using namespace std; typedef double db; const db eps=1e-6; const db pi=acos(-1); int sign(db k){ if (k>eps) return 1; else if (k<-eps) return -1; return 0; } int cmp(db k1,db k2){return sign(k1-k2);} int inmid(db k1,db k2,db k3){return sign(k1-k3)*sign(k2-k3)<=0;}// k3 在 [k1,k2] 内 struct point{ db x,y; point operator + (const point &k1) const{return (point){k1.x+x,k1.y+y};} point operator - (const point