双倍快乐

题目描述

Illyasviel:"你想要最长不下降子序列吗?"

star-dust:"好啊!"

Illyasviel:"老板,给我整两个最长不下降子序列,要最大的。"

求序列 aa 中的两个不相交的不下降子序列使得他们的元素和的和最大,子序列可以为空。

注 1:序列 aa 不下降的定义是不存在 l<rl<r 且 a_l>a_ral​>ar​

注 2:两个子序列不相交的定义是:不存在 a_iai​ 即在第一个子序列中也在第二个子序列中。

输入描述

 

第一行一个数字 nn 代表序列 aa 的长度。

接下来一行 nn 个数,第 ii 个数代表 a_iai​。

数据范围:

  • 2 \le n \le 5002≤n≤500
  • 1\leq a_i \leq 10^51≤ai​≤105

输出描述

 

一行一个整数代表两个不相交的不下降子序列的元素和的最大值。

样例输入 1 

9
5 3 2 1 4 2 1 4 6

样例输出 1

22

提示

样例解释:

第一个序列选了 "5"

第二个序列选了 "3 4 4 6"

总和为 2222。

和UI长上升子序列差不多,思想是一样的。

AC代码:

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
using namespace std;
int n,m,i,j,k,l,x,y;
int cnt;
int ans;
using namespace std;
const int maxn = 1e3+12;
int dp[maxn][maxn],a[maxn];
int main()
{
    cin>>n;
    for(i=1; i<=n; ++i)
        cin>>a[i];
    ans=0;
    memset(dp,0,sizeof(dp));
    for(k=1; k<=n; ++k)
    {
        for(i=0; i<k; ++i)
        {
            for(j=0; j<k; ++j)
            {
                if(a[k]>=a[i]) dp[k][j]=max(dp[k][j],dp[i][j]+a[k]);
                if(a[k]>=a[j]) dp[i][k]=max(dp[i][k],dp[i][j]+a[k]);
                ans=max(ans,dp[k][j]);
            }
        }
    }
    cout<<ans<<endl;
    return 0;
}

 

在IDEA上实现如下所有功能: 开发一个可扩展的超市购物管理系统,通过Java面向对象编程技术实现以下核心目标: 1.构建完整的零售业务闭环 实现商品管理、会员服务、购物结算全流程覆盖 支持数据持久化存储,确保业务连续性 提供清晰的消费记录追溯能力 2.实践核心Java技术栈 应用封装、继承、多态实现模块化设计 使用集合框架(ArrayList/HashMap)管理动态数据 通过Properties/序列化实现配置与业务数据存储 采用异常处理机制保障系统健壮性 3.打造人性化交互体验 设计直观的控制台菜单系统(支持图形化界面扩展) 实现智能业务提醒(库存预警/生日特权) 提供多维度数据展示(商品列表/消费明细) 二、功能需求 1.会员管理模块 功能点 技术实现要求 业务规则 会员注册 使用HashMap存储会员数据 会员ID按"年份+序号"自动生成(如2023001) 必填字段:姓名、联系方式、生日 积分系统 通过继承实现不同等级积分规则(普通/VIP) 消费1元=1基础积分 VIP会员享1.5倍积分 生日特权 定时任务比对当前日期与会员生日 生日当天消费赠送双倍积分 幸运抽奖 使用Random生成幸运数字 遍历会员ID匹配十位数字 每月1日自动开奖 中奖会员获得额外积分 2.商品管理模块 功能点 技术实现要求 业务规则 商品维护 使用ArrayList存储商品对象 实现Comparable接口支持价格排序 商品属性:ID、名称、进价、售价、库存 库存预警 自定义InventoryException异常类 每日启动时自动检查库存 库存量≤10时触发补货提醒 价格策略 通过多态实现促销策略(满减/折扣) 示例:DiscountStrategy接口 促销活动可配置化 会员价优先于促销价 3.购物结算模块 功能点 技术实现要求 业务规则 购物车 使用HashSet实现商品去重 通过迭代器遍历修改数量 相同商品自动合并数量 实时显示商品小计 结算系统 应用策略模式计算折扣 采用BigDecimal处理金额精度 普通会员95折,VIP会员9折 积分可抵扣现金(100积分=1元) 消费凭证 使用StringBuilder生成小票文本 通过BufferedWriter写入文件 小票包含:交易时间、商品明细、优惠明细、实付金额 4.数据管理模块 功能点 技术实现要求 存储方案 商品数据 实现Serializable接口 使用ObjectOutputStream序列化存储 保存路径:/data/goods.dat 会员数据 通过Properties的store()方法存储 Key-Value结构保存会员属性 保存路径:/config/members.properties 交易日志 采用每日滚动日志 通过SimpleDateFormat生成文件名 日志路径:/logs/yyyyMMdd_sales.log 要完整代码
最新发布
06-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值