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

还没补

...全文
220 回复 打赏 收藏 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
源码直接下载地址: https://pan.quark.cn/s/387d7c8f6289 在使用IE浏览器的过程中,偶尔会出现重置为默认配置操作未能顺利完成的现象。这种情况的发生可能源于多种因素,包括注册表项出现偏差、浏览器附加组件之间存在不兼容、操作系统授权设置不当或受到恶意程序影响等。针对这一挑战,我们可以通过一系列系统性的方法来逐一诊断和纠正。首先需要验证当前用户是否具备管理员级别的操作权限。在执行重置配置的操作时,必须确保IE浏览器是以管理员身份启动的。具体操作方式为,使用鼠标右键单击IE程序图标,并从弹出的菜单中选择“以管理员身份运行”这一选项。其次,应当检查是否存在恶意软件。恶意程序有时会非法修改浏览器的配置信息,从而阻碍重置过程的正常进行。用户可以借助Windows系统自带的Microsoft Safety Scanner进行检测,或者选择安装并使用第三方安全防护软件执行全面的系统扫描。紧接着,需要对浏览器的缓存数据以及Cookies文件进行清理。在IE浏览器界面中,通过访问“工具”菜单并选择“Internet选项”,然后在弹出的设置界面中,切换至“常规”标签页,并执行清除浏览历史记录的操作,此过程应包含Cookies和临时互联网文件。倘若上述步骤均未能解决问题,那么可以考虑禁用或移除那些可能引发冲突的浏览器附加组件。相关操作需要在“工具”菜单下找到并打开“管理加载项”,对可疑的插件进行禁用处理,并在浏览器重新启动后再次尝试执行重置操作。再者,修复IE浏览器相关的注册表配置也是至关重要的环节。注册表编辑器是一个功能强大的系统工具,任何不当的操作都可能导致严重的系统问题,因此在进行修改前必须创建系统还原点作为安全备份。用户可以通过按下“Win+R”组合...
内容概要:本文详细介绍了光伏储能虚拟同步发电机(VSG)并网仿真模型的Simulink实现方法,系统研究了光伏发电与储能系统融合VSG技术并入电网的动态特性与控制策略。通过构建完整的VSG控制模块,模拟其在并网过程中的虚拟惯性响应、频率调节能力和有功无功功率支撑特性,验证了该系统在增强电网稳定性、提升新能源并网适应性方面的有效性。模型全面涵盖光伏出力特性、储能系统充放电管理、VSG有功-无功解耦控制、下垂控制机制以及并网点动态响应等关键环节,并通过多种工况下的仿真分析,评估系统在不同运行条件下的动态性能与鲁棒性。; 适合人群:具备电力系统、新能源发电、自动控制等相关专业背景,熟悉Matlab/Simulink仿真环境,从事新能源并网、微电网控制或电力电子系统研究的科研人员、工程技术人员及研究生。; 使用场景及目标:①深入理解光伏储能系统如何通过VSG技术模拟同步发电机的惯性和阻尼特性以支持电网稳定;②掌握虚拟惯量控制、下垂控制等VSG核心控制策略在Simulink中的建模、参数设计与实现方法;③为新型电力系统中新能源并网的动态仿真、稳定性分析及控制策略优化提供可靠的模型基础和技术参考。; 阅读建议:建议结合所提供的仿真模型进行逐步操作与参数调试,重点关注VSG控制环路的结构设计、控制器参数整定及其对系统动态性能的影响,同时可将该模型拓展应用于多机并联、微电网孤岛/并网切换、多能源协同控制等更复杂的系统场景中进行进阶研究。

1,043

社区成员

发帖
与我相关
我的任务
社区描述
中南民族大学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创作助手写篇文章吧