UOJ Test Round 3

A.几何冲刺

感觉自己的智商爆炸。

显然是按照极角序排列之后依次加点,判断是否有点。

保证一个点在两个角的范围内就OK了啊,想了半天叉积。。。

#include "triangles.h"
#include <bits/stdc++.h>
#define for1(a,b,i) for(int i=a,end_=b;i<=end_;++i)
#define FOR2(a,b,i) for(int i=a,end_=b;i>=end_;--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 c<a.c;}
}a[M];const double pi=acos(-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[i+n]=(node){i+n,bx[i-1],by[i-1]};for1(1,n+m,i) a[i].c=atan2(a[i].y,a[i].x);sort(a+1,a+n+m+1);for1(1,n+m,i) a[n+m+i]=a[i],a[n+m+i].c+=2*pi;int tot=2*(n+m);for1(1,n,i) for1(i+1,n,j) f[i-1][j-1]=-1;for(int l=1;l<=n+m;++l) {while (l<=n+m&&a[l].id>n) ++l;if(l>n+m) break;bool t=a[l].c<0;int pos=l,Max_pos=-1;double num=a[l].c+pi,Max=-1e18;while (pos<tot&&a[pos+1].c<num) {++pos;//这里可以改成向量会快很多double x=atan2(a[pos].y-a[l].y,a[pos].x-a[l].x);if(!t&&x<0) x+=2*pi;if(a[pos].id>n) {if(x>Max) {Max=x;Max_pos=a[pos].id-n-1;}}else {if(x<Max) {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*logn+m*logn)$。

#include <bits/stdc++.h>
#include "mythological.h"
#define for1(a,b,i) for(int i=a,end_=b;i<=end_;++i)
#define FOR2(a,b,i) for(int i=a,end_=b;i>=end_;--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]) x=fa[x][i];if(x==y) return x;FOR2(16,0,i) if(fa[x][i]!=fa[y][i]) x=fa[x][i],y=fa[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) {n=n_;for1(1,n,i) a[i]=s_[i];int cur=0;for1(1,n,i) {if(a[i]==a[cur]) cur=fa[cur][0];else {if(cc[cur].count(a[i])) cur=cc[cur][a[i]];else cc[cur][a[i]]=i,fa[i][0]=cur,cur=i;}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 i=a,end_=b;i<=end_;++i)
#define FOR2(a,b,i) for(int i=a,end_=b;i>=end_;--i)
using namespace std;
typedef long long ll;
inline int read() {int f=1,sum=0;char x=getchar();for(;(x<'0'||x>'9');x=getchar()) if(x=='-') f=-1;for(;x>='0'&&x<='9';x=getchar()) sum=sum*10+x-'0';return f*sum;
}const int M=(1<<20)+5;
int ans[M];
double a[2][2];
const double c=1/sqrt(2);int query_xor(int n,int t) {int cnt=(1<<n)-1;for1(1,(1<<n)-1,i) ans[i]=i;for1(0,1,i) for1(0,1,j) a[i][j]=c;a[1][1]=-c;while (cnt>1) {FOR2(n,1,i) manipulate(a,i-1);int tot=0;int pos=query();for1(1,cnt,i) if(__builtin_parity(ans[i]&pos)==0) ans[++tot]=ans[i];cnt=tot; }return ans[1];
}
View Code

 

转载于:https://www.cnblogs.com/asd123www/p/9904302.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396203.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PPP认证方式pap chap chap2

2019独角兽企业重金招聘Python工程师标准>>> PPP点到点协议&#xff08;Point to Point Protocol&#xff0c;PPP&#xff09;是IETF&#xff08;Internet Engineering Task Force&#xff0c;因特网工程任务组&#xff09;推出的点到点类型线路的数据链路层协议。它…

Nexus-配置vPC 实验三

配置EvPC&#xff08;增强的vPC&#xff09;&#xff0c;下面两个FEX可以同时被两个N5K管理。注意&#xff1a;FEX只支持静态的Channel-group&#xff08;mode on&#xff09; N5K-1配置&#xff1a;配置FEXN5K-1&#xff08;config&#xff09;#feature fexN5K-1&#xff08;c…

python现在时间 命令,Python 日期格式和时间以及当前时间和时间戳

Python 程序在运行的时候可能需要获得当前的时间。在这个时候我们需要导入 datetime 包。获得当前时间例如&#xff0c;可以使用下面的代码获得当前的日期。today datetime.date.today()print("Todays date:", today)在上面的代码中&#xff0c;将会输出&#xff1a…

go grpc 深入笔记

为什么80%的码农都做不了架构师&#xff1f;>>> grpc 深入 生命周期 grpc 的生命周期由4种请求的方式不同而不同&#xff1a;(详细查看router示例) 普通rpc: 客户端发送请求&#xff0c;通知服务端调用rpc服务&#xff0c;服务端返回请求&#xff0c;如果状态"…

RSA加密算法简单分析

预备知识 1&#xff09;RSA是第一个比较完善的公开密钥算法&#xff0c;它既能用于加密&#xff0c;也能用于数字签名。RSA以它的三个发明者Ron Rivest, Adi Shamir, Leonard Adleman的名字首字母命名&#xff0c;这个算法经受住了多年深入的密码分析&#xff0c;虽然密码分析者…

Linux 小笔记

1、查看linux 版本 按ctrlshiftt 快捷键&#xff0c;打开终端&#xff0c;输入sudo uname --m &#xff0c;按下enter 如果显示i686,你安装了32位操作系统 如果显示 x86_64&#xff0c;你安装了64位操作系统 转载于:https://www.cnblogs.com/1995hxt/p/5436683.html

不会发布npm包?进来看看?

前言 npm(Node Package Manager)&#xff0c;一个Node的包管理器&#xff0c;平时我们常用的公共模块&#xff08;插件&#xff09;或者叫做包大多都放在上面&#xff0c;所以接下来要封装的插件&#xff0c;我们就简单称它为npm包&#xff0c;本文从就从这个简单的例子开始&am…

Nova 组件详解 - 每天5分钟玩转 OpenStack(26)

本节开始&#xff0c;我们将详细讲解 Nova 的各个子服务。 前面架构概览一节知道 Nova 有若干 nova-* 的子服务&#xff0c;下面我们将依次学习最重要的几个。今天先讨论 nova-api 和 nova-conductor。 nova-api Nova-api 是整个 Nova 组件的门户&#xff0c;所有对 Nova 的请…

12_04_Linux软件管理之四yum

2019独角兽企业重金招聘Python工程师标准>>> RPM安装&#xff1a; 二进制格式&#xff1a; 源程序--》编译--》二进制格式 有些特性是编译时选定的&#xff0c;如果编译时未选定此特性&#xff0c;将无法使用&#xff1b; rpm包的版本会落后于源码包&#xff0c;甚至…

linux 解析elf文件格式,Linux下ELF文件解析

1. windows PE文件与Linux ELF文件概述在windows中可执行文件是pe文件格式&#xff0c;Linux中可执行文件是ELF文件&#xff0c;其文件格式是ELF文件格式&#xff0c;在Linux下的ELF文件除了可执行文件(Excutable File),可重定位目标文件(RellocatableObject File)、共享目标文…

应用容器公共免费部署平台

从网上信息&#xff0c;发现了一个公共的容器部署平台 openshift.com&#xff0c;可以将我们封装好的docker镜像部署到平台上&#xff0c; 这样就不需要拥有一台云服务器了。对于测试环境非常有用。 首先当然是需要注册。这里全英文 第二&#xff0c;注册之后需要选择你想要的套…

linux 内存管理优化,Linux性能优化实战 内存篇 阅读笔记

第十五讲 基础篇&#xff1a;Linux内存是怎么工作的(2020.6.8)这一讲相关的内容正好之前看csapp的时候总结了一下&#xff0c;可以直接贴出来作为总结了。Linux的内存工作原理&#xff0c;这又是一个特别大的话题。一切向着尽量利用物理资源的方向在发展&#xff0c;在没有虚拟…

傅里叶变换与大数乘法

我们知道&#xff0c;两个 N 位数字的整数的乘法&#xff0c;如果使用常规的算法&#xff0c;时间复杂度是 O(N2)。然而&#xff0c;使用快速傅里叶变换&#xff0c;时间复杂度可以降低到 O(N logN loglogN)。 假设我们要计算以下两个 N 位数字的乘积&#xff1a; a (aN-1aN-2…

linux进程管理类命令大全,Linux进程管理类命令

一、htop命令选项-d #&#xff1a;指定延迟时间间隔&#xff1b;-u UserName&#xff1a;仅显示指定用户的进程&#xff1b;-s COLUME&#xff1a;以指定字段进行排序&#xff1b;子命令&#xff1a;l&#xff1a;显示选定的进程打开的文件列表&#xff1b;s&#xff1a;跟踪选…

android抓包工具——使用fiddler4在安卓手机抓包

Fiddler是一款非常流行并且实用的http抓包工具&#xff0c;它的原理是在本机开启了一个http的代理服务器&#xff0c;然后它会转发所有的http请求和响应&#xff0c;因此&#xff0c;它比一般的firebug或者是chrome自带的抓包工具要好用的多。不仅如此&#xff0c;它还可以支持…

ddt数据驱动

数据驱动原理 1.测试数据为多个字典的list类型 2.测试类前加修饰ddt.ddt 3.case前加修饰ddt.data() 4.运行后用例会自动加载成三个单独的用例 5.测试结果&#xff1a; Testing started at 21:51 ...start!{username: selenium\xe7\xbe\xa4, psw: 232607095}end!start!{username…

Canvas入门06-线段与像素边界

我们知道&#xff0c;使用以下2个API可以绘制一条线段&#xff1a; moveTo(x, y) 向当前路径中增加一条子路径&#xff0c;该子路径只包含一个点&#xff0c;此为线段的起始点lineTo(x, y) 将线段的下一个点加入子路径中context.strokeStyle rgb(200, 200, 0); context.lineWi…

函数表达书-读书笔记

定义函数的方式有两种&#xff1a;一种是函数声明&#xff0c;另一种就是函数表达式。函数声明的语法如下&#xff1a; function functionName(arg0,arg1,arg2){//函数体 } 函数声明&#xff0c;有一个重要特征就是函数声明提升。也就是在执行代码之前会先读取函数声明&#xf…

vs2012新建项目产生的问题

当用vs新建web项目时遇到 只需下载一个vs2012的更新插件 http://download.microsoft.com/download/A/0/2/A02C37E0-77F7-448A-BD5C-F66AB1F78DBC/VS11-KB3002339.exe 点击安装更新即可. 转载于:https://www.cnblogs.com/GreenLeaves/p/5452073.html