Colored Rectangles 动态规划

本文介绍了一种使用三维动态规划解决特定问题的方法,该问题涉及通过组合不同类型的木棍来创建矩形,目标是使所有矩形的总面积达到最大。文章详细解释了如何定义状态转移方程,并提供了完整的代码实现。

题意:三种木棍,分别有 R对 G对 B对两种不同木棍对可以弄移一个矩形,要求矩形面积总和最大

思路:看题面,这种几个变量互相影响并且最终目标固定的题目感觉就要用dp,而且数据比较小应该就是能用三维dp,虽然我比赛时没做出来,但是我想的挺明白的,状态转移就是dp[i][j][k]=max( dp[i-1][j-1][k]+R[i]*G[i],dp[i][j][k] )---------------------另外两个同理,每次选一个矩形

#include<bits/stdc++.h>
using namespace std;
#pragma GCC optimize(2)
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const int N=205;
ll R,G,B;
ll r[N],g[N],b[N];
ll dp[N][N][N];


int main()
{
    int i,j,k;
    cin>>R>>G>>B;
    for(i=1;i<=R;++i) cin>>r[i];
    for(i=1;i<=G;++i) cin>>g[i];
    for(i=1;i<=B;++i) cin>>b[i];
    r[0]=g[0]=b[0]=-1;
    sort(r+1,r+1+R);
    sort(g+1,g+1+G);
    sort(b+1,b+1+B);
    ll ans=0;
    ll x,y,z;
    for(i=0;i<=R;i++){
        for(j=0;j<=G;j++){
            for(k=0;k<=B;k++){
                if(i>0&&j>0) x=dp[i-1][j-1][k]+r[i]*g[j];
                if(j>0&&k>0) y=dp[i][j-1][k-1]+g[j]*b[k];
                if(i>0&&k>0) z=dp[i-1][j][k-1]+r[i]*b[k];
                dp[i][j][k]=max(max(x,y),z);
            }
        }
    }
    cout<<dp[R][G][B]<<"\n";
    return 0;
}

 

* This example program shows how to find pads in an image and how to * determine their position, rotation, and size robustly and accurately using * fit_rectangle2_contour_xld. dev_update_pc ('off') dev_update_window ('off') dev_update_var ('off') read_image (Image, 'die_pads') dev_close_window () get_image_size (Image, Width, Height) dev_open_window (0, 0, Width * 2, Height * 2, 'black', WindowHandle) dev_set_part (0, 0, Height - 1, Width - 1) * Find the pads in the image using blob analysis. fast_threshold (Image, Region, 180, 255, 20) connection (Region, ConnectedRegions) select_shape (ConnectedRegions, SelectedRegions, ['area', 'anisometry'], 'and', [200, 1], [1200, 2]) * Construct a ROI for subpixel-accurate edge detection. fill_up (SelectedRegions, RegionFillUp) shape_trans (RegionFillUp, RegionTrans, 'convex') boundary (RegionTrans, RegionBorder, 'inner') dilation_circle (RegionBorder, RegionDilation, 2.5) union1 (RegionDilation, RegionUnion) * Perform the subpixel-accurate edge detection. reduce_domain (Image, RegionUnion, ImageReduced) edges_sub_pix (ImageReduced, Edges, 'sobel_fast', 0.5, 20, 40) * Select the edge fragments that belong to the pads. select_shape_xld (Edges, SelectedContours, 'contlength', 'and', 10, 200) * Merge adjacent edge fragments to obtain one contour per pad. union_adjacent_contours_xld (SelectedContours, UnionContours, 2, 1, 'attr_keep') * Fit rectangles robustly to the pads' edges. fit_rectangle2_contour_xld (UnionContours, 'tukey', -1, 0, 0, 3, 2, Row, Column, Phi, Length1, Length2, PointOrder) * Generate rectangles from the fitting result for visualization purposes. gen_rectangle2_contour_xld (Rectangle, Row, Column, Phi, Length1, Length2) dev_display (Image) dev_set_colored (12) dev_display (Rectangle)解释一下这个代码
09-08
内容概要:本文介绍了一个基于Matlab的综合能源系统优化调度仿真资源,重点实现了含光热电站、有机朗肯循环(ORC)和电含光热电站、有机有机朗肯循环、P2G的综合能源优化调度(Matlab代码实现)转气(P2G)技术的冷、热、电多能互补系统的优化调度模型。该模型充分考虑多种能源形式的协同转换与利用,通过Matlab代码构建系统架构、设定约束条件并求解优化目标,旨在提升综合能源系统的运行效率与经济性,同时兼顾灵活性供需不确定性下的储能优化配置问题。文中还提到了相关仿真技术支持,如YALMIP工具包的应用,适用于复杂能源系统的建模与求解。; 适合人群:具备一定Matlab编程基础和能源系统背景知识的科研人员、研究生及工程技术人员,尤其适合从事综合能源系统、可再生能源利用、电力系统优化等方向的研究者。; 使用场景及目标:①研究含光热、ORC和P2G的多能系统协调调度机制;②开展考虑不确定性的储能优化配置与经济调度仿真;③学习Matlab在能源系统优化中的建模与求解方法,复现高水平论文(如EI期刊)中的算法案例。; 阅读建议:建议读者结合文档提供的网盘资源,下载完整代码和案例文件,按照目录顺序逐步学习,重点关注模型构建逻辑、约束设置与求解器调用方式,并通过修改参数进行仿真实验,加深对综合能源系统优化调度的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值