搞钱路子一天两万,企业网站的seo,阿q的项目wordpress,网站开发人员属于什么A.几何冲刺 感觉自己的智商爆炸。 显然是按照极角序排列之后依次加点#xff0c;判断是否有点。 保证一个点在两个角的范围内就OK了啊#xff0c;想了半天叉积。。。 #include triangles.h
#include bits/stdc.h
#define for1(a,b,i) for(int ia,end_b;i… A.几何冲刺 感觉自己的智商爆炸。 显然是按照极角序排列之后依次加点判断是否有点。 保证一个点在两个角的范围内就OK了啊想了半天叉积。。。 #include triangles.h
#include bits/stdc.h
#define for1(a,b,i) for(int ia,end_b;iend_;i)
#define FOR2(a,b,i) for(int ia,end_b;iend_;--i)
using namespace std;
typedef long long ll;
#define M 20005struct node {int id,x,y;double c;inline bool operator (const node a) const {return ca.c;}
}a[M];const double piacos(-1);void check_triangles(int n,int m,int *ax,int *ay,int *bx,int *by,int **f) {for1(1,n,i) a[i](node){i,ax[i-1],ay[i-1]};for1(1,m,i) a[in](node){in,bx[i-1],by[i-1]};for1(1,nm,i) a[i].catan2(a[i].y,a[i].x);sort(a1,anm1);for1(1,nm,i) a[nmi]a[i],a[nmi].c2*pi;int tot2*(nm);for1(1,n,i) for1(i1,n,j) f[i-1][j-1]-1;for(int l1;lnm;l) {while (lnma[l].idn) l;if(lnm) break;bool ta[l].c0;int posl,Max_pos-1;double numa[l].cpi,Max-1e18;while (postota[pos1].cnum) {pos;//这里可以改成向量会快很多double xatan2(a[pos].y-a[l].y,a[pos].x-a[l].x);if(!tx0) x2*pi;if(a[pos].idn) {if(xMax) {Maxx;Max_posa[pos].id-n-1;}}else {if(xMax) {int x_[2]{a[l].id,a[pos].id};if(x_[0]x_[1]) swap(x_[0],x_[1]);f[x_[0]-1][x_[1]-1]Max_pos;}}}}
} View Code B.去月球 感觉我写的hash线段树做法挺显然的吧$O(m*log^2n)$。 然后优化就可以用后缀自动机搞个$O(1)$lca就OK了但是太码农了没写。 myy的思路非常6。 考虑建出一个trie树表示$[1,i]$的消除完之后的序列。 然后$dis(pos[l-1],pos[r])$就是不能得到的点的个数。 证明的话就是我们考虑在$pos[l-1]$后加上$[l,r]$消除完的区间。 和$[1,l-1]$内配对的点是一个前缀对应了走到lca之后对应了走到pos[r]。 很巧妙了$O(n*lognm*logn)$。 #include bits/stdc.h
#include mythological.h
#define for1(a,b,i) for(int ia,end_b;iend_;i)
#define FOR2(a,b,i) for(int ia,end_b;iend_;--i)
using namespace std;
typedef long long ll;#define M 200005
int n;
int a[M],pos[M];
int dep[M],fa[M][20];
map int,int cc[M];inline int Lca(int x,int y) {if(dep[x]dep[y]) swap(x,y);FOR2(16,0,i) if(dep[fa[x][i]]dep[y]) xfa[x][i];if(xy) return x;FOR2(16,0,i) if(fa[x][i]!fa[y][i]) xfa[x][i],yfa[y][i];return fa[x][0];
}int query(int l,int r) {--l;return r-l-dep[pos[l]]-dep[pos[r]]2*dep[Lca(pos[l],pos[r])];
}void init(int n_,int _,int s_[],int t) {nn_;for1(1,n,i) a[i]s_[i];int cur0;for1(1,n,i) {if(a[i]a[cur]) curfa[cur][0];else {if(cc[cur].count(a[i])) curcc[cur][a[i]];else cc[cur][a[i]]i,fa[i][0]cur,curi;}pos[i]cur;}for1(1,n,i) dep[i]dep[fa[i][0]]1;for1(1,16,i) for1(1,n,j) fa[j][i]fa[fa[j][i-1]][i-1];
} View Code C.量子破碎 fwt的应用。 $cnt(x\pos)cnt(y\pos)cnt(x\y\pos)$ fwt之后pos点不为0的条件就是上面的式子为偶数。 然后直接check解就好了。 #include bits/stdc.h
#include quantumbreak.h
#define for1(a,b,i) for(int ia,end_b;iend_;i)
#define FOR2(a,b,i) for(int ia,end_b;iend_;--i)
using namespace std;
typedef long long ll;
inline int read() {int f1,sum0;char xgetchar();for(;(x0||x9);xgetchar()) if(x-) f-1;for(;x0x9;xgetchar()) sumsum*10x-0;return f*sum;
}const int M(120)5;
int ans[M];
double a[2][2];
const double c1/sqrt(2);int query_xor(int n,int t) {int cnt(1n)-1;for1(1,(1n)-1,i) ans[i]i;for1(0,1,i) for1(0,1,j) a[i][j]c;a[1][1]-c;while (cnt1) {FOR2(n,1,i) manipulate(a,i-1);int tot0;int posquery();for1(1,cnt,i) if(__builtin_parity(ans[i]pos)0) ans[tot]ans[i];cnttot; }return ans[1];
} View Code 转载于:https://www.cnblogs.com/asd123www/p/9904302.html