Codeforces Round #206 (Div. 2)

本文解析了三道Vasya系列算法题,包括数字根、公共交通最优解及机器人抓取策略。通过数学推导与逻辑分析,提供了解题思路与C++实现代码。

A:Vasya and Digital Root

思路:一个K位的数的每一位的和最大也就是K*9,遍历1~K*9,若有一个数满足dr(sum) = d,则说明K位的数中有满足条件的数,且和为sum,则任意一个和为sum的K位数都满足条件,任意输出一个即可。

#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <map>
#include <set>
#include <vector>
#include <cmath>
#include <stack>
#include <queue>
#include <cstdlib>
#include <algorithm>
using namespace std;
//typedef __int64 int64;
typedef long long ll;
#define M 100005
#define N 1000005
#define max_inf 0x7f7f7f7f
#define min_inf 0x80808080
#define mod 1000000007

int ans[1005];

int Cal(int k)
{
    int ret = k;
    while (ret >= 10)
    {
        while (k)
        {
            ret = 0;
            ret += k%10;
            k /= 10;
        }
        k = ret;
    }
    return ret;
}

int main()
{
    int k , d;
    scanf("%d%d",&k,&d);
    if (d == 0)
    {
        if (k == 1)printf("0\n");
        else printf("No solution\n");
        return 0;
    }
    int i , n = k*9;
    for (i = 1 ; i <= n ; i++)
    {
        int dr = Cal(i);
        if (dr == d)
        {
            while (dr > 9)printf("9"),dr-=9,k--;
            if (k > 0)printf("%d",dr),k--;
            int j;
            for (j = 0 ; j < k ; j++)printf("0");
            printf("\n");
            return 0;
        }
    }
    printf("No solution\n");
    return 0;
}


B:Vasya and Public Transport

思路:可能的结果为:买一张所有都能坐的票花c4,或者 bus和trolley分别去买,分别买就又分为(对bus来说)买一张能坐全部bus的票花c3,或者对于每一个bus单独买票,对一个bus单独买又分为买多张单程票和买一张能一直坐的票。对trolley分析是一样的,答案就是所有这些可能结果的最小值。


#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <map>
#include <set>
#include <vector>
#include <cmath>
#include <stack>
#include <queue>
#include <cstdlib>
#include <algorithm>
using namespace std;
//typedef __int64 int64;
typedef long long ll;
#define M 100005
#define N 1000005
#define max_inf 0x7f7f7f7f
#define min_inf 0x80808080
#define mod 1000000007


int main()
{
    int c1,c2,c3,c4;
    int n,m;
    int a[1005],b[1005];
    scanf("%d%d%d%d",&c1,&c2,&c3,&c4);
    scanf("%d%d",&n,&m);
    int i , az = 0 , bz = 0;
    for (i = 0 ; i < n ; i++)
    {
        scanf("%d",a+i);
        if (a[i] != 0)az = 1;
    }
    for (i = 0 ; i < m ; i++)
    {
        scanf("%d",b+i);
        if (b[i]!=0)bz = 1;
    }
    int  ret1 = 0 , ret2 = 0;
    for (i = 0 ; i  < n ; i++)ret1 += min(a[i]*c1,c2);
    for (i = 0 ; i  < m ; i++)ret2 += min(b[i]*c1,c2);
    ret1 = min(ret1,c3);
    ret2 = min(ret2,c3);
    printf("%d\n",min(c4,ret1+ret2));
    return 0;
}

C: Vasya and Robot

思路:逆向抓取,若只有一个物品,机器人用左手和右手抓取分别为lsum和rsum,然后在这个物品的左右两边分别放一个物品,则对这两个物品抓取分别分为用左手或者用右手:

1.先最左边用左手抓,最右边也用左手,则所有的物品都必须用左手抓。

2.先最左边用左手抓,最右边用右手,则答案为w[z]*l+w[y]*r+min(lsum,rsum+qr)。z,y为最左和最右

3.先最右边用右手抓,最左边也用右手,则所有的物品都必须用右手手抓。

4.先最右边用右手抓,最左边用左手,则答案为w[y]*r+w[z]*l+min(lsum+ql,rsum)。

物品总个数为奇数初始为一个物品,为偶数初始为2个物品、

#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <map>
#include <set>
#include <vector>
#include <cmath>
#include <stack>
#include <queue>
#include <cstdlib>
#include <algorithm>
using namespace std;
//typedef __int64 int64;
typedef long long ll;
#define M 100005
#define N 1000005
#define max_inf 0x7f7f7f7f
#define min_inf 0x80808080
#define mod 1000000007

int n , l , r , ql , qr;
int w[M] , sum[M];

int main()
{
	int i;
	scanf("%d%d%d%d%d",&n,&l,&r,&ql,&qr);
	for (sum[0] = 0 , i = 1 ; i <= n ; i++)scanf("%d",w+i),sum[i]=sum[i-1]+w[i];
	int z , y , lsum = 0 , rsum = 0;
	if (n&1)
	{
		z = y = n/2+1;
		lsum = w[z]*l;
		rsum = w[y]*r;
	}
	else
	{
		z = n/2;
		y = n/2+1;
		lsum = min(w[z]*l+w[z+1]*l+ql,w[z]*l+w[z+1]*r);
		rsum = min(w[y]*r+w[y-1]*r+qr,w[y]*r+w[y-1]*l);
	}
	z--,y++;
	while (z >= 1)
	{
		int lt , rt;
		int temp = (sum[y]-sum[z-1]);
		lt = min(temp*l+ql*(y-z),w[z]*l+w[y]*r+min(lsum,rsum+qr));
		rt = min(temp*r+qr*(y-z),w[y]*r+w[z]*l+min(lsum+ql,rsum));
		lsum = lt;
		rsum = rt;
		z--,y++;
	}
	printf("%d\n",min(lsum,rsum));
	return 0;
}	

基于径向基函数神经网络RBFNN的自适应滑模控制学习(Matlab代码实现)内容概要:本文介绍了基于径向基函数神经网络(RBFNN)的自适应滑模控制方法,并提供了相应的Matlab代码实现。该方法结合了RBF神经网络的非线性逼近能力和滑模控制的强鲁棒性,用于解决复杂系统的控制问题,尤其适用于存在不确定性和外部干扰的动态系统。文中详细阐述了控制算法的设计思路、RBFNN的结构与权重更新机制、滑模面的构建以及自适应律的推导过程,并通过Matlab仿真验证了所提方法的有效性和稳定性。此外,文档还列举了大量相关的科研方向和技术应用,涵盖智能优化算法、机器学习、电力系统、路径规划等多个领域,展示了该技术的广泛应用前景。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的研究生、科研人员及工程技术人员,特别是从事智能控制、非线性系统控制及相关领域的研究人员; 使用场景及目标:①学习和掌握RBF神经网络与滑模控制相结合的自适应控制策略设计方法;②应用于电机控制、机器人轨迹跟踪、电力电子系统等存在模型不确定性或外界扰动的实际控制系统中,提升控制精度与鲁棒性; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,深入理解算法实现细节,同时可参考文中提及的相关技术方向拓展研究思路,注重理论分析与仿真验证相结合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值