Fund Management UVA - 1412 状压dp 状态的表示

【医学图像分割网络】之Res U-Net网络PyTorch复现 【医学图像分割网络】之Res U-Net网络PyTorch复现 1.内容 U-Net网络算是医学图像分割领域的开山之作,我接触深度学习到现在大概将近大半年时间,看到了很多基于U-Net网络的变体,后续也会继续和大家一起分享学习。这次分享ResNet+U-Net的一个改进版,ResNet本身就是一个十分优秀的backbone,目前应用仍然十分广泛,我们融合进ResNet后,我们就可以使得U-Net进行迁移学习了。 1.将Resnet作为encoder替换U-Net原始结构 2.U-Net提出时间较早,当时还没 阅读详情

太菜 看紫书代码看半天见注释 主要是状态难表达 转移倒是非常简单


#include<cstdio>
#include<cstring>
#include<vector>
#include<map>
using namespace std;

const double INF = 1e30;
const int maxn = 8;
const int maxm = 100 + 5;
const int maxstate = 15000;

int m, n, s[maxn], k[maxn], kk;
double c, price[maxn][maxm];
char name[maxn][10];

double d[maxm][maxstate];
int opt[maxm][maxstate], prev1[maxm][maxstate];

int buy_next[maxstate][maxn], sell_next[maxstate][maxn];
vector<vector<int> > states;
map<vector<int>, int> ID;

//枚举各种情况的值
void dfs(int stock, vector<int>& lots, int totlot) {
  if(stock == n) {
    ID[lots] = states.size();
    states.push_back(lots);
  }
  else for(int i = 0; i <= k[stock] && totlot + i <= kk; i++) {
    lots[stock] = i;
    dfs(stock+1, lots, totlot + i);
  }
}

void init() {
  vector<int> lots(n);
  states.clear();
  ID.clear();
  dfs(0, lots, 0);
  for(int s = 0; s < states.size(); s++) {
    int totlot = 0;
    for(int i = 0; i < n; i++) totlot += states[s][i];
    for(int i = 0; i < n; i++) {
      buy_next[s][i] = sell_next[s][i] = -1;
      if(states[s][i] < k[i] && totlot < kk) {
        vector<int> newstate = states[s];
        newstate[i]++;
        buy_next[s][i] = ID[newstate];//这里保存的s状态中买了i后的状态数的编号下同
      }
      if(states[s][i] > 0) {
        vector<int> newstate = states[s];
        newstate[i]--;
        sell_next[s][i] = ID[newstate];
      }
    }
  }
}
//更新函数 减少代码量
void update(int day, int s, int s2, double v, int o) {
  if(v > d[day+1][s2]) {
    d[day+1][s2] = v;
    opt[day+1][s2] = o;
    prev1[day+1][s2] = s;
  }
}

double dp() {
  for(int day = 0; day <= m; day++)
    for(int s = 0; s < states.size(); s++) d[day][s] = -INF;
         d[0][0] = c;
  for(int day = 0; day < m; day++)
    for(int s = 0; s < states.size(); s++) {
      double v = d[day][s];
      if(v < -1) continue;
                //买和卖和持有的简单dp
      update(day, s, s, v, 0); // 初始化 第二天保持状态s现金肯定也为v
      for(int i = 0; i < n; i++) {
        if(buy_next[s][i] >= 0 && v >= price[i][day] - 1e-3)
          update(day, s, buy_next[s][i], v - price[i][day], i+1); // BUY
        if(sell_next[s][i] >= 0)
          update(day, s, sell_next[s][i], v + price[i][day], -i-1); // SELL
      }
    }
  return d[m][0];
}

void print_ans(int day, int s) {
  if(day == 0) return;
  print_ans(day-1, prev1[day][s]);
  if(opt[day][s] == 0) printf("HOLD\n");
  else if(opt[day][s] > 0) printf("BUY %s\n", name[opt[day][s]-1]);
  else printf("SELL %s\n", name[-opt[day][s]-1]);
}

