<JZOJ1286>太空电梯

本文深入解析了一道使用动态规划(DP)算法解决的最大可爱值问题,通过详细代码展示如何通过DP算法求解最优解,涵盖了结构体、排序、迭代等关键步骤。

一道简单可爱的dp

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#define max(a,b) (a>b?a:b)
#define rint register int
using std::sort;
using std::cout;
using std::endl;
template <class T>inline void read(T &X)
{
    X=0;int W=0;char ch=0;
    while(!isdigit(ch))W|=ch=='-',ch=getchar();
    while(isdigit(ch))X=(X<<3)+(X<<1)+(ch^48),ch=getchar();
    X=W?-X:X;return;
}

int n,dp[16000000]={0},ans=0;
struct node{int h,a,c;}e[410];
int cmp(node x,node y){return x.a<y.a;}
int main()
{
    read(n);
    for(rint i=1;i<=n;++i)read(e[i].h),read(e[i].a),read(e[i].c);
    sort(e+1,e+n+1,cmp);

    dp[0]=1;
    for(rint i=0;i<=n;++i)
    {
        for(rint j=e[i].a;j>=0;--j)
        {
            if(dp[j])
            {
                for(rint k=1;k<=e[i].c;++k)
                {
                    if(j+k*e[i].h>e[i].a)break;
                    dp[j+k*e[i].h]=1;
                }
            }
        }
    }
    for(rint i=e[n].a;i>=0;--i)
        if(dp[i]){printf("%d\n",i);break;}
return 0;
}

 

转载于:https://www.cnblogs.com/pile8852/p/9885129.html

