首页 > 其他分享 >2024.7 总结

2024.7 总结

时间:2024-07-05 21:58:01浏览次数:5  
标签:总结 lc 2024.7 int unsigned long v1 v2

数据结构

【CF380C】 Sereja and Brackets

题目描述

  • 本题中「合法括号串」的定义如下:
    • 空串是「合法括号串」。
    • 若 \(s\) 是「合法括号串」,则 \((s)\) 是「合法括号串」。
    • 若 \(s,t\) 是「合法括号串」,则 \(st\) 是「合法括号串」。
  • 有一个括号串 \(s\)。\(m\) 次操作。操作有一种:
    1. l r:求字符串 \(t=s_ls_{l+1}\cdots s_r\) 的所有 子序列 中,长度最长的「合法括号串」,输出长度即可。
  • \(1\le |s|\le 10^6\),\(1\le m\le 10^5\)。

解题思路

首先,将 \((,)\) 转化成 \(+1,-1\) ,就是找一个子序列,使得所有的前缀和 \(\ge 0\) ,最后一个前缀和为 \(0\) 。
我们考虑使用线段树,维护没能匹配的 \((\) 数量与没能匹配的 \()\) 数量。
每次两个区间合并时,就是将两区间没匹配的 \(()\) 个配对了进行计算即可。
由于我们默认没匹配的 \((\) 尽量靠前,没匹配的 \()\) 尽量靠后,不会出现匹配不了的问题。
时间复杂度 \(O(nlogn)\) 。

Code

#include<bits/stdc++.h>
using namespace std;
struct datay
{
	int v1,v2;
}f[4000005];
string a;
int n,m; 
void build(int x,int l,int r)
{
	if(l==r)
	{
		if(a[l]=='(')f[x].v1=1,f[x].v2=0;
		else f[x].v1=0,f[x].v2=1;
		return;
	}
	int lc=(x<<1),rc=(x<<1)|1,mid=(l+r)>>1;
	build(lc,l,mid),build(rc,mid+1,r);
	f[x].v1=f[lc].v1+f[rc].v1-min(f[lc].v1,f[rc].v2);
	f[x].v2=f[lc].v2+f[rc].v2-min(f[lc].v1,f[rc].v2);
	return;
}
datay query(int x,int l,int r,int ql,int qr)
{
	if(ql<=l&&r<=qr)return f[x];
	int mid=(l+r)>>1,lc=(x<<1),rc=(x<<1)|1;
	if(qr<=mid)return query(lc,l,mid,ql,qr);
	if(ql>mid)return query(rc,mid+1,r,ql,qr);
	datay z,q=query(lc,l,mid,ql,qr),w=query(rc,mid+1,r,ql,qr);
	z.v1=q.v1+w.v1-min(q.v1,w.v2);
	z.v2=q.v2+w.v2-min(q.v1,w.v2);
	return z;
}
int main()
{
	int x,y;datay z;
	cin>>a,n=a.size();
	a=' '+a,build(1,1,n);
	scanf("%d",&m);
	for(int i=1;i<=m;i++)
	{
		scanf("%d%d",&x,&y),z=query(1,1,n,x,y);
		printf("%d\n",y-x+1-z.v1-z.v2);
	}

  return 0;
}

【梦熊】 对称之美

题目描述

给出 \(n,k\) \((1 \le n,k \le 10^{14})\) ,求 \(\sum_{i=0}^{k-1} C_{2i}^i n^i (mod\) \(k)\) 。

解题思路

首先,枚举可得,\(k=2\) 时答案为 \(1\) 。

\[C_{2n}^n=\frac{(2n)!}{n! \times n!} =2^n \times \frac{1 \times 3 \times ... \times (2n-1)}{n!} = (-2)^n \times \frac{\prod_{i=0}^{n-1}(k-1-2i)}{n!}=(-4)^n \times \frac{\prod_{i=0}^{n-1}(\frac{k-1}{2}-i)}{n!} \]

带回原式并化简,即为:

\[\sum_{i=0}^{k-1} (-4n)^i \times C_{\frac{k-1}{2}}^{i}=(1-4n)^{\frac{k-1}{2}} \]

结合二项式定理,由于 \(k\) 较大,需用龟速乘,结合快速幂 \(O(log^2n)\) 解决。

Code

