Codeforces Round 888 (Div. 3) Finished

给小猫咪顺毛 2023-12-31 18:03:56

这是我参加朝闻道知识分享大赛的第28篇文章.

Problem - D - Codeforces

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<int,int> PII;

#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define _cf() int _;cin>>_;while(_--)

const int N = 2e6;
const int inf = 2147483647;

void Solve()
{
	int n;
	cin>>n;
	vector<ll> a(n);
	vector<int> vis(n+1);
	for(int i=1;i<n;i++) cin>>a[i];
	ll res=(ll)n*(n+1)/2;
	int op=0;// 超过的
	for(int i=1;i<n;i++)
	{
		ll gap=a[i]-a[i-1];
		if(gap>2*n-1){
			cout<<"NO"<<endl;
			return;
		}
		else if(gap>n) op+=gap;
		else vis[gap]++;
	}
	if(a[n-1]<res){
		int cnt=0,tmp=0;
		for(int i=1;i<=n;i++){
			if(vis[i]==0) cnt++,tmp+=i;
		}
		if(cnt==1&&tmp==res-a[n-1]) cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
	else if(a[n-1]==res){
		if(op>0){
			int tmp=0,cnt=0;
			for(int i=1;i<=n;i++){
				if(vis[i]>1){
					cout<<"NO"<<endl;
					return;
				}
				if(!vis[i]) tmp+=i,cnt++;
			}
			if(cnt==2&&tmp==op) cout<<"YES"<<endl;
			else cout<<"NO"<<endl;
		}
		else{
			int tmp1=0,cnt1=0;
			int tmp2=0,cnt2=0;
			for(int i=1;i<=n;i++){
				if(!vis[i]) tmp1+=i,cnt1++; // 空位
				if(vis[i]==2) tmp2+=i,cnt2++; // 重复
				// printf("vis[%d]=%d\n",i,vis[i]);
			}
			if(cnt1==2&&cnt2==1&&tmp1==tmp2) cout<<"YES"<<endl;
			// else printf("%d %d %d %d\n",cnt1,cnt2,tmp1,tmp2);
			else cout<<"NO"<<endl;
		}
	}
	else cout<<"NO"<<endl;
}

int main()
{
	IOS;
	int t;cin>>t;
	while(t--) Solve();
}

Problem - E - Codeforces

典型的记忆化搜索

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<int,int> PII;

#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define _cf() int _;cin>>_;while(_--)

const int N = 2e5+10;
const int inf = 2147483647;
vector<int> v[N];
ll a[N];
int vis[N];
ll dfs(int u)
{
	if(vis[u]) return a[u];
	ll res=0;
	if(v[u].size()==0) res=a[u];
	for(auto to:v[u]){
		res+=dfs(to);
	}
	vis[u]=1;
	return a[u]=min(a[u],res);
	
}
void Solve()
{
	int n,k;
	cin>>n>>k;
	int x;
	for(int i=1;i<=n;i++) cin>>a[i],v[i].clear(),vis[i]=0;
	for(int i=1;i<=k;i++) cin>>x,a[x]=0,vis[x]=1;
	
	for(int i=1;i<=n;i++)
	{
		int m;cin>>m;
		while(m--){
			cin>>x;
			v[i].push_back(x);
		}
	}
	// cout<<" -------- ";
	for(int i=1;i<=n;i++) cout<<dfs(i)<<" ";
	cout<<endl;
}

int main()
{
	IOS;
	_cf()
	Solve();
}

Problem - F - Codeforces

看别人直接排序过的,我字典树调了好久,最后还是过了,虽然是看别人代码发现怎么错的(

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<int,int> PII;

#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define _cf() int _;cin>>_;while(_--)

const int N = 2e5+10;
const int inf = 2147483647;
int ch[N*31][2],num[N*31],cnt[N*31];//字符串长度 31 乘上字符串个数 N ,避免RE
int idx;
//插入
void _insert(int x,int pos)
{
    int p=0;
    for(int i=31;i>=0;i--)
    {
		int b=(x>>i)&1;//将 x 从最高位依次取出一位
		if(!ch[p][b]) ch[p][b]=++idx;//标记该节点
		p=ch[p][b];//更新指向节点
		cnt[p]++;
    }
    num[p]=pos;//最后记录储存的数
}
void del(int x)
{
	int p=0;
    for(int i=31;i>=0;i--)
    {
		int b=(x>>i)&1;//将 x 从最高位依次取出一位
		p=ch[p][b];//更新指向节点
		cnt[p]--;
    }
}
//查询
int _find(int x)
{
    int p=0;
    for(int i=31;i>=0;i--)
    {
		int b=(x>>i)&1;
		if(ch[p][b]&&cnt[ch[p][b]]>0) p=ch[p][b];
		else p=ch[p][b^1];
    }
	return num[p];
}
int ck(int x)
{
	int cnt=0;
	while(x)
	{
		if(x&1) cnt++;
		x>>=1;
	}
	return cnt;
}
void Solve()
{
	int n,k;
	cin>>n>>k;
	vector<int> a(n+1);
	for(int i=0;i<=n*30;i++) cnt[i]=ch[i][0]=ch[i][1]=num[i]=0;
	idx=0;
	for(int i=1;i<=n;i++) cin>>a[i],_insert(a[i],i);
	int minn=inf,minx=inf;
	int x,y;
	for(int i=1;i<=n;i++)
	{
		del(a[i]);
		int pos=_find(a[i]);
		int op=a[pos]^a[i];
		if(minx>op) minx=op,x=i,y=pos;
		// cout<<pos<<" "<<i<<endl;
		_insert(a[i],i);
	}
	// cout<<"---------- ";
	int res=pow(2,k)-1;
	res=res^(a[x]&a[y]);
	cout<<x<<" "<<y<<" "<<res<<endl;
}

int main()
{
	IOS;
	_cf()
	Solve();
}

Problem - G - Codeforces

还没补

...全文
203 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:LTK8319是一款单通道H桥有刷直流电机驱动器,工作电压范围为2.5V至12V,支持最高3.9A的峰值电流和2.5A的平均电流驱动能力,适用于小家电、玩具、电子锁、机器人等小型电动设备。该芯片通过两个逻辑输入(INA和INB)控制电机的正转、反转、停止与刹车,并支持PWM调速控制。集成欠压锁定(UVLO)、过温保护(TSD)及自动故障恢复功能,确保系统安全可靠运行。当INA和INB持续为低电平时,芯片进入低功耗休眠模式,显著降低静态功耗。采用ESOP-8封装,符合环保无铅标准。; 适合人群:电子工程师、嵌入式系统开发者、电机控制技术人员,以及从事小型机电产品研发的设计人员;具备基本电路知识和电机控制经验者更佳。; 使用场景及目标:①用于驱动小型有刷直流电机或步进电机的一个绕组,实现精确的方向与速度控制;②适用于电池供电设备中对功耗敏感的应用,利用休眠模式延长续航时间;③在电机启停频繁、负载波动大的场合,发挥其电流控制与保护机制优势,提升系统稳定性。; 阅读建议:此文档提供了详细的电气特性、功能逻辑表、保护机制与时序参数,建议结合典型应用电路进行硬件设计,并重点关注电源去耦电容选型、散热布局及PWM频率设置(不超过100kHz),以确保系统可靠运行。
内容概要:本文研究了一种基于遗传算法(GA)与粒子群优化算法(PSO)融合的无人机三维路径规划方法,旨在解决复杂环境中无人机避障与路径优化的问题。通过构建三维空间环境模型,提出一种结合GA全局搜索能力强与PSO收敛速度快优势的混合优化策略,并利用Matlab平台完成算法仿真与路径可视化。研究不仅实现了无人机在存在多个障碍物场景下的安全、高效飞行路径规划,还对GA与PSO两种算法在路径长度、计算耗时、收敛稳定性等方面进行了对比分析,评估其性能差异,为实际应用中算法选型提供依据。; 适合人群:具备一定算法设计基础和Matlab编程能力的科研人员、自动化与人工智能方向的研究生,以及从事无人机导航、智能控制等相关领域的工程技术人员。; 使用场景及目标:①应用于城市密集建筑区、山地森林等复杂地形中的无人机自主巡检与应急救援任务;②为智能交通、地理测绘、灾害监测等需要自主路径决策的无人系统提供算法支持与仿真验证;③通过对比不同智能优化算法的表现,辅助研究人员在特定应用场景下选择最优路径规划方案。; 阅读建议:建议读者结合提供的Matlab代码进行仿真实验,调整种群规模、迭代次数、障碍物分布等参数,深入理解算法运行机制与性能表现,并可进一步拓展至动态环境更新、多无人机协同避障等更复杂的研究方向。

1,041

社区成员

发帖
与我相关
我的任务
社区描述
中南民族大学CSDN高校俱乐部聚焦校内IT技术爱好者,通过构建系统化的内容和运营体系,旨在将中南民族大学CSDN社区变成校内最大的技术交流沟通平台。
经验分享 高校 湖北省·武汉市
社区管理员
  • c_university_1575
  • WhiteGlint666
  • wzh_scuec
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎各位加入中南民族大学&&CSDN高校俱乐部社区(官方QQ群:908527260),成为CSDN高校俱乐部的成员具体步骤(必填),填写如下表单,表单链接如下:
人才储备数据库及线上礼品发放表单邀请人吴钟昊:https://ddz.red/CSDN
CSDN高校俱乐部是给大家提供技术分享交流的平台,会不定期的给大家分享CSDN方面的相关比赛以及活动或实习报名链接,希望大家一起努力加油!共同建设中南民族大学良好的技术知识分享社区。

注意:

1.社区成员不得在社区发布违反社会主义核心价值观的言论。

2.社区成员不得在社区内谈及政治敏感话题。

3.该社区为知识分享的平台,可以相互探讨、交流学习经验,尽量不在社区谈论其他无关话题。

试试用AI创作助手写篇文章吧