<?xml version="1.0" encoding="utf-8"?> <Defs> <ResearchTabDef> <defName>GWResearchTab</defName> <label>Growth Weapons</label> </ResearchTabDef> <ResearchProjectDef> <defName>GW_gw</defName> <label>growth weapons</label> <description>As the number of kills increases, the weapon's performance increases.</description> <baseCost>4000</baseCost> <techLevel>Spacer</techLevel> <prerequisites> <li>MicroelectronicsBasics</li> </prerequisites> <tab>GWResearchTab</tab> <requiredResearchBuilding>HiTechResearchBench</requiredResearchBuilding> <researchViewX>1</researchViewX> <researchViewY>2</researchViewY> </ResearchProjectDef> <ResearchProjectDef> <defName>GW1_gw</defName> <label>growth turret</label> <description>As the number of kills increases, the weapon's performance increases.</description> <baseCost>4000</baseCost> <techLevel>Spacer</techLevel> <prerequisites> <li>MicroelectronicsBasics</li> </prerequisites> <tab>GWResearchTab</tab> <requiredResearchBuilding>HiTechResearchBench</requiredResearchBuilding> <researchViewX>1</researchViewX> <researchViewY>1</researchViewY> </ResearchProjectDef> <ResearchProjectDef> <defName>GW_gw_Super_xueze</defName> <label>super growth weapons</label> <description>As the number of kills increases, the weapon's performance increases.\nThese weapons possess great abilities.</description> <baseCost>5000</baseCost> <techLevel>Spacer</techLevel> <prerequisites> <li>GW_gw</li> <li>MultiAnalyzer</li> </prerequisites> <tab>GWResearchTab</tab> <requiredResearchBuilding>HiTechResearchBench</requiredResearchBuilding> <requiredResearchFacilities> <li>MultiAnalyzer</li> </requiredResearchFacilities> <researchViewX>3</researchViewX> <researchViewY>2</researchViewY> </ResearchProjectDef> <ResearchProjectDef> <defName>GW_gw_Super_moonLight</defName> <label>psychic growth weapons</label> <description>A growth weapon related to psionic energy.</description> <baseCost>5000</baseCost> <techLevel>Spacer</techLevel> <prerequisites> <li>GW_gw</li> <li>MultiAnalyzer</li> </prerequisites> <tab>GWResearchTab</tab> <requiredResearchBuilding>HiTechResearchBench</requiredResearchBuilding> <requiredResearchFacilities> <li>MultiAnalyzer</li> </requiredResearchFacilities> <researchViewX>3</researchViewX> <researchViewY>3</researchViewY> </ResearchProjectDef> </Defs>逐行解释
07-19
这段XML代码定义了一个RimWorld模组中的多个研究项目及其研究分类标签,主要用于实现一个名为“成长型武器”(Growth Weapons)的研究树系统。以下是逐行解释: --- ### 研究分类标签定义(`ResearchTabDef`) ```xml <ResearchTabDef> <defName>GWResearchTab</defName> <label>Growth Weapons</label> </ResearchTabDef> ``` - 定义一个新的研究分类标签(Research Tab),内部名称为`GWResearchTab`,显示名称为“Growth Weapons”,用于将多个相关研究项目归类到一个独立标签页中。 --- ### 基础研究项目定义(`GW_gw`) ```xml <ResearchProjectDef> <defName>GW_gw</defName> <label>growth weapons</label> <description>As the number of kills increases, the weapon's performance increases.</description> <baseCost>4000</baseCost> <techLevel>Spacer</techLevel> <prerequisites> <li>MicroelectronicsBasics</li> </prerequisites> <tab>GWResearchTab</tab> <requiredResearchBuilding>HiTechResearchBench</requiredResearchBuilding> <researchViewX>1</researchViewX> <researchViewY>2</researchViewY> </ResearchProjectDef> ``` - 定义第一个研究项目:`GW_gw`,显示名称为“growth weapons”,描述说明该武器会随着击杀数量提升性能。 - 研究成本为4000科研点。 - 科技等级为“Spacer”(太空人)。 - 前置研究为`MicroelectronicsBasics`(基础微电子学)。 - 所属研究标签为`GWResearchTab`。 - 必须在`HiTechResearchBench`(高科技研究台)上进行研究。 - 在研究界面中的坐标位置为X=1,Y=2。 --- ### 塔防类成长武器研究项目定义(`GW1_gw`) ```xml <ResearchProjectDef> <defName>GW1_gw</defName> <label>growth turret</label> <description>As the number of kills increases, the weapon's performance increases.</description> <baseCost>4000</baseCost> <techLevel>Spacer</techLevel> <prerequisites> <li>MicroelectronicsBasics</li> </prerequisites> <tab>GWResearchTab</tab> <requiredResearchBuilding>HiTechResearchBench</requiredResearchBuilding> <researchViewX>1</researchViewX> <researchViewY>1</researchViewY> </ResearchProjectDef> ``` - 定义第二个研究项目:`GW1_gw`,显示名称为“growth turret”,描述与前一个研究类似,但专注于塔防类武器。 - 成本、科技等级、前置研究、研究建筑等与`GW_gw`一致。 - 在研究界面中的坐标位置为X=1,Y=1。 --- ### 高级成长武器研究项目定义(`GW_gw_Super_xueze`) ```xml <ResearchProjectDef> <defName>GW_gw_Super_xueze</defName> <label>super growth weapons</label> <description>As the number of kills increases, the weapon's performance increases.\nThese weapons possess great abilities.</description> <baseCost>5000</baseCost> <techLevel>Spacer</techLevel> <prerequisites> <li>GW_gw</li> <li>MultiAnalyzer</li> </prerequisites> <tab>GWResearchTab</tab> <requiredResearchBuilding>HiTechResearchBench</requiredResearchBuilding> <requiredResearchFacilities> <li>MultiAnalyzer</li> </requiredResearchFacilities> <researchViewX>3</researchViewX> <researchViewY>2</researchViewY> </ResearchProjectDef> ``` - 定义第三个研究项目:`GW_gw_Super_xueze`,显示名称为“super growth weapons”,描述说明这是更强大的成长型武器。 - 成本提高至5000,前置研究为`GW_gw`和`MultiAnalyzer`(多分析仪)。 - 需要设施`MultiAnalyzer`才能研究。 - 在研究界面中的坐标位置为X=3,Y=2。 --- ### 灵能成长武器研究项目定义(`GW_gw_Super_moonLight`) ```xml <ResearchProjectDef> <defName>GW_gw_Super_moonLight</defName> <label>psychic growth weapons</label> <description>A growth weapon related to psionic energy.</description> <baseCost>5000</baseCost> <techLevel>Spacer</techLevel> <prerequisites> <li>GW_gw</li> <li>MultiAnalyzer</li> </prerequisites> <tab>GWResearchTab</tab> <requiredResearchBuilding>HiTechResearchBench</requiredResearchBuilding> <requiredResearchFacilities> <li>MultiAnalyzer</li> </requiredResearchFacilities> <researchViewX>3</researchViewX> <researchViewY>3</researchViewY> </ResearchProjectDef> ``` - 定义第四个研究项目:`GW_gw_Super_moonLight`,显示名称为“psychic growth weapons”,描述说明这是与灵能相关的成长型武器。 - 成本为5000,前置研究与`GW_gw_Super_xueze`相同。 - 也需要设施`MultiAnalyzer`。 - 在研究界面中的坐标位置为X=3,Y=3。 --- ### 总结 这段XML代码定义了一个完整的“成长型武器”研究系统,包含一个自定义研究标签和四个研究项目,分别对应基础成长武器、塔防成长武器、超级成长武器和灵能成长武器。每个研究项目都有明确的前置条件、研究成本、科技等级和界面布局。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值