SRM13

由于种种原因,好像出了点锅……?

好在问题不是很大。

得分比我估的要低啊。

木之本樱 计算几何送分题

就是叫你求一共有多少组四线共点,O(n^4)暴力可以过初。
枚举两条线,求出交点之后求有多少条直线过这个点。这样是O(n^3)的,可以过续。
先把n^2 个交点求出来,排个序,统计多少个点重复。O(n^2logn)可以过终。

实际:由于出题人自己代码常数较大,导致卡暴力失败,n^4过了续,n^3过了终。

绵津见 数据结构送分题

按照题意模拟,可以过初。
以时间和x 坐标作为平面的两维,如果把每个西瓜当成一个点,每个海浪可以影响到的西瓜在一个矩形内,暴力nm 可以过续,扫描线+树状数组可以过终。
由于数据有梯度暴力能多拿一些分。

花六游鸟小 结论送分题

初是用来送分的,随便怎么暴力都行。

续好像也是用来送分的,n*(深度)^2 的做法即可。
终也是用来送分的,只要猜到几个浅显的结论就跟续一模一样了。
首先深度大于logm 的点肯定能达到最大值。因为每次我们可以把至少一半的为0 的属性变成1。
然后未到达最大值的点相邻两个肯定价值不同,也就是说路径相邻两个值不同的限制其实是把达到最大值的子树砍掉。然后套续的做法即可。
可是怎么判断一个点的价值达到最大值呢?

结论是如果有n 个01 串,记marki 为拥有第i个属性的串的集合。那么当所有marki 取遍所有可能的2^n 种集合的时候达不到最大值,否则可以达到最大值。
如果不知道最后一个结论直接暴力跑的话,(由于复杂度都在读入)这部分能拿到多少分就看你暴力怎么写了,出题人把自己的暴力卡到了70 分。

出题人的暴力分=80+60+70=210 是不是很棒棒?
最后感谢验题人:abslime、mistyeye、cgh_

时间: 2024-10-16 10:45:03

SRM13的相关文章

汕头市队赛 SRM13 T3

这道题可以贪心 维护一个答案队列 枚举位置 每次将比当前位置大的队尾全部替代掉 记录删了多少了就好了 #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<string> #define LL long long using namespace std; const int M=1e7+7; int n,k,cnt; char s[M]

汕头市队赛 SRM13 T2

这道题很容易想到是二分 但是因为可能会爆LL 所以要加一波特判 #include<cstdio> #include<cstring> #include<algorithm> #define LL long long using namespace std; const LL M=1e6+7,mx=1e18; LL read(){ LL ans=0,c=getchar(); while(c<'0'||c>'9') c=getchar(); while(c>

SRM13绵津见-终(扫描线+线段树/BIT)

题目大意:求对于每个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下标. 对于询问每个点在多少个矩阵中,可以使用差分,扫到矩阵顶部