SRM13】的更多相关文章

由于种种原因,好像出了点锅……? 好在问题不是很大. 得分比我估的要低啊. 木之本樱 计算几何送分题 就是叫你求一共有多少组四线共点,O(n^4)暴力可以过初.枚举两条线,求出交点之后求有多少条直线过这个点.这样是O(n^3)的,可以过续.先把n^2 个交点求出来,排个序,统计多少个点重复.O(n^2logn)可以过终. 实际:由于出题人自己代码常数较大,导致卡暴力失败,n^4过了续,n^3过了终. 绵津见 数据结构送分题 按照题意模拟,可以过初.以时间和x 坐标作为平面的两维,如果把每个西瓜当…
哇这题是真的喵,HR智商太高辣 这题的难点就是看了题解之后怎么证明题解里的结论... 结论①:深度大于logm的点肯定能达到最大值 证明:显然一个西瓜的属性里0数量一半1数量一半我们取到的1数量最少,所以我们最多logm个点就可以把所有属性取到1 结论②:未达到最大值的点相邻两个肯定价值不同 证明:易证,取反即可 结论③:有n个西瓜,记s[i]为拥有的属性i的集合,当s取遍所有可能的2^n种集合的时候达不到最大值 证明:显然所有的集合里必有一个全0的集合,我们至少需要把这个集合里的一个0变成1.…
题目大意:求对于每个i求有多少个合法的j以及j对于几个i是合法的,合法的定义:l[i]<=x[j]<=r[i],T[i]-y[i]<=t[j]<=T[i]+y[i]. 设a[i]=T[i]-y[i],b[i]=T[i]+y[i]. 可以把题目看成一个(x[i],t[i])的点在多少个左上角为(l[i],a[i])右下角为(r[i],b[i])的矩阵中. 那么就从上到下扫每一行,每一行从左到右扫,以横坐标为线段树或BIT下标. 对于询问每个点在多少个矩阵中,可以使用差分,扫到矩阵顶部…
这道题很容易想到是二分 但是因为可能会爆LL 所以要加一波特判 #include<cstdio> #include<cstring> #include<algorithm> #define LL long long using namespace std; ,mx=1e18; LL read(){ LL ans=,c=getchar(); ') c=getchar(); +(c-'); c=getchar();} return ans; } LL n,S,mn; LL…
这道题可以贪心 维护一个答案队列 枚举位置 每次将比当前位置大的队尾全部替代掉 记录删了多少了就好了 #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<string> #define LL long long using namespace std; ; int n,k,cnt; char s[M],q[M]; int main()…