#include<bits/stdc++.h>
using namespace std;
unsigned long long mod;
unsigned long long mul(unsigned long long x,unsigned long long y)
{
	unsigned long long h=0;
	while(y>0)
	{
		if(y&1)h=(h+x)%mod;
		x=(x+x)%mod,y/=2;
	}
	return h;
}
unsigned long long poww(unsigned long long x,unsigned long long y)
{
	x=(x+mod)%mod;
	unsigned long long h=1;
	while(y>0)
	{
		if(y&1)h=mul(h,x);
		x=mul(x,x),y/=2;
	}
	return h;
}
void poi()
{
	unsigned long long x,y;
	cin>>x>>y;
	if(x==1)
	{
		printf("1\n");
		return;
	}
	mod=x;
	cout<<(poww((4*mod+1-4*y)%mod,(mod-1)/2)+mod)%mod<<'\n';
	return;
}
int main()
{
	unsigned long long qwe;
	cin>>qwe;
	for(int i=1;i<=qwe;i++)poi(); 
  return 0;
}

标签:总结,lc,2024.7,int,unsigned,long,v1,v2
From: https://www.cnblogs.com/dijah/p/18286677

相关文章

  • 2024.7.5
    ###2024.7.5【向之所欣,俯仰之间,已为陈迹。】###Thursday五月三十---#组合#数学!~~可能公式比较多~~##二项式!$$\begin{pmatrix}n\\m\end{pmatrix}=\begin{pmatrix}n-1\\m-1\end{pmatrix}+\begin{pmatrix}n-1\\m\end{pmatrix}$$$$\begin{pmatrix}n\\m\e......
  • conda 源设置方法总结
    conda源设置有2种方法。1是直接在命令行设置。2是使用配置文件.condarc中写入配置频道。命令行设置condaconfig--addchannelshttps://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/freecondaconfig--addchannelshttps://mirrors.tuna.tsinghua.edu.cn/anaconda/......
  • 7.5日BOOTLOAD总结(2)
    今日研究一天SC的BOOTLOAD,首先是它的BOOT程序,我们只改了一点点参数直接拿过来用,然后把自己的APP程序中的串口函数改写了一下,它里面给了指令协议,直接套用,整理了一上午最后发现在APP程序中进不去BOOT程序,明明已经用串口助手给他发了命令,就是进不去,慢慢排查,发现接受不到帧头命令,后来......
  • 周总结2024/7/5
    大二学生加入软件工程专业的第一个预习周:1.本人规划了每天至少需要学习4个小时,其中呢包括了两个小时的java语言的基本语法和一些语句,还有两个小时的MYSQL的学习;2.通过第一周的学习,我发现java语言和大一所学习的c,c++有所不同,java语言在学习中有一个最大的特点是跨平台性(虽然现在......
  • 20240705比赛总结
    T1酸碱度中和https://gxyzoj.com/d/hzoj/p/3731因为是要将一些数变为一个值,所以差相对小的一些数修改的会更少,所以可以先将原数组排序因为当x可以时,x+1必然可以,所以考虑二分接下来考虑到因为上下变动的都至多为m,所以开头和结尾的差必然不超过2m它就可以看作用一些长度为2m的......
  • 蓝牙音箱App设计总结
    前言最近做了一个关于带Soundbar的智能电视的蓝牙项目,就是将电视Soundbar当作蓝牙音箱,将手机、电脑等设备的声音传输到电视,通过电视Soundbar播放声音。做这个项目的时候遇到了各种大大小小的问题,好在都解决了。本篇文章总结了在设计蓝牙相关的项目时需要了解的小知识以及要考......
  • 2024.7.5 鲜花
    空白とカタルシス——TOGENASHITOGEARI。震惊,K某He强推竟然是这首歌,三天重复上百遍……どれだけ手に入れてもどれだけ自分のものにしてもしてもしても追いつけないな高望みしすぎなんて腐ったような言葉誰しも誰よりも優れて欲しくはないんだよ理由はただ一つ打ち砕......
  • 20240705总结(欧拉回路,构造)
    A-FairShareCF1634EFairShare题解:用二分图做的。首先如果一种颜色出现奇数次一定无解。否则对于一种颜色的点分组,每组两个之间连边,保证每种颜色平分。然后把每一个数组分成n[i]/2组,每组两个之间连边,保证每一个数组平分。这样一定连出的是二分图,黑白染色B-NecklaceCF......
  • UML活动图(最新最全总结分享)上篇
    原谅我的私心今天没有按照UML结构去更新视图,出于最近接触很多的活动图仿真。想趁着这股热乎劲优先把活动图给整理归纳了;本次活动图并非个人妄谈,均来源于官网文档或者各种UML书籍中总结,本次案例讲解使用工具是EA,如若需要安装包欢迎评论留言我会一一发送。引言:活动图是UML中......
  • C++ 类型转换注意事项总结
    在C++中,类型转换是编程过程中不可避免的一部分,但不当的类型转换可能会导致程序错误、数据损坏甚至程序崩溃。因此,了解类型转换的注意事项至关重要。以下是C++类型转换时需要注意的几个方面:1.区分隐式类型转换和显式类型转换隐式类型转换:由编译器自动完成,无需程序员干预。......