Codeforces Round #199 (Div. 2)

算法挑战:组合与路径
本文探讨了两个具体的算法问题,一是如何从给定的数字集合中找出满足特定条件的三元组组合;二是如何在有限制的时间内,通过特定的监视区域从起点到达终点的最优路径。

A: 有n个数 选出n/3个3元组 不能选出n/3输出-1 能的话输出n/3个3元组 每个数最多是7 。3元组a,b,c要求a < b < ca divides bb divides c.   算算其实只有 1 2 4 , 1  2 6 , 1 3 6   这3种  模拟一下 

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define clr(x) memset(x,0,sizeof(x))
int n;
int a[1000];
int t[1000];
int main()
{
    int i,tt;
    while(scanf("%d",&n)!=EOF){
        clr(a);
        for(i=0;i<n;i++)
        {
            scanf("%d",&tt);
            a[tt]++;
        }
        for(i=0;i<=7;i++)
        t[i]=a[i];
        if(a[5]||a[7]){printf("-1\n");continue;}
        else {
            if(a[3]){
                a[1]=a[1]-a[3];
                a[6]=a[6]-a[3];
                a[3]=0;
            }
            if(a[1]<0||a[6]<0){printf("-1\n");continue;}
            if(a[1]!=a[2]||a[1]!=a[4]+a[6]){printf("-1\n");continue;}

        }
        for(i=0;i<t[4];i++){
            printf("1 2 4\n");
        }
        for(i=0;i<t[2]-t[4];i++){
            printf("1 2 6\n");
        }
        for(i=0;i<t[3];i++){
            printf("1 3 6\n");
        }
    }
    return 0;
}
B:n个间谍 信息从l传到r  m组监视 时间 和 id l-id r范围 求怎么传递信息 最短时间 从l到r。  m个组先按时间排个序。模拟一下 

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
#define clr(x) memset(x,0,sizeof(x))
int n,m,l,r;
struct node {
    int t,a,b;
}s[200000];
int cmp(struct node a,struct node b){
    return a.t<b.t;
}
int main()
{
    int flag,i;
    while(scanf("%d%d%d%d",&n,&m,&l,&r)!=EOF){
        int ti=1;
        for(i=0;i<m;i++)
            scanf("%d%d%d",&s[i].t,&s[i].a,&s[i].b);
            sort(s,s+m,cmp);
            int pos=l;
            if(l<r)flag=1;
            if(l>r)flag=0;
            if(l==r){printf("X\n");continue;}
            for(i=0;i<m;i++){
                while(ti<s[i].t){
                    if(flag){printf("R");pos++;if(pos==r){goto loop;}}
                    else {printf("L");pos--;if(pos==r){goto loop;}}
                    ti++;
                }
                if(pos>=s[i].a&&pos<=s[i].b)printf("X");
                else if(flag&&pos+1>=s[i].a&&pos+1<=s[i].b)printf("X");
                else if(flag==0&&pos-1>=s[i].a&&pos-1<=s[i].b)printf("X");
                else {
                    if(flag){printf("R");pos++;if(pos==r)goto loop;}
                    else {printf("L");pos--;if(pos==r)goto loop;}
                }
                ti++;
            }
            while(1){
                if(flag){printf("R");pos++;if(pos==r)break;}
                else {printf("L");pos--;if(pos==r)break;}
                ti++;
            }
        loop: printf("\n");continue;
    }
    return 0;
}

 C被cha 了 = =

【复现】并_离网风光互补制氢合成氨系统容量-调度优化分析(Python代码实现)内容概要:本文围绕“并_离网风光互补制氢合成氨系统容量-调度优化分析”的主题,提供了基于Python代码实现的技术研究与复现方法。通过构建风能、太阳能互补的可再生能源系统模型,结合电解水制氢与合成氨工艺流程,对系统的容量配置与运行调度进行联合优化分析。利用优化算法求解系统在不同运行模式下的最优容量配比和调度策略,兼顾经济性、能效性和稳定性,适用于并网与离网两种场景。文中强调通过代码实践完成系统建模、约束设定、目标函数设计及求解过程,帮助读者掌握综合能源系统优化的核心方法。; 适合人群:具备一定Python编程基础和能源系统背景的研究生、科研人员及工程技术人员,尤其适合从事可再生能源、氢能、综合能源系统优化等相关领域的从业者;; 使用场景及目标:①用于教学与科研中对风光制氢合成氨系统的建模与优化训练;②支撑实际项目中对多能互补系统容量规划与调度策略的设计与验证;③帮助理解优化算法在能源系统中的应用逻辑与实现路径;; 阅读建议:建议读者结合文中提供的Python代码进行逐模块调试与运行,配合文档说明深入理解模型构建细节,重点关注目标函数设计、约束条件设置及求解器调用方式,同时可对比Matlab版本实现以拓宽工具应用视野。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值