int main() {
  int kase = 0;
  while(scanf("%lf%d%d%d", &c, &m, &n, &kk) == 4) {
    if(kase++ > 0) printf("\n");

    for(int i = 0; i < n; i++) {
      scanf("%s%d%d", name[i], &s[i], &k[i]);
      for(int j = 0; j < m; j++) { scanf("%lf", &price[i][j]); price[i][j] *= s[i]; }
	 // 预处理 :i 股票第 j天一手能卖多少钱
    }
    init();

    double ans = dp();
    printf("%.2lf\n", ans);
    print_ans(m, 0);
  }
  return 0;
}

 

2021-8-14 EDK II编译 2021-8-14 EDK II 编译为什么要写这篇文章新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 为什么要写这篇文章 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdo 阅读详情

相关推荐

cadence——MOS晶体管I-V特性曲线仿真

MOS晶体管I-V特性曲线仿真 目标:使用cadence绘制晶体管的I-V特性曲线(dc仿真) 流程: 新建原理图,将MOS管的栅极电压设为变量Vg,漏极电压设为变量Vd 打开ADEL,点击Variables——Copy From Cellview添加变量;并选择dc仿真,对Vd进行扫描 以Vg作为参变量进行仿真,点击Tools——Parametric Analysis进行设置 选择漏极电流作为输出,进行仿真即可得到I-V特性曲线 ...

skycmq的博客 1万+

Fund Management UVA - 1412

一道动态规划的题目,有点难......首先是找到所有股票的合法的组合状态,合法也就是单个股票的持有股数不超过上限,所有股票的持有股数和不超过上限,并且对于每一种组合的方式都设置一个整数来代表其ID号,后续处理当中一个整数也就代表着一种股票的组合方式。然后就是在不考虑金钱的情况下,计算出每种组合方式的每个股票是否能够进行相应的买和卖,如果可以的话,就计算出买或者卖之后的股票组合的状态的ID号,并且记

zju2016的博客 505

在昇腾910B服务上部署搭建适配PDF解析工具Mineru2.5开源项目

本文介绍了在昇腾910B服务器上部署开源PDF解析工具Mineru2.5的过程。首先从昇腾社区下载mindie镜像并运行容器,安装系统依赖。针对部署过程中遇到的多个报错问题(如torchvision与torch版本不匹配、昇腾软件栈与NumPy 2.0不兼容等),提供了具体解决方案和兼容版本。通过设置环境变量、安装指定版本的Python依赖包,成功部署Mineru项目并下载模型。最后运行测试,验证了在NPU设备上运行pipeline的可行性。整个过程详细记录了版本适配和错误处理方法,为类似部署场景提供了参考

一起加油吧 2163

UVA 1412 Fund Management(复杂状态的动态规划 和指标函数值有关的状态转移)

题意:你有c(0.01≤c≤1e8)美元现金,但没有股票。给你m(1≤m≤100)天时间和n(1≤n≤8)支股票供你买卖,要求最后一天结束后不持有任何股票,且剩余的钱最多。买股票不能赊账,只能用现金买。已知每只股票每天的价格(0.01~999.99。单位是美元/股)与参数si和ki,表示一手股票是si(1≤si≤1e6)股,且每天持有的手数不能超过ki(1≤ki≤k),其中k为每天持有的总手数上限...

常胜将军的博客 327

手把手教你用Keil5和Proteus8给51单片机跑个流水灯(附完整源码+安装包)

本文详细介绍了如何使用Keil5和Proteus8为51单片机实现流水灯效果,包括开发环境配置、汇编代码编写、电路设计及仿真调试。通过完整的源码和安装包,帮助初学者快速掌握C51单片机开发的核心流程,适合嵌入式开发入门学习。

weixin_42632434的博客 369

第7篇-SAP MM模块-JIT应用实战解析,从计划协议到JIT供应的关键配置与流程

本文深入解析SAP MM模块中的JIT(Just In Time)供应模式,从计划协议到JIT供应的关键配置与流程。通过动态计划行管理、需求聚合与分解等核心功能,实现精确数量、时间和地点的物料供应。文章详细介绍了主数据准备、计划协议配置、MRP参数精调及EDI集成方案,并提供了实施中的典型问题与解决方案,助力企业优化供应链管理。

weixin_30363509的博客 947

【暑假】[深入动态规划]UVa 1412 Fund Management

UVa 1412 Fund Management   题目:   UVA - 1412 Fund Management Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description  

