首页 > 其他分享 >20240724总结

20240724总结

时间:2024-07-24 21:53:58浏览次数:7  
标签:总结 over ch int 线段 合并 mid 20240724

上午模拟赛100+50+0+0.
T3本来能拿更高的分数,但是预处理放到里面了。

T1\((kruskal+lca)\)

最小瓶颈生成树/最短路。
其实仔细想想,让他们之间最大边最短,其实就是最短的代价连通。据此得到解决。

T2

构造序列a:

\[i\&1 :a[i] = i + 1 / 2 \]

\[i \% 2 == 0:a[i] = n + 1 - i / 2 \]

现在有\(q<=1e5\)次询问:有多少区间的和=s?

观察性质咯。
这个序列可以写成

观察区间和->相邻和?

\[i\&1 :a[i] + a[i + 1] = n + 1 \]

\[i \% 2 == 0:a[i] + a[i + 1] = n + 2 \]

据此分类讨论。

具体来说:
l奇,r偶。块是固定的=s/(n + 1),也就是问有多少个间隔为这个的组。
l偶r奇同理。用刚刚的图看来是斜线。
lr同奇偶。我们取出模数,则模数其实就是ar。则取出模数下标(直接根据上面取),判断l=r-bk是否合法即可。

T3:

观察popcount()的性质。

这个性质。
接下来如何做?看60分给予我们启发:可以先不用管上界。
接下来考虑枚举popcount=i,然后把i-1,i+1固定,接下来就变成了一个组合数问题。预处理组合数,over。带上上界呢?也很简单,如果r此位为1,令此位为0算答案,继续递归,这样就变成了logn个无限制数,over。

T4:

套了层博弈论壳子。

g:我感觉至多一部分是博弈,用来表达某种约束(充要条件)。

->必胜?(每个数选的个数)c1^c2..!=0
->如果带上bob,异或和>m才行,否则失败。
->表达限制:sigma aici<=k,ci异或 >m,
->异或按位独立,按位DP,
f[pos,i, lmt, cnt, op] = f[位数, 第几个数, 顶到下界,剩余钱数(单位是2^pos),当前填了奇/偶个1],转移就行。

动态开点

用来优化空间复杂度,有些情况我们必须开大,比如

询问要多少,我就开多少。
具体来说如何做?
动态开点就是首先不能用堆式编号,然后额外处理下当前节点为空情况,其他一样。
Node中记录lson,rson。modify时记录当前区间,特殊处理!u,开引用u,over
老师代码。

#define mid ((l+r)>>1)
void ins(int &x,int l,int r,int p){
	if(!x) x=++tot;
	if(l==r){
		tr[x].siz=1;
		tr[x].sum=p;
		tr[x].pf=1ll*p*p;
		return;
	}
	if(p<=mid) ins(tr[x].ls,l,mid,p);
	else ins(tr[x].rs,mid+1,r,p);
	pushup(x);
}

线段树合并

例题T6:

