Codeforce edu 63 div2 题解报告

水平有限,只打了三题比较简单的模拟题;

a.题目大意:任意倒转两个字符使字典序更小,找到字典序相反的两个,直接倒转就好,复杂度O(n);

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define up(i,a,n) for(int i=a;i<=n;i++)
int main()
{
	int n;
	scanf("%d",&n);
	string s;
	cin>>s;
	for(int i=1;i<s.size();i++)
	{
		if(s[i]<s[i-1])
		{
			printf("YES\n");
			printf("%d %d",i,i+1);
			return 0;
		}
	}
	printf("NO\n");
	return 0;
}

b.题意,给出一个连续的数字,数字长度>13,V和P轮流删除一个数,当删除到是十一位时,停止操作。然后问

V先操作时,最后的数字是否以8开头。是则输出yes否则no;

题解:我是直接模拟了,贪心,V肯定删除从左到右第一个不是8的数,P肯定删除从左到右最先出现的8;

        还有一种做法是统计最后10个数字之前的8的个数,看看操作轮数是否大于8的个数,大于则no;

      当时没想到,就直接模拟了,所以代码比较丑

   

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define up(i,a,n) for(int i=a;i<=n;i++)
int main()
{   int n;
   scanf("%d",&n);
   bool vis[100005];
   memset(vis,true,sizeof(vis));
   vector<int>q;
	string s;
	cin>>s;
	int flag=1;
    int q1=0,q2=0;
    
    for(int i=0;i<(s.size()-11)&&q1<s.size()&&q2<s.size();i++)
    {
    	while(s[q1]=='8')q1++;
        while(s[q2]!='8')q2++;
        if(flag)
        {   vis[q2]=false;
        	q2++;
        	flag=false;
		}
		else
		{   vis[q1]=false;
			q1++;
			flag=true;
		}
	}
	string ss;
	for(int i=0;i<s.size();i++)
	{
		if(vis[i])
		ss+=s[i];
	}
	if(ss[0]!='8')printf("NO\n");
	else printf("YES\n");
	return 0;
}

c

题意:有一个闹钟,给出n个时间,和m个时间间隔。要求你选择一个开始的时间y与一个间隔p;

那么从y开始每隔p个时间间隔就闹钟会响一次,需要在给出的n个时间点上,闹钟都会想;

题解:找出n个时间的差,然后对差取最小公因数g,然后从间隔中判断,是否存在一个间隔p,使得g%p==0;

输出任意答案;

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define up(i,a,n) for(int i=a;i<=n;i++)
const int maxn=3e5+10;
ll arr[maxn];
ll brr[maxn];
ll crr[maxn];
ll gcd(ll a,ll b)
{
	return b?gcd(b,a%b):a;
}
int main()
{
	int n,m;
	scanf("%d %d",&n,&m);
	ll gg;
	int cnt=0;
	up(i,1,n)
	{
		if(i==1)scanf("%I64d",&arr[i]);
		else
		{   scanf("%I64d",&arr[i]);
		    crr[++cnt]=arr[i]-arr[i-1];
		}
	}
	if(cnt==1)
	{
		gg=crr[1];
	}
	else 
	{
	gg=gcd(crr[1],crr[2]);
	up(i,3,cnt)
	{
		gg=gcd(crr[i],gg);
	}
   }
	int flag=0;
	up(i,1,m)
	{
		scanf("%I64d",&brr[i]);
		if(gg%brr[i]==0)
		{
			flag=i;
		}
	}
	if(flag)
	{
		    cout<<"YES"<<endl;
			cout<<arr[1]<<" "<<flag<<endl;
			return 0;
	}
    else printf("NO\n");
 return 0;
}

d题

题意,给出一个n,m;与长度为n的数组

可以进行一个操作,就是对于长度为n的数组的连续子序列可以乘上m。然后再求,最大子序列和;

这题用DP的思想,考虑当前位置状态,一共有三种;

1.处于处理区间前

2.处于处理区间中

3.处于处理区间外

所以需要3个dp数组,dp[i][3]//i表示从1开始的区间到i的最大子序列和

然后可以得出下面的状态方程

dp[i][0]=max(dp[i-1][0],0ll)+a[i];//0状态表示可以开始新的处理
dp[i][1]=max(dp[i-1][0],max(dp[i-1][1],0))+a[i]*1ll*m//1状态表示处于处理的区间
dp[i][2]=max(max(dp[i-1][0],d[i-1][2]),max(dp[i-1][1],0ll))+a[i];状态表示处理完毕,即后面不可处理

注意的就是,当当前区间的最大子序列和小于0的时候,我们可以直接取0,以及在max中,数据类型必须相同;

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define up(i,a,n) for(int i=a;i<=n;i++)
const int maxn=3e5+10;
ll dp[maxn][3];//i表示从1开始的区间到i的最大字段和
ll arr[maxn];
int main()
{
	int n,m;
	scanf("%d %d",&n,&m);
	up(i,1,n)cin>>arr[i];
	ll ans=0;
	up(i,1,n)
	{
		dp[i][0]=max(dp[i-1][0],0ll)+arr[i];//0状态表示可以开始新的操作
		dp[i][1]=max(max(dp[i-1][1],0ll),dp[i-1][0])+arr[i]*m;//1状态表示处于倒转的区间
		dp[i][2]=max(max(dp[i-1][0],0ll),max(dp[i-1][1],dp[i-1][2]))+arr[i];//2状态表示倒转完毕,即后面不可倒转
		ans=max(ans,dp[i][0]);
		ans=max(ans,dp[i][1]);
		ans=max(ans,dp[i][2]);
	}
	cout<<ans;
	return 0;
}

 

后面的···不会了,努力补题ing!!!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
代码下载:完整代码,可直接运行 ;运行版本:2022a或2019b或2014a;若运行有问题,可私信博主; **仿真咨询 1 各类智能优化算法改进及应用** 生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化 **2 机器学习和深度学习方面** 卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断 **3 图像处理方面** 图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知 **4 路径规划方面** 旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化 **5 无人机应用方面** 无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配 **6 无线传感器定位及布局方面** 传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化 **7 信号处理方面** 信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化 **8 电力系统方面** 微电网优化、无功优化、配电网重构、储能配置 **9 元胞自动机方面** 交通流 人群疏散 病毒扩散 晶体生长 **10 雷达方面** 卡尔曼滤波跟踪、航迹关联、航迹融合

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值