UVALive 4048 Fund Management(状压DP)

daily-stock-analysis(Python) 「daily_stock_analysis(Python)」是后台管理系统(Python)。项目简介:LLM 驱动的多市场股票智能分析系统:多源行情、实时新闻、决策看板与自动推送,支持零成本定时运行。 LLM-powered multi-market stock analysis system with multi-source market data, real-time news, decision dashboard, automated notifications, and cost-free scheduled runs.源码完整,下载解压即可查看使用,适合学习参考、课程设计与二次开发。 立即下载

题目链接:点击打开链接

【链接为NEERC 2007整套题,该题为其中的F题】

【要不是UVALive4048题目挂了我也不会出此下策Orz】

初步思路是,设dp[i][j]为当前dp到第i天,股票持有状态为j的情况下的最大获得金额。

那么显然枚举前一天的所有交易决策然后取最大就行了。

关键问题在于状态j如何表示。

首先,最多有8种股票,每种最多可以有8手,所以最先考虑的是用一个8位的9进制数表示状态,不过数字太大数组开不了。

由于股票数总和最多为8,故8位9进制数的所有情况中很多种情况都是不可能出现的。(事实上只有最多12870种情况)

可以想到用map数组来表示dp数组,但这样即使是log级别的查询也会导致TLE。

最后想到的是预处理出0~12869对所有可能出现的状态的映射,这样每次查询就可以做到O(1)。

于是就有了代码中那一段dfs预处理

之后就直接从头到尾DP了,由于要输出最优解的方案所以需要记录路径。

由于避免对不必要计算的状态进行计算,故代码中使用的不是直接DP,而是bfs的方式从最开始的状态展开搜索覆盖最优解。

代码如下,虽然一直改来改去导致其可读性变得非常差。。

将就着看吧Orz

#include<bits/stdc++.h>
#define eps 1e-8
using namespace std;

map<long long,int> st;

const long long nie[9]={1,9,81,729,6561,59049,531441,4782969,43046721};

//预处理 

struct vnode
{
	int k;
	int a[10];
	int dnxt[10];
	int unxt[10];
};

vnode V[13000];
int top;

int vdfs(long long bitm)
{
	if(st.find(bitm)!=st.end())return st[bitm];
	st[bitm]=top;
	int pos=top;
	top++;
	long long p=bitm;
	V[pos].k=0;
	for(int i=0;i<8;i++)
	{
		V[pos].a[i]=p%9;
		V[pos].k+=V[pos].a[i];
		p/=9;
	}
	for(int i=0;i<8;i++)
	{
		if(V[pos].a[i]>0)V[pos].dnxt[i]=vdfs(bitm-nie[i]);
		else V[pos].dnxt[i]=-1;
		if(V[pos].k<8&&V[pos].a[i]<8)V[pos].unxt[i]=vdfs(bitm+nie[i]);
		else V[pos].unxt[i]=-1;
	}
	return pos;
}

void init()
{
	st.clear();
	top=0;
	vdfs(0LL);
}

//预处理结束 

bool vis[105][13000];
double dp[105][13000];
int lst[105][13000];


double c;
int m,n,k;
int S[10],K[10];
double P[10][105];
char name[10][105];

struct node
{
	int i,j;
	node(int ii=0,int jj=0):i(ii),j(jj){}
};

void bfs()
{
	memset(vis,0,sizeof(vis));
	queue<node> q;
	q.push(node(0,0));
	dp[0][0]=c;
	vis[0][0]=true;
	while(!q.empty())
	{
		node p=q.front();
		q.pop();
		if(p.i==m)continue;
		int &b1=p.i,&b2=p.j;
		if(V[b2].k<k)
		{
			for(int i=0;i<n;i++)
			{
				double w=P[i][b1]*S[i];
				if(V[b2].a[i]<K[i]&&(dp[b1][b2]-w>-eps))
				{
					if(dp[b1+1][V[b2].unxt[i]]<=dp[b1][b2]-w)
					{
						dp[b1+1][V[b2].unxt[i]]=dp[b1][b2]-w;
						lst[b1+1][V[b2].unxt[i]]=b2;
					}
					if(!vis[b1+1][V[b2].unxt[i]])
					{
						q.push(node(b1+1,V[b2].unxt[i]));
						vis[b1+1][V[b2].unxt[i]]=true;
					}
				}
			}
		}
		for(int i=0;i<n;i++)
		{
			double w=P[i][b1]*S[i];
			if(V[b2].a[i]>0)
			{
				if(dp[b1+1][V[b2].dnxt[i]]<=dp[b1][b2]+w)
				{
					dp[b1+1][V[b2].dnxt[i]]=dp[b1][b2]+w;
					lst[b1+1][V[b2].dnxt[i]]=b2;
				}
				if(!vis[b1+1][V[b2].dnxt[i]])
				{
					q.push(node(b1+1,V[b2].dnxt[i]));
					vis[b1+1][V[b2].dnxt[i]]=true;
				}
			}
		}
		if(dp[p.i+1][p.j]<=dp[p.i][p.j])
		{
			dp[p.i+1][p.j]=dp[p.i][p.j];
			lst[p.i+1][p.j]=p.j;
		}
		if(!vis[p.i+1][p.j])
		{
			q.push(node(p.i+1,p.j));
			vis[p.i+1][p.j]=true;
		}
	}
}