->不考虑修改,好像可以线段树二分(考虑
->修改呢?我们想要快速维护合并子树信息,这就可以线段树合并了。

线段树二分。

void up(int u){
	s[u]=s[ch[u][0]]+s[ch[u][1]];
}
void add(int &u,int l,int r,int v){
	if(!u) u=++node;
	if(l==r){s[u]++;return;}
	int mid=(l+r)>>1;
	if(v<=mid) add(ch[u][0],l,mid,v);
	else add(ch[u][1],mid+1,r,v);
	up(u);
}
int query_kth(int u,int l,int r,int k){
	if(l==r) return l;
	int mid=(l+r)>>1;
	if(k<=s[ch[u][0]]) return query_kth(ch[u][0],l,mid,k);
	return query_kth(ch[u][1],mid+1,r,k-s[ch[u][0]]);
}
void merge(int &a,int b,int l,int r){
	if(!a){a=b;return;}
	if(!b) return;
	if(l==r){s[a]+=s[b];return;}
	int mid=(l+r)>>1;
	merge(ch[a][0],ch[b][0],l,mid);
	merge(ch[a][1],ch[b][1],mid+1,r);
	up(a);
}

T7:

几乎是裸板。
->子树与自己维护信息相同,需要快速合并,且子树信息可以使用线段树
->线段树合并

T8:

->树上路径修改
->树上差分行不行?
->迅速维护子树信息,考虑线段树合并维护计数器咯
or
->树上路径修改
->树链剖分!
->这样就要写树套树了,就根本没有可写性了。
->区间加,差分呗,查的时候查前缀。
->修改总早于查询,最后查的时候从小到大线段树维护。

T9:


->式子挺有特点,推式子呗。
->考虑ai总作为大数贡献,则线段树需要维护个数,权和。

->维护子树信息,线段树合并。

->咋合并?合并时左对左/右对右递归,左对右呢?一块计算式子,over。

T10(**攒着:


![]
(/i/l/?n=24&i=blog/3203093/202407/3203093-20240724214010106-1404433267.png)

T11

此题注意链表模拟deque,当年挂了一车人MLE。
->其他都是线段树合并裸板,2有意思,咋办呢?
->又不能合并,就仿照思想,一块递归就行了,因为个数>1/2。

->老师fxj当年做法:
区间随机选点30次,选不到的概率1/(2^30),基本认为正确。
天才!他说要是他写合并就现在站不到这里了。

标签:总结,over,ch,int,线段,合并,mid,20240724
From: https://www.cnblogs.com/qinyiting/p/18321824

相关文章

  • Java后端开发知识点积累20240724
    1.使用流(Stream)API和lambda表达式来从一个dateBaseList列表中提取所有的title字段,并将这些title值收集到一个新的列表中dateBaseList.stream().map(InspectionManageEntity::getTitle).collect(Collectors.toList());2.@PathVariable注解作用@PathVariable是Spring框架中的......
  • 7.24日进制转换测试总结
    7.24日进制转换测试总结比赛传送门补充知识点:\(1.\)\(X\)进制\(\to\)十进制位值累加法所有进制位的最小单位都是1①写出所有位的位号②基数的位号次方\(\implies\)位权③十进制数字\(=\)位权\(\times\)该位上的数字之和\(Code:\)intto_ten(stringop,intx)......
  • 坐牢第十六天 20240724
    笔记1.二叉树的补充1.1二叉树的创建shu.h​​​​​​​​​​#ifndefSHU_H#defineSHU_H#include<myhead.h>typedefchardatatype;//定义节点类型typedefstructNode{datatypedata;//数据域structNode*L;//左孩子指针structNode*R;//右孩子指......
  • 20240724【省选】模拟
    挂了四分,掉了一名,不过这也说明我的实力就只有这点,根本不够,果然以后还是直接【数据删除】得了。T1其实就是个树剖,每个点维护左右子树的最大深度以及左右子树内的最大答案,然后就…………没了?淦,也是实现问题,应该想到的。然后就是修改边权是改成\(w-a_p\),\(a_i\)是记录下来的\(i......
  • 暑期第三周总结
    本周,我投入了大量的时间在学习和实践大数据技术,总计22小时的学习时间和12小时的编码实践,以及4小时的问题解决时间。通过这段时间的努力,我不仅掌握了Hadoop的配置和管理,还深入了解了大数据的生态和原理。一周的具体学习和生活总结如下:周一:技术学习日活动:投入学习Hive和Spark,这两......
  • Linux常用命令总结
    1、ls,ll显示目录下的内容(listfiles,ls-l长格式)2、chmod+777XXX.XX 赋予读,写,执行权限+777表示赋予所有用户(所有者、所属组和其他用户)读、写和执行该文件或者目录的权限3、top实时进程监控 3.1查看每一个CPU的情况:top的情况下按1         ......
  • 学习pcie—20240724
    因为前一段时间看了xdma的IP核手册,发现只看xdma看不太懂,不清楚pcie的传输的流程,不了解报文格式,所以看看pcie手册,主要关注发送接收时序首先是pcieIP核与xdmaIP核的区别:IntegratedBlockforPCIExpress:7SeriesIntegratedBlockforPCIExpress是最基础的PCIeIP,实现的是......
  • PySimpleGUI总结
    这篇文章主要是对GUI整体来说的,以下将讲述GUI的下载,内容与具体流程。其他详细内容和使用下次具体讲述。下载首先,打开你的pycharm,找到你的终端长这样然后在命令行输入pipinstallPySimpleGUI但是!!!pysimplegui这个东西5.0版本之后不是免费的,只有免费试用30天。因此如果......
  • ETL工具Kettle使用总结
    好久没有发布文章了,就用最近工作常用的kettle工具做为素材写一下随笔,方便以后碰到相同的问题快速解决。kettle的简介我就不介绍了,大家随便百度一下就可以查到,主要作用就是用于从一个或多个数据源中提取数据,对数据进行转换和清洗(这个过程就是ETL),然后加载到目标数据存储中,以......
  • python基础理论小总结
    1.python语言的特性Python是一门解释型语言,简单清晰,开源免费,跨平台,有大量第三方库辅助开发,支持面向对象与自动垃圾回收,方便与其他编程语言相互调用。Python在数据采集、人工智能、WEB后台开发、自动化运维、测试等方向应用广泛。2.解释型语言和编译型语言的区别执行方式不......