武汉理工大学第四届ACM校赛(部分补题与写题)

news2024/11/15 15:44:48

开裂

目录

k-雇佣农民

题目描述

输入描述:

输出描述:

输入

输出

备注:

 小e的苹果树

 不降序列


k-雇佣农民

题目描述

Ly很喜欢星际争霸二这款游戏,但是他现在玩不到了。所以Ly现在只能做一个关于农民的题消磨时光。

开始时Ly没有任何农民,第i天白天Ly最多可以雇佣i个农民,Ly所雇佣的每个农民每天晚上可以生产出1块矿石。Ly想知道他雇佣的农民生产恰好n块矿石最少需要多少天以及雇佣农民的方案。

输入描述:

第一行包含一个非负整数n。

输出描述:

输出两行分别表示最少天数和购买方案。

第一行为一个整数t表示最少天数。

第二行包含用空格隔开的t个整数,第i个整数表示第i天白天雇佣农民的数量。如果有多种方案,输出在越早的时间雇佣农民尽量多的方案。

如果无解则直接只输出一个-1即可。

示例1

输入

5

输出

3
1 1 0

备注:

n<=10^15

思路:

不难发现,增长程度是1,3,6,10......因此,不妨假设每天都雇佣满,那么总贡献就会一直按照前面的累加,这样其实就能得出一共要雇佣几天出来。当雇佣天数出来之后,我们只需要去拼凑每天的雇佣人数就能得出答案,第i天的雇佣贡献是 (总天数-第i天 +1)* 当天雇佣人数;



#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<stack>
#include<string>
#include<algorithm>
#include<unordered_map>
#include<map>
#include<cstring>
#include <unordered_set>
//#include<priority_queue>
#include<queue>
#include<set>
#include<stdlib.h>
#define dbug cout<<"hear!"<<endl;
#define rep(a,b,c) for(ll a=b;a<=c;a++)
#define per(a,b,c) for(ll a=b;a>=c;a--)
#define no cout<<"NO"<<endl;
#define yes cout<<"YES"<<endl;
#define endl "\n"
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//priority_queue<int,vector<int>,greater<int> >q;
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll> PII;
typedef pair<long double,long double> PDD;

 ll  INF = 0x3f3f3f3f;
//const ll LINF=LLONG_MAX;
// int get_len(int x1,int y1,int x2,int y2)
// {
//   return (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1);
// }
const ll N = 2e6+ 10;
const ll mod =998244353;
ll t,n,m,x,y,ca;
 ll arr[N],brr[N],crr[N];
//  int h[N],ne[N],e[N],w[N],idx;



void fatchuan()
{	
	cin >> n;
	ll day = 0;
	ll ant = 0;
	ll val = 1;
	ll v = 1;
	while(ant <= n)
	{
		day ++;
		ant += val;
		v ++;
		val += v;
	}
	cout << day <<endl;
	rep(i,1,day)
	{
		cout << min( i, n / (day - i +1))<<' ';
		n -= (day - i + 1) * min( i, n / (day - i +1));
	}
}




int main()
{
    IOS;
    t=1;
    //scanf("%d",&t);
    //cin>>t;
    ca=1;
    while(t--)
    {
      fatchuan(); 
      ca++;
    }    
    return 0;
}

                                                                                                                                                                                                         

 小e的苹果树

 思路:

        通过优先队列来进行动态选择是否摘苹果