void print_ans()
{
	printf("%.2lf\n",dp[m][0]);
	vector<int> ans;
	int p=0;
	for(int i=m;i>=0;i--)
	{
		ans.push_back(p);
		p=lst[i][p];
	}
	reverse(ans.begin(),ans.end());
	for(int i=1;i<ans.size();i++)
	{
		int x=ans[i-1],y=ans[i],j;
		for(j=0;j<n;j++)
		{
			if(V[x].unxt[j]==y)
			{
				printf("BUY %s\n",name[j]);
				break;
			}
			if(V[x].dnxt[j]==y)
			{
				printf("SELL %s\n",name[j]);
				break;
			}
		}
		if(j==n)printf("HOLD\n");
	}
}

int main()
{
//	freopen("1.txt","r",stdin);
//	freopen("2.txt","w",stdout);
	init();
	bool flag=false;
	while(scanf("%lf%d%d%d",&c,&m,&n,&k)==4)
	{
		if(!flag)flag=true;
		else printf("\n");
		memset(dp,0,sizeof(dp));
		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",&P[i][j]);
		}
		bfs();
		print_ans();
	}
}


Python 批量处理大量压缩包|递归嵌套解压 zip rar 7z tar,文件名乱码修复,扫描残留压缩包工具 在收集大量计算机源码时,经常遇到海量多层嵌套压缩包:zip、rar、7z、tar、tar‑gz 混杂,老压缩包中文文件名 GBK 编码解压出现乱码,解压完成后不确定目录内是否还有遗留未解压的压缩包。 本工具集由 3 份 Python 脚本组成,专门针对大批量源码文件夹做自动化预处理,不用手动一个个解压,自动递归遍历所有子目录,处理嵌套压缩包,修复中文文件名乱码,扫描校验残留压缩包,输出完整处理日志。 前置条件 - Python3.8 及以上环境 - 如果要处理 rar/7z 格式:电脑安装 **7‑Zip**,记录 7z.exe 的完整路径,填到 `jieyarar.py` 配置区。 1. 修改每个脚本顶部配置区:`SCAN_ROOT / TARGET_FOLDER` 修改为你存放文件的根目录绝对路径(Windows 路径字符串前面加 r,例如 `r"F:\files\download"`) 2. 第一步:运行 `main.py`,优先处理全部 zip 压缩包,执行完成查看生成的 `unzip_log.txt` 日志; 3. 第二步:运行 `jieyarar.py`,处理 rar、7z、tar 等其它格式压缩包,查看 `unpack_all_archive_log.txt`; 4. 第三步:运行 `checkfiel.py`,全盘扫描校验,输出 `scan_archive_and_badname.txt`; - 查看报告:确认是否还有残留压缩包、是否存在乱码文件名; 5. 根据日志,手动单独处理加密、损坏的压缩包。 立即下载

相关推荐

Python+whisper/vosk实现语音识别

Whisper 是一个由 OpenAI 开发的人工智能语音识别模型,它能够将语音转换为文本。Whisper 模型特别之处在于它的设计目标是能够理解和转录多种语言的语音,包括但不限于英语。Whisper 模型在训练时使用了大量不同语言的语音数据,这使得它具有很好的跨语言能力。Vosk 是一个开源的语音识别库,它可以在离线环境下工作,不依赖于任何外部服务。Vosk 基于Kaldi语音识别框架,支持多种语言,包括中文。Vosk提供了多种预训练模型,可以根据需求选择适合的模型进行语音识别。

weixin_44458771的博客 5940

Nuxt3入门

这篇文章主要介绍了SSR(服务端渲染)方面的概念,以及创建 Nuxt3 框架应用。

前端咸鱼翻身的博客 9814

空天大模型详解

