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;
}	

Matlab基于粒子群优化算法及鲁棒MPPT控制器提高光伏并网的效率内容概要:本文围绕Matlab在电力系统优化与控制领域的应用展开,重点介绍了基于粒子群优化算法(PSO)和鲁棒MPPT控制器提升光伏并网效率的技术方案。通过Matlab代码实现,结合智能优化算法与先进控制策略,对光伏发电系统的最大功率点跟踪进行优化,有效提高了系统在不同光照条件下的能量转换效率和并网稳定性。同时,文档还涵盖了多种电力系统应用场景,如微电网调度、储能配置、鲁棒控制等,展示了Matlab在科研复现与工程仿真中的强大能力。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的高校研究生、科研人员及从事新能源系统开发的工程师;尤其适合关注光伏并网技术、智能优化算法应用与MPPT控制策略研究的专业人士。; 使用场景及目标:①利用粒子群算法优化光伏系统MPPT控制器参数,提升动态响应速度与稳态精度;②研究鲁棒控制策略在光伏并网系统中的抗干扰能力;③复现已发表的高水平论文(如EI、SCI)中的仿真案例,支撑科研项目与学术写作。; 阅读建议:建议结合文中提供的Matlab代码与Simulink模型进行实践操作,重点关注算法实现细节与系统参数设置,同时参考链接中的完整资源下载以获取更多复现实例,加深对优化算法与控制系统设计的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值