#include<bits/stdc++.h>
#define ll long long
#define lowbit(x) (x&(-x))
#define rep(x,a,b) for(int x=a;x<=b;x++)
#define pre(x,a,b) for(int x=a;x>=b;x--)
#define ac puts("Yes")
#define wa puts("No")
#define endl "\n"
#define pb push_back
#define pii pair<ll,ll>
#define de cout<<1;
#define mem(a,x) memset(a,x,sizeof a)
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
using namespace std;
const int mod1=998244353;
const int mod2=1e9+7;
const int N=3e5 + 10 + 60;
ll n, m, ans;
int number;
ll x[N];
void solve()
{
	cin >> n >> m;
    vector<int>p[n + 1];
    map<int, int>mp;
    rep(i, 1, n)
    {
        cin >> x[i];
        mp[x[i]] = i;//并不是按照顺序输入,因此,进行了类似离散处理
        ll num;
        cin >> num;
        rep(j, 0, num - 1)
        {
            ll y;
            cin >> y;
            p[i].push_back(y);
        }
        sort(p[i].begin(), p[i].end());//苹果高度也不是有序输入,输入之后进行排序
    }
    ll ans = 0;
    priority_queue<int>q;
    ll res = 0;
    ll last = 0;//当前位置
    for(auto i : mp)
    {
        ll x = i.first, y = i.second;// x 苹果树的位置 ,y 从0开始是第几个苹果树
        m -= (x - last);//cout<<m;
        last = x;
        while(m < 0 && q.size())//如果此时时间已经用完了,那就把时间还回去,这个苹果不摘了
        {
            m += q.top();
            q.pop();
            ans -- ;
            res = max(res, ans);
        }
        if(p[y].size())//判断是否存在,否则会re
        rep(j, 0, p[y].size() - 1)
        {
            
            if(m >= p[y][j]) m -= p[y][j], q.push(p[y][j]), ans ++, res = max(res, ans);
            else
            {
                if(q.size() > 0)
                if(q.top() > p[y][j]) m += q.top(), m -= p[y][j], q.pop(),q.push(p[y][j]);
            }
            res = max(res, ans);
        }
    }
    cout << res;
}
int main()
{
	IOS;
    int t;
	//cin >> t;
	t = 1;
	while(t -- )
	{
		number++;
		solve();
	}
	return 0;
}

                                                                                                                                                                                                        

 不降序列

思路:

 对于任意一个数,如果要修改使得权值尽可能的大,即要将它变为。这种操作下同删除这个数字的结果是一样的,因此我们只需要进行删除操作即可。利用即可,其中i表示了当前数的位置,j表示了当前总共的操作数。对于每次操作,我们删除当前位置之前的一个数。则状态转移方程为其中len为此时进行的操作数(如果len = 2 则删除前面两个数)
 



#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<stack>
#include<string>
#include<algorithm>
#include<unordered_map>
#include<map>
#include<cstring>
#include <unordered_set>
//#include<priority_queue>
#include<queue>
#include<set>
#include<stdlib.h>
#define dbug cout<<"hear!"<<endl;
#define rep(a,b,c) for(ll a=b;a<=c;a++)
#define per(a,b,c) for(ll a=b;a>=c;a--)
#define no cout<<"NO"<<endl;
#define yes cout<<"YES"<<endl;
#define endl "\n"
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//priority_queue<int,vector<int>,greater<int> >q;
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll> PII;
typedef pair<long double,long double> PDD;

 ll  INF = 0x3f3f3f3f;
//const ll LINF=LLONG_MAX;
// int get_len(int x1,int y1,int x2,int y2)
// {
//   return (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1);
// }
const ll N = 2e6+ 10;
const ll mod =998244353;
ll t,n,m,x,y,ca;
 ll arr[N],brr[N],crr[N];
//  int h[N],ne[N],e[N],w[N],idx;

ll dp[600][600];
void fatchuan()
{	
	ll k;
	cin >> n >> k;
	rep(i,1,n)
	{
		cin >> arr[i];
	}
	memset(dp,-1,sizeof(dp));
	dp[1][0] = 0;
	rep(i,2,n)
	{
		rep(j,0,k)
		{
			if(i - j < 2)continue;
			rep(k,0,j)
			{
				ll len = j - k;
				if(i - len >= 2)
				{
					dp[i][j] = max(dp[i][j] , dp[i - len - 1][j - len] + (ll)(arr[i] - arr[i - len - 1]) * (arr[i] - arr[i - len - 1]));
				}
			}
		}
	}
	ll ans =0;
	rep(i,0,k)
	{
		ans = max( ans, dp[n][k]);
	}
	cout<<ans;
}




int main()
{
    IOS;
    t=1;
    //scanf("%d",&t);
    //cin>>t;
    ca=1;
    while(t--)
    {
      fatchuan(); 
      ca++;
    }    
    return 0;
}

                                                                                                                                                                                                        

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/713358.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三、QPushButton的使用,信号和槽