hahalidaxin的专栏 1368

Solidworks二次开发(C# .NET API):从零构建装配体与虚拟零件

本文详细介绍了使用C#进行Solidworks二次开发,从零构建装配体与虚拟零件的完整流程。通过.NET API实现设计自动化,涵盖环境搭建、核心对象模型、虚拟零件创建与外部化保存等关键技术,帮助工程师将重复性建模工作程序化,大幅提升设计效率与标准化水平。

alice7model的博客 607

UVa1412 - Fund Management(状压dp【复杂)

题目链接简介: 你有c美元现金,没有股票,给你m天时间和n支股票供你购买,要求最后一天结束后不持有任何股票,且剩余的钱最多 已知每支股票每天的价格和参数si和ki,表示一手股票是si股,且每天持有的手数不能超过ki,其中k为每天持有的总手数上限。每天要么不操作,要么买一支股票,买或卖ta的一手股票 要求输出每一天的决策分析: 好像和这道题有点像bzoj1492(好像又不一样)每天持有的股票和

Coco_T的博客 616

【SAP GUI 脚本 VBA】实战:构建Excel驱动的SAP自动化操作平台

本文详细介绍了如何利用VBA和SAP GUI脚本构建Excel驱动的SAP自动化操作平台,实现高频事务码的标准化封装和批量处理。通过实战案例展示物料主数据查询(MM03)、会计凭证修改(FB02)等场景的自动化实现,帮助用户提升10倍+操作效率,同时确保数据可追溯性和操作安全性。

weixin_33748818的博客 503

2026年AI编程工作流实战:Claude Code与Open Code深度对比

AI编程已从代码生成工具升级为IDE级智能工作流核心能力。其本质是将大语言模型深度嵌入开发环境,通过语义理解、上下文感知与行动闭环重构传统编码范式。Claude Code以企业级知识图谱和双轨Code Review为代表,强调合规性、可审计与深度集成;Open Code则依托Skill可组合性、本地优先模型与ocp协议,实现开源驱动的灵活扩展。二者共同推动IDE从‘编辑器’进化为‘数字搭档’——能理解RFC文档、记住PR评论、自动补全带重试的fetch逻辑,并在Promise链发呆时一键重构为async/a

weixin_33739523的博客 459

UVA 1412 Fund Management(DP)

题意是m天n只股票给你买卖,然后要求jieshu

glq007的acm的奋斗 1795

黑暗中的爆破(船讯网Ais爬虫暨爬虫实战js逆向学习经验分享)

船讯网 爬虫 js逆向 python

returnadsss的博客 1575

UVA 1412 Fund Management (复杂状态的DP,状态池)

UVA 1412 Fund Management (复杂状态的DP,状态池) 受到前面题目的影响,一开始的思路是用d(i,s)表示经过第i天后,选择了集合s里面的股票的当前最大现金。但是发股票可以选多手,根本无法用集合表示。 由于每只股票的可持有的手数为(0<=ki<=8),最多有8只股票,所以表示当前手持股票资产的理论状态数最多有98<5*107种,但是由于还有一个持有总手数k的最大限制,实际状态数将远远低于这个值。实际状态数<1.5e4(我也不知道为什么) 所以用d(i,p)表示

WedsonLin的博客 335

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

uva1412 Fund Management

状压dp 要再看看 例题9-17 /* // UVa1412 Fund Management // 本程序会超时,只是用来示范用编码/解码的方法编写复杂状态动态规划的方法 // Rujia Liu #include<cstdio> #include<cstring> #include<map> using namespace s...

dengdouweng1282的博客 110

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

UVa 1412 Fund Management

本文研究基金管理人Frank在封闭式股票基金中的最优交易策略问题。基金有n支股票,管理期限m天,需满足手数限制、持仓限制和交易限制等约束条件。通过状态压缩方法表示持仓状态,使用动态规划框架设计状态转移方程,考虑持有、买入和卖出三种操作。算法采用预处理转移关系和操作编码优化,分析表明其复杂度在题目数据范围内可行。最终实现通过递归生成状态、初始化转移关系、动态规划更新状态和重构最优解四个步骤,为基金管理提供量化决策支持。

寂静山林 579

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

100道动态规划——14 UVA 1412 Fund Management 从刘汝佳dalao的代码里学到了很多。。。。

好吧。之所以有一段时间没有发100道动态规划系列了,一是最近有点事情,而是为了这道题刷了刷前面的数据结构那一章的题目。 我感觉这个代码里面学到了很多东西,因此就不说自己的感想了,全写在代码注释里面了,学习了。。// UVa1412 Fund Management // Rujia Liu #include #include #include #include using std::map; u

Sion 862

UVA 1412 Fund Management (预处理+状压dp)

状压dp,每个状态可以表示为一个n元组,且上限为8,可以用一个九进制来表示状态。但是这样做用数组开不下,用map离散会T。 而实际上很多九进制数很多都是用不上的。因此类似uva 1601 Morning after holloween的思想,先dfs预处理出所有状态,用map将状态离散, 预处理出算出状态的转移DAG,而不是转移的时候在解码编码判断是否可行,然后一层一层bfs就行了。 附上测...

weixin_33827590的博客 204

UVA1412FundManagement

对于这道题的了解还不够深入,这是一道需要我回过头来再仔细推敲的题。难点就在于解题过程的繁杂。还有一点一直都不明白,状态的数量为何一定小于15000.

qq_16603365的博客 396

UVA 1412 - Fund Management(用vector容器模拟状态的状压dp)

Frank is a portfolio manager of a closed-end fund for Advanced Commercial Markets (ACM ). Fund collects money (cash) from individual investors for a certain period of time and invests cash into variou

kalilili的专栏 1334

UVA 1412 Fund Management——dp

思路不难,但是写起来真恶心,一定要注意模块化#include &lt;cstdio&gt; #include &lt;cstring&gt; #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;string&gt; #include &lt;map&gt; using namespace std; const int ...

hao_zong_yin的博客 469

Fund Management UVA - 1412

很有难度的一道题 将n元组映射成一个数字,既方便了状态的转移,也加快了时间,否则利用九进制去进行操作,很麻烦的 将所有状态都记录下来之后,股票的买个卖就可以抽象成一幅图了,也方便了状态转移 具体细节看代码吧 #include&lt;iostream&gt; #include&lt;cmath&gt; #include&lt;cstdio&gt; #include&lt;cstdlib&g...

∑bit 314

UVA1412 基金管理 Fund Management

状态压缩,一个状态是一个九进制数,vector<vector >states对状态编号(编号>状态),map<vector,int>id(状态>编号)紫书的代码里用一个vector< int >表示状态,巧妙。 预处理编号为状态s下对股票i的进行买卖操作后得到的状态编号。 #include <iostream> #include <cstdio> #include <vector> #include <map&gt.

gyp0205的博客 163

例题 9-17 基金管理(Fund Management,ACM/ICPC NEERC 2007, UVa1412)

原题链接:https://vjudge.net/problem/UVA-1412 分类:复杂DP 备注:复杂状态的动态规划;和指函数有关的状态转移 以下代码和紫书代码没有任何区别… #include<bits/stdc++.h> using namespace std; const double INF=1e10; const int maxn=10; const int maxm=105; const int maxstate=15000; double c,price[maxn][maxm]

TK_wang_的博客 314

[多维DP] UVa1412 基金管理(九元组及编解码)(状态池)

题目 思路 本题的基本思路是明确的,用d(i,p)表示经过i天之后,资产组合为p时的现金的最大值。 另外值得注意的是,本题在考虑买股票时要考虑到当前拥有的现金是否足够,因此不是一个DAG最长/最短路问题,因为某些边u-&gt;v的存在性依赖于起点到点u的最短路值。也就是说,本题不能像之前的DAG问题一样“反着定义”:如果用d(i,p)表示资产组合为p,从第i天开始到最后能拥有的现金最大值...

OI - IceCab 604

uva1412 基金管理

1. 复杂状态做映射。 2. 分阶段对每种情况的每种决策做遍历。 3. 刷表要好的初始化。 4. double数组不能用memset。 5. 递归输出可以利用保存的之前下标并从前到后。

YueLing's Blog 1469
上一篇: Twenty Questions UVA - 1252 状压dp 子集生成
下一篇: Tango Tango Insurrection UVA - 10618 多转移dp 终点逆推
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值