luogu P4515 [COCI2009-2010#6] XOR】的更多相关文章

luogu P4515 [COCI2009-2010#6] XOR 描述 坐标系下有若干个等腰直角三角形,且每个等腰直角三角形的直角顶点都在左下方,两腰与坐标轴平行.被奇数个三角形覆盖的面 积部分为灰色,被偶数个三角形覆盖的面积部分为白色,如下图所示. 已知 NN个等腰直角三角形的顶点坐标及腰长,求灰色部分面积. 输入输出格式 输入格式: 输入第一行包含一个整数 NN,表示等腰直角三角形数量. 接下来 NN行,每行三个整数 X, Y, RX,Y,R,分别表示等腰直角三角形的顶点坐标 (X, Y)…
LINK:XOR 一个不常见的容斥套路题. 以往是只求三角形面积的交 现在需要求被奇数次覆盖的区域的面积. 打住 求三角形面积的交我也不会写 不过这道题的三角形非常特殊 等腰直角 且直角点都在左下方 这就有很多的性质了. 容易发现最后交出的三角形为等腰直角三角形. 考虑如何求若干个三角形交出的面积 不太会证明 题解区的一个神仙给出了一个式子. 设 \(c_i=x_i+y_i+z_i\)最终交出的三角形的直角边边长为 \(MAX(0,min(c_i)-max(x_i)-max(y_i))\) 数据…
严格次小生成树,关键是“严格”,如果是不严格的其实只需要枚举每条不在最小生成树的边,如果得到边权和大于等于最小生成树的结束就行.原理就是因为Kruskal非常贪心,只要随便改一条边就能得到一个非严格的次小生成树.然而是严格的QAQ,于是得搞点别的东西来实现“严格”,维护个次大值就行.依次枚举每条边,如果这条边和加上这条边构成的环中最大的边边权相等,取次大值,否则取最大值. 参考代码: #include<cstdio> #include<algorithm> #define ll l…
传送门 我真的弱,正解都不会还打了个错的暴力 考虑平行线与x轴平行,那么可以按照y为第一关键字升序,x为第二关键字升序排序,然后合法的一段红点就是连续的一段,答案也就是最大的连续红色段 推广到一般情况,我们可以把所有点绕原点旋转,每次转着都会有两个点排序后的相对位置交换,可以用线段树维护答案,每次单点修改,取出全局最大连续段更新答案 #include<bits/stdc++.h> #define LL long long #define db double #define il inline…
手动博客搬家:本文发表于20170805 21:25:49, 原地址https://blog.csdn.net/suncongbo/article/details/76735893 URL: http://poj.org/problem?id=1703 题目大意:本题即很经典的"龙帮虎帮"问题. 有n个元素(n<=1e5),分布在两个不同的集合里. 现在有M个语句(m<=1e5),每个语句共两种:(1) 给定某两个元素在不同的集合中.(2) 询问两个元素是否在同一集合中.对…
luogu P2574 XOR的艺术 (线段树) 算是比较简单的线段树. 当区间修改时.\(1 xor 1 = 0,0 xor 1 = 1\)所以就是区间元素个数减去以前的\(1\)的个数就是现在\(1\)的个数. #include <iostream> #include <cstdio> #define lson now << 1 #define rson now << 1 | 1 const int maxN = 2e5 + 7; struct Node…
[luogu]P1800 software_NOI导刊2010提高(06) 题目描述 一个软件开发公司同时要开发两个软件,并且要同时交付给用户,现在公司为了尽快完成这一任务,将每个软件划分成m个模块,由公司里的技术人员分工完成,每个技术人员完成同一软件的不同模块的所用的天数是相同的,并且是已知的,但完成不同软件的一个模块的时间是不同的,每个技术人员在同一时刻只能做一个模块,一个模块只能由一个人独立完成而不能由多人协同完成.一个技术人员在整个开发期内完成一个模块以后可以接着做任一软件的任一模块.写…
P1801 黑匣子_NOI导刊2010提高(06) 题目描述 Black Box是一种原始的数据库.它可以储存一个整数数组,还有一个特别的变量i.最开始的时候Black Box是空的.而i等于0.这个Black Box要处理一串命令. 命令只有两种: ADD(x):把x元素放进BlackBox; GET:i加1,然后输出Blackhox中第i小的数. 记住:第i小的数,就是Black Box里的数的按从小到大的顺序排序后的第i个元素.例如: 我们来演示一下一个有11个命令的命令串.(如下图所示)…
题目链接:https://www.luogu.org/problemnew/show/P1774 归并排序求逆序对. #include <cstdio> #define livelove long long using namespace std; const int maxn = 600001; livelove a[maxn], s[maxn], ans = 0, n;//ans用来记录逆序对数量 void merge_sort(livelove l,livelove r) { if(l…
题目链接:https://www.luogu.org/problemnew/show/P1801 替罪羊树吼啊! #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define il inline using namespace std; const int maxn = 2000001; const int alpha = 0.7; struct s…