QT从入门到实战学习笔记 一、QPushButton的创建二、中文要设置成UTF-8格式才不会乱码三、对象树1、验证被释放掉 四、QT窗口坐标系九、信号和槽---点击按钮关闭窗口1、查询signal信号的定义&#xff08;帮助文档&#xff09;2、搜索QWidget查找槽函数&#xff08;slot是槽的意思…

华为freebuds 5无线充电充不上电怎么办?

相信很多人都会遇到跟我一样的问题&#xff0c;华为FreeBuds 5无线充电充不进电是怎么回事&#xff1f;为此我专门整理了以下的经验&#xff0c;相信对大家有所帮助。 1. 充电时要把耳机盒保护套拆下来&#xff0c;耳机盒与充电底座之间不要有东西挡着。这样耳机盒充电时可以更…

jenkins的环境搭建

jenkins 环境 安装 我之前使用war安装、安装比较简单、就是jenkins的 对应的插件不能下载下来、后来发现是版本的问题、使用docker-compose 安装、jenkins安装 插件很容易安装下来 1、安装jdk 解压jdk 配置环境变量 #set java environment JAVA_HOME/usr/local/jdk1.8.0_281…

基于单片机和GSM短信模块的家庭防盗火灾安全报警系统

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;627短信 获取完整论文报告&#xff08;含无水印图片和代码&#xff09; 本系统主要由单片机和GSM短信模块组成&#xff0c;借助最可靠、最成熟的GSM移动网络&#xff0c;以最直观的中文短消息或电话形式&#xff0c;直接把…

392.04亿元?台积电公布下一代工艺发展路线图,2纳米2025 年投产

台积电近日在日本举办了一次研讨会&#xff0c;详细介绍了N3E工艺节点的最新进展和引人注目的性能提升。此外&#xff0c;台积电还公布了令人期待的下一代N2工艺的发展路线图。 台积电副总裁Kevin Zhang透露&#xff0c;公司正以迅猛速度发展&#xff0c;预计2022年的投资金额将…

360测试开发技术面试题目

目录 一、java方面 二、Linux方面 三、数据库方面 四、性能测试方面 五、HTTP协议方面 六、其他 总结&#xff1a; 最近面试了360测试开发的职位&#xff0c;将面试题整理出来分享~ 一、java方面 1、java重载和重写的区别 重载overloading 多个方法、相同的名字&#x…

CF578A(直线方程 + 数学) 1700

CF578A(直线方程 数学) 1700 有一条折线 &#xff0c; 这个折线经过这样一组点&#xff1a; (0,0) - (x,x) - (2x,0) - (3x,x) - (4x,0) - ....现给出折线上一点 &#xff0c; 求 x 的最小值 思路&#xff1a;我们不妨用解方程的思想 &#xff0c;先写出折线的方程&#xf…

AIGC-stable-diffusion系列1- stable-diffusion-webui

安装方法1&#xff0c;源码安装 参考 repo参考地址&#xff1a;https://github.com/AUTOMATIC1111/stable-diffusion-webui python下载地址&#xff1a;https://www.python.org/downloads/release/python-3106/ git下载地址&#xff1a;https://git-scm.com/download/win 官…

逻辑回归模型

目录 引言 逻辑回归的理论基础 逻辑回归的实践 实战案例&#xff1a;银行营销预测 超越逻辑回归 引言 我们在上一篇文章中讨论了线性回归模型&#xff0c;探讨了如何利用它来解决连续变量预测的问题。今天&#xff0c;我们将转向一种新的模型——逻辑回归&#xff0c;它用…

TIDB v7.1 reource control资源管控特性体验贴

作者&#xff1a; bert 原文来源&#xff1a; https://tidb.net/blog/60c87e38 TIDB v7.1 reource control资源管控特性体验贴 1. 使用场景&#xff1a; 定义&#xff1a;TIDB的资源管控 (Resource Control) &#xff0c;使用资源管控特性&#xff0c;将用户绑定到某个资源…

摇骰子设计与实现(uni-app微信小程序)