空天大模型是指面向空天信息领域(如卫星遥感、导航、气象等)设计的多模态人工智能模型,能够处理海量遥感数据、多传感器信息及跨时空分析任务。多模态融合:整合可见光、雷达、热红外、多光谱等多源遥感数据,构建统一表征空间,例如“空天·灵眸”3.0版支持航空、卫星及无人机数据的自动化解译。轻量化与高效推理:针对星载计算场景,采用分层量化、跨模态蒸馏技术压缩模型参数(如JigonGPT从1.02B压缩至0.23B,性能仅牺牲5.2%)18,并通过热传导架构提升计算速度2.4倍。神经符号结合。

zxy98的专栏 1568

Nuxt的使用

Nuxt生成的目录: nuxt中的生命周期执行: Nuxt.js 默认的配置涵盖了大部分使用情形,可通过 nuxt.config.js 来覆盖默认的配置 例: build:Nuxt.js 允许你在自动生成的 vendor.bundle.js 文件中添加一些模块,以减少应用 bundle 的体积。如果你的应用依赖第三方模块,这个配置项是十分实用的。 css:该配置项用于定义应用的全局(所有页面均需...

weixin_42069147的博客 4818

正点原子RK3588 Android 12镜像构建实战:从环境配置到烧录验证全指南

本文提供了一份基于正点原子RK3588开发板的Android 12镜像构建全流程实战指南。内容涵盖从Ubuntu环境配置、SDK获取、编译内核与系统,到最终镜像打包与烧录验证的完整步骤,并分享了内核驱动定制与系统优化技巧,旨在帮助开发者高效完成瑞芯微RK3588平台的系统定制工作。

grass的博客 811

3.ESP32S3 AP 配网开发实战:HTTP 与 WebSocket 协议实现

本文介绍了基于ESP32S3的AP配网实现方案,通过HTTP协议提供配网网页,利用WebSocket实现双向通信。详细解析了HTTP和WebSocket协议特点,阐述了SPIFFS文件系统存储HTML网页的方法,包括分区表配置、CMakeLists设置和代码实现。工程采用模块化设计,包含WiFi管理、Web服务器、IO扩展等组件,支持手机浏览器直接配网。测试验证了从AP热点连接到路由器切换的全流程,并总结了SPIFFS操作、WebSocket通信等核心优化点。该方案无需专用APP,适合物联网设备快速部署场景

u011697185的专栏 960

nuxt的基础使用

nuxt的基础使用安装第一个页面启动项目pages 目录路由导航nuxt-link编程式导航动态路由 nuxt 是用于解决 vue 服务端渲染+客户端渲染(同构渲染)的方法,他的内部集成了 vue、vue-router 等模块,可以让开发更加的方便 安装 新建一个文件夹,并移动到当前目录中 初始化项目 npm init -y nuxt 的安装非常的简单,只需要安装 nuxt 模块即可 npm i nuxt 第一个页面 创建好项目和安装模块后,在项目根路径下创建 pages 目录,该目录将存放项目的所有页面

weixin_45449964的博客 3856

【Arduino】入门篇——交通信号灯

模拟交通信号灯一、实验目的二、实验材料三、电路图四、实验过程五、代码块六、实验结果 一、实验目的 我想大家都看见过交通灯,就是马路上十字路口的红绿灯。如果您开过车,我想您一定仔细观察过交通灯,如果您还没有驾驶过车,您是否仔细观察过交通灯呢?交通灯包括三种个不同颜色的灯:红灯、黄灯和绿灯。 每个路口的红绿灯切换的时间并不是相同,这个是根据不同路口的车流情况来设定的,下面就是模仿交通灯的一个实验 二...

漠宸离若的博客 1万+

Nuxt快速入门

记录前端框架nuxt学习笔记

现在的我强的可怕 6488

『杭电1199』Color the Ball

Problem Description There are infinite balls in a line (numbered 1 2 3 ....), and initially all of them are paint black. Now Jim use a brush paint the balls, every time give two integers a b and follow by a char 'w' or 'b', 'w' denotes the ball from a to

漠宸离若的博客 497

使用abagen工具箱获取基于脑区的基因表达矩阵

脑区模板定义了您感兴趣的脑区的空间位置。abagen提供了一些预定义的脑区模板,您可以选择使用,也可以使用自定义的脑区模板。它提供了一种简便的方式来获取基于脑区的基因表达矩阵。abagen需要使用Allen脑图谱数据来获取基因表达矩阵。您可以使用abagen内置的下载功能来获取这些数据。这就是使用abagen工具箱获取基于脑区的基因表达矩阵的详细步骤。通过按照上述步骤操作,您可以轻松获取并使用Allen脑图谱数据中的基因表达信息。一旦您加载了脑区模板,您可以使用abagen来获取基于脑区的基因表达矩阵。

web_bug407的博客 1326

【成神之路】Nuxt入门

1. Nuxt.js 概述 1.1 我们一起做过的SPA SPA(single page web application)单页 Web 应用,Web 不再是一张张页面,而是一个整体的应用,一个由路由系统、数据系统、页面(组件)系统等等,组成的应用程序。 我们之前学习的Vue就是SPA中的佼佼者。 SPA 应用广泛用于对SEO要求不高的场景中 1.2 什么是SEO SEO:搜索引擎优化(Search Engine Optimization), 通过各种技术(手段)来确保,我们的Web内容

weixin_47918681的博客 1923

高通GAIA V3命令参考手册的研读学习(15):自定制命令的详细工作描述

里的示例一样,手机APP发出这个GetManuFacturer的命令发0x0000,那么耳机回复:0x8000, 同时在回复的playload部分,用最多15个字节的ACSII码来表达制造商信息(因此最多15个字母)。那么这个APP在通过GAIA协议控制这个耳机时,不仅可以通过前面讲过的vendor ID来识别,也可以更进一步通过这个命令来识别这个耳机,到底是不是本公司的。通过这个可变长度的playload,真的是可以传达极多的事先约定的信息,相当的灵活,真是不错!这个命令用来得到设备的制造商信息。

qq_37191547的博客 398

UVALive 4048 Fund Management

题目大意:你有c美元,没有股票,给你m天时间和n支股票供你买卖,每天只能买卖一手股票,对于第i支股票,知道他的第j天的每股价格为Pij,一手为si股,且每天最多能持有ki手这支股票,且所持股票的总手数不能超过k,问你m天后最多能得到的钱(最后一天结束时不能持有任何股票),并打印路径。 思路:一看数据范围,很容易想到是状压。我的思路是开d[ i ][ j ] 表示前i天手上每支股票的手数为j,则

沉溺的专栏 1426

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

STM32F407中文手册

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

【恒相电子画册】项目使用unxt框架发布上线后,报内存溢出,页面显示502问题

在发布【恒相电子画册】官网上线后,第二天早晨来上班,发现【恒相电子画册】官网无法访问,报出502错误,服务器日志报出内存溢出,服务自己退出了。经过多方面的测试,一下方式可以用; 一、报错截屏 二、找到项目中package.json文件 三、找到配置页中scripts项 "scripts": { "dev": "nuxt", "build": "nuxt build", "start": "nuxt start", "generate": "nuxt gene

gamerre的博客 1329

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Nuxt详解+案例

Nuxt1. Nuxt.js 概述1.1 我们一起做过的SPA1.2 什么是SEO1.3 什么是SSR技术1.4 SPA和SSR对比1.5 什么是Nuxt.js2 入门案例2.1 create-nuxt-app 介绍2.2 安装2.3 启动2.4 访问3. 目录结构3.1 目录3.2 别名4 路由4.1 路由概述4.2 基础路由4.3 动态路由4.4 动态命名路由4.5 默认路由4.6 嵌套路由(懂就????)4.7 过渡动效(了解就????)4.7.1 全局过渡动效设置4.7.1 自定义动画 1. Nux

M_wzz的博客 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Nuxt入门总结

Nuxt入门总结 一、nuxt简介及安装 Nuxt.js 官方介绍: Nuxt.js 是一个基于 Vue.js 的通用应用框架。通过对客户端/服务端基础架构的抽象组织,Nuxt.js 主要关注的是应用的 UI 渲染。我们的目标是创建一个灵活的应用框架,你可以基于它初始化新项目的基础结构代码,或者在已有 Node.js 项目中使用 Nuxt.js,Nuxt.js 预设了利用 Vue.js 开发服务端渲染的应用所需要的各种配置。作为框架,Nuxt.js 为 客户端/服务端 这种典型的应用架构模式提供了许多有用

qq_46114837的博客 8882

nuxt的基本简述

一、什么是nuxt Nuxt.js 是一个基于 Vue.js 的通用应用框架,一个用于Vue.js 开发SSR应用的一站式解决方案。它的优点是将原来几个配置文件要完成的内容,都整合在了一个nuxt.config.js,封装与扩展性完美的契合。 二、为什么选用nuxt(摘自 https://www.nuxtjs.cn ) 1、模块化 Nuxt 基于一个强大的模块化架构。你可以从 50 多个模块中进行选择,让你的开发变得更快、更简单。支持 PWA 、添加谷歌分析到你的网页或生成网站地图,这些功能都无需重新

xiaodouxuan11的博客 8457

UVALive-3683 A Scheduling Problem(treedp)

题意: 有n(nB表示A必须在B之前完成,A-B表示A和B不能在同一天晚上。输入保证约束图是将一颗树的一些边定向之后得到的。 分析:      这题好神,我一开始根据题目的提示想了个错误的贪心,然后疯狂WA了一天。     我一开始错误的贪心是认为对于原图最长链k大于2的情况,答案为k+1当且仅当只有一个无向边定向后参与入了新的最长链的构造,于是我一开始的做法就是特判k = 2的情况

WZJRJ28 877

NUXT的项目的优点

NUXT的项目的优点 1.NUXT是什么? Nuxt.js简单的说是Vue.js的通用框架,最常用的就是用来作SSR(服务器端渲染)。 首先说下 SSR,最近很热的词,意为 Server Side Rendering(服务端渲染),目的是为了解决单页面应用的 SEO 的问题,对于一般网站影响不大,但是对于论坛类,内容类网站来说是致命的,搜索引擎无法抓取页面相关内容,也就是用户搜不到此网站的相...

饮冰十年的博客 2万+

初次接触nuxt.js

Nuxt.js是一个基于vue.js的通用应用框架。通过对客户端/服务端基础架构的抽象组织,Nuxt.js主要关注的是应用的UI渲染。 特性 基于Vue.js 自动代码分层 服务端渲染 强大的路由功能,支持异步数据 静态文件服务 ES6/ES7语法支持 打包和压缩JS和CSS HTML头部标签管理 本地开发支持热加载 集成ESLint 支持各种样式预处理器:SASS,less,Stylus等等...

curry_zhao的博客 2220

nuxt.js

1 nuxt.js介绍 nuxt.js是vue 服务器端渲染(SSR)框架。服务器端渲染与单页面相比的优点在于: 1 利于SEO搜索引擎检索 2 减少首次响应时间 2 Hello World 2.1 先前条件:已经安装完毕node 2.2 安装vue脚手架工具(vue-cli): 命令行 输入 npm i vue-cli -g 2.3 初始化项目 输入 v...

宋光暖的博客 1844

一起学下nuxt.js(上)

Nuxt.js通用 vue.jsSSRSSR:服务器端 VUE渲染成HTML返回浏览器SEO:VUE SPA(单页)新闻搜索引擎比较SPA加载较快因为新闻博客都需要搜索引擎抓取内容,大量的流量来自于服务器端的渲染如果使用vue制作该类网站的话那么有可能只能抓取到首页,那么我们就需要使用服务器端端的渲染SSR来进行网站的搭建。以前的J2EE和PHP也是服务器端渲染但是后来因为大前端的趋势SPA势不可...

jackyfgh的博客 7116

使用nuxt项目总结

现在下午三点,电脑太卡,项目根本运行不起来。 初次接触vue是在上一家公司,做的是SPA单页面应用。习惯的模式是前后端分离。 最近入职的新的公司,说技术采用nuxt渲染,自己就着手简单准备了一下,开始了征程。 之前的团队,因为做的是一个产品,用之前的老大的话说就是做一个自己的产品。团队分工还是很明确的,说实话没有单独配置过项目,初次尝试还是很心酸的 入职后,简单学习了一下nuxt的知识,接...

curry_zhao的博客 4711

nuxt 简介

1.是什么?Nuxt.js简单的说是Vue.js的通用框架,最常用的就是用来作SSR(服务器端渲染)。2.为什么?vue开发的SPA(单页应用)不利于搜索引擎的SEO优化。3.适用于:Nuxt.js适合作新闻、博客、电影、咨询等需要搜索引擎提供流量的项目。4.优点:基于 Vue.js自动代码分层服务端渲染强大的路由功能,支持异步数据静态文件服务ES6/ES7 语法支持打包和压缩 JS 和 CSSH...

weixin_42437900的博客 1万+

webpack4配置之——26:postcss-loader遇到的坑

如果你喜欢这系列的文章,欢迎star我的项目,源码地址,点击这里 postcss.config.js 文件的数据格式问题 在我配置vue项目时,需要用vue-loader配合postcss-loader做配置时,发现了本项目存在的一个问题: 我在postcss.config.js中配置了parser:'postcss-scss',这里在未配置vue-loader之前,只有css,scss,less...

kevin的博客 1万+
上一篇: Gym - 100502 G - Outing
下一篇: codeforces 782B The Meeting Place Cannot Be Changed
overload1997
博客等级 码龄11年 328粉丝 210原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值