文章目录 摇骰子设计与实现准备工作实现步骤以及思路第一步&#xff1a;实现准备状态第二步&#xff1a;实现晃动中状态第三步&#xff1a;等待开起状态第四步&#xff1a;开启后状态部分优化 总代码 摇骰子设计与实现 手机摇一摇可以摇骰子&#xff0c;上划可查看结果&#x…

桥梁健康监测:时刻感知桥梁“脉搏”

随着交通量的不断增加&#xff0c;桥梁作为一种重要的交通基础设施&#xff0c;其安全性和可靠性面临着日益严峻的挑战。桥梁健康监测是保障桥梁安全和预防桥梁事故的重要手段&#xff0c;本文将介绍桥梁健康监测的意义、技术手段和应用案例。 一、桥梁健康监测的意义 保障交通…

解决React18+ts项目导入模块的声明报错

路径配置 项目路径别名的配置 ts对指向src的目录提示是不支持的 所以需要手动配置符号指向 在vite.config.ts import path from path export default defineConfig({plugins:[react()],resolve:{alias:{"":path.resolve(__dirname, ./src)}} })但这时path模块引入会…

阿里30K测试开发岗位面试过程

面试总结 a.测开岗考察内容与软开岗类似&#xff0c;难度相对较小 b.阿里是一面技术面试官协调推进面试流程&#xff0c;HR参与较少 c.遇到的面试官都很nice 一面 自我介绍项目C基础 C底层如何进行内存分配 C是面向对象的编程&#xff0c;类中默认的拷贝构造函数是浅复制…

使用 ANTMAN 工具替换 OceanBase 云平台节点

OceanBase 环境基本都会先安装 OCP 来部署、监控、运维数据库集群。但如果有机器过保等问题&#xff0c;就需要有平稳的 OCP 节点的替换方案。 作者&#xff1a;张瑞远 上海某公司 DBA&#xff0c;曾经从事银行、证券数仓设计、开发、优化类工作&#xff0c;现主要从事电信级 I…

旅游卡景区购票小程序开发定制

旅游业的蓬勃发展&#xff0c;越来越多的景区开始推出自己的旅游卡&#xff0c;以吸引更多的游客前来观光。同时&#xff0c;为了更加便捷地服务游客&#xff0c;许多景区也开始启用小程序来进行门票售卖和游客管理。针对这种情况&#xff0c;专业的小程序开发公司推出了定制旅…

机器学习-特征选择:如何使用相关性分析精确选择最佳特征?

一、引言 「特征选择」在机器学习中发挥着重要的作用&#xff0c;它的目标是从众多可用特征中挑选出最具预测能力的特征子集&#xff0c;以提高模型性能和泛化能力。然而&#xff0c;由于现实中的数据集通常具有大量特征和复杂的相关性&#xff0c;特征选择变得非常具有挑战性。…

[ 云计算 | AWS ] IAM 详解以及如何在 AWS 中直接创建 IAM 账号

本章节主要介绍 IAM 相关知识点以及在 AWS 控制台窗口如何创建一台 Amazon IAM 账号。 文章目录 一、什么是 IAM&#xff1f;二、IAM 常见种类2.1 EIAM2.2 CIAM2.3 云厂商 IAM 三、账号&#xff08;Account&#xff09;三户模型 四、认证&#xff08;Authentication&#xff09…

java使用Tess4J实现OCR图片文字识别

目录 介绍一、maven如下二、下载语言模型1.下载语言模型2.百度云下载 三、测试1.测试代码2.测试图片3.效果 介绍 Tess4J 是 Tesseract OCR 的 java api 实现库&#xff0c;你可以通过 java 调用来轻松的实现图片识别并提取文字&#xff0c;也就是 OCR 图片提取文字技术。 Tes…

黑客是什么?想成为黑客需要学习什么?

什么是黑客 在《黑客辞典》里有不少关于“黑客”的定义, 大多和“精于技术”或“乐于解决问题并超越极限”之类的形容相关。然而&#xff0c;若你想知道如何成为一名黑客&#xff0c;只要牢记两点即可。 这是一个社区和一种共享文化&#xff0c;可追溯到那群数十年前使…