Contest3070 - 计科2101~2104算法设计与分析上机作业05

news2024/11/24 8:34:06

问题 A: 最小平均等待时间

题目描述

有n个顾客同时在等待一项服务,顾客i需要的服务时间为ti,1≤i≤n。要安排一个服务次序使得平均等待时间最小(平均等待时间是n个顾客等待服务时间的总和除以n)。请编写算法,计算最小平均等待时间。

输入

第一行为测试用例个数m,m≤1000。 第二行开始为m个测试用例,每个测试用例由一组空格间隔的整数组成,第一个整数n为顾客的人数,后面n个整数为每个顾客需要的服务时间t,0<m≤1000,0<t≤1000。

输出

对每个测试用例,输出最小平均等待时间的整数部分(舍去小数部分),每个输出占一行。

样例输入 复制

2
5 15 9 3 14 3
10 13 3 12 9 6 9 1 91 44 32

样例输出 复制

10
36

欸,这不就是短作业优先的调度算法嘛

#include<bits/stdc++.h>
using namespace std;
 
int main() {
    int t;
    cin>>t;
    while(t--){
    
	int n;
	cin>>n;
	int a[n];
	for(int i=0; i<n; i++)
		cin>>a[i];
	sort(a,a+n);

	int sum=0;
	int ans=0;
	for(int i=1; i<n; i++) {
		sum+=a[i-1];
		ans+=sum;
	}
	cout<<ans/n<<endl;
}
	return 0;
}

 问题 B: 最少货币支付问题

题目描述

现行的货币体系为(1、2、5、10、20、50、100),请设计算法,计算要用最少的货币数支付指定金额N,每种货币需要使用的数量。

输入

第一行为测试用例个数n,n≤1000。 后面n行,每行为一个测试用例,每个测试用例为一个大于0的整数目标金额m,0≤m≤10000。

输出

对每个测试用例,输出一行由空格间隔的7个整数,分别表示1元、2元、5元、10元、20元、50元、100元所使用的数量。

样例输入 复制

2
15
189

样例输出 复制

0 0 1 1 0 0 0 
0 2 1 1 1 1 1 

 

#include<bits/stdc++.h>
int main()
{
	int n,N;
	scanf("%d",&N);
	while(N--)
	{
		int a=0,b=0,c=0,d=0,e=0,f=0,g=0;
		scanf("%d",&n);
		while(n>=100)
		{
			g=g+1;
			n=n-100;
		}
		while(n>=50&&n<100)
		{
			f=f+1;
			n=n-50;			
		}
		while(n>=20&&n<50)
		{
			e=e+1;
			n=n-20;			
		}
		while(n>=10&&n<20)
		{
			d=d+1;
			n=n-10;			
		}
		while(n>=5&&n<10)
		{
			c=c+1;
			n=n-5;			
		}
		while(n>=2&&n<5)
		{
			b=b+1;
			n=n-2;			
		}
		if(n>0&&n<2)
		{
			a=1;
		}
		printf("%d %d %d %d %d %d %d\n",a,b,c,d,e,f,g);
	}
 } 

问题 C: 活动安排

题目描述

样例输入 

4
1 3
4 6
2 5
1 7

样例输出 

2

提示

1≤n≤1000

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define INF 0x3f3f3f3f
struct ac {
    int start;
    int end;
};

bool cmp(ac a, ac b){
    return a.end < b.end;
}

int main(){
    int n;
    cin >> n;
    ac a[1005];
    for (int i = 0; i < n; i++){
        cin >> a[i].start >> a[i].end;
    }
    sort(a, a + n, cmp);
    int ans = 1;
    int k = a[0].end;
    int loc = 0;
    for (int i = 1; i < n; i++){
        if (a[i].start >= a[loc].end){
            ans++;
            k=a[i].end;
            loc = i;
        }
    }
    cout << ans << endl;
}

 问题 D: 数列极差

 

题目描述

小源的老师在黑板上写了一个由n个正整数组成的数列,要求小源进行如下操作:每次擦去其中的两个数a和b,然后在数列中加入一个数 a*b+1,如此下去直至黑板上剩下一个数为止,在所有按这种操作方式最后得到的数中,最大的为max,最小的为min, 则该数列的极差定义为 M=max-min.
由于小源忙于准备期末考试,现请你帮助她,对于给定的数列,计算出相应的极差M。

输入

第一行为一个正整数n表示正整数序列的长度;
在接下来的n行中,每行输入一个正整数。
接下来的一行有一个0,表示数据结束。

输出

输出只有一行,为相应的极差d。

样例输入 复制

3
1
2
3
0

样例输出 复制

2

提示

对于全部数据,0≤n≤50000,保证所有数据计算均在 32 位有符号整数范围内。

 

#include <bits/stdc++.h>
#define rush() int T;cin>>T;while(T--)
#define go(a) while(cin>>a)
#define ms(a,b) memset(a,b,sizeof a)
#define E 1e-8
#define debug(a) cout<<"*"<<a<<"*"<<endl
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);

using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<double,double> Pair;
const int inf=0x3f3f3f3f;
const int N=1e4+5;
 
    int n,m,t;
    int i,j,k;
    //int a[N];
    priority_queue<int,vector<int>,greater<int> >maxx;
    priority_queue<int,vector<int>,less<int> >minn;
int main()
{
    IOS;
    while(cin>>n){
        for(i=0;i<n;i++){
            int x; cin>>x;
            maxx.push(x); minn.push(x);
        }
        int a,b;
        while(maxx.size()>1){
            a=maxx.top(); maxx.pop();
            b=maxx.top(); maxx.pop();
            maxx.push(a*b+1);
        }
        while(minn.size()>1){
            a=minn.top(); minn.pop();
            b=minn.top(); minn.pop();
            minn.push(a*b+1);
        }
        cout<<maxx.top()-minn.top()<<endl; break;
    }
    return 0;
}

 问题 E: 钓鱼

题目描述

在一条水平路边,有n个钓鱼湖,从左到右编号为1,2,…,n。庄dalao有H个小时的空余时间,他希望利用这个时间钓到更多的鱼。他从1出发,向右走,有选择的在一些湖边停留一定的时间(是5分钟的倍数)钓鱼。最后在某一个湖边结束钓鱼。庄dalao从第i个湖到第i+1个湖需要走5×Ti分钟路,还测出在第i个湖停留,第一个5分钟可以钓到Fi条鱼,以后每再钓5分钟,可以钓到的鱼量减少Di,若减少后的鱼量小于0,则减少后的鱼量为0。为了简化问题,庄dalao假定没有其他人钓鱼,也没有其他因素影响他钓到期望数量的鱼。请编程求出庄dalao最多能钓鱼的数量。

输入

第一行一个整数n,表示湖的个数,不大于25
第二行一个整数H,表示庄dalao的空闲时间,不大于20
第三行有n个整数,依次表示每个湖第一个5分钟能钓到鱼的数量 ,不大于100
第四行有n个整数,依次表示以后的每5分钟钓鱼数量比前一个5分钟钓鱼数量减少的数量
第五行有n-1个整数,Ti表示由第i个湖到第i+1个湖需要花5×Ti分钟的路程
保证在int以内

输出

输出只有一行,表示庄dalao最多能钓鱼的数量。

样例输入 复制

3
1
4 5 6
1 2 1
1 2

样例输出 复制

35

提示

#include <bits/stdc++.h>
#define rush() int T;cin>>T;while(T--)
#define go(a) while(cin>>a)
#define ms(a,b) memset(a,b,sizeof a)
#define E 1e-8
#define debug(a) cout<<"*"<<a<<"*"<<endl
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define s first
#define e second
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> Pair;
const int inf=0x3f3f3f3f;
const int N=1e3+5;
 
    int n,m,t;
    int i,j,k;
    int fish[N],d[N],dis[N];
    priority_queue< Pair >q;
 
int main()
{
    IOS; string s;
    int n;
    cin>>n;
    
        int t; cin>>t;  t*=60;
        for(i=1;i<=n;i++) cin>>fish[i];
        for(i=1;i<=n;i++) cin>>d[i];
        for(i=2;i<=n;i++)  cin>>dis[i];
 
        int ans=-1,waste=0;
        for(i=1;i<=n;i++){
            int maxx=0;
            for(j=1;j<=i;j++){
                q.push(make_pair(fish[j],j));
            }
            int rest=t-waste;
            while(rest>0&&q.top().first>0){
                Pair p=q.top(); q.pop();
                maxx+=p.first;
                p.first-=d[p.second];
                q.push(p);
                rest-=5;
            }
            ans=max(maxx,ans);
            waste+=dis[i+1]*5;
            while(!q.empty()) q.pop();
        }
        cout<<ans<<endl;
    
    return 0;
}

 问题 F: N后问题(回溯法)

题目描述

在N*N的类似国际象棋棋盘上,要放置N个王后,要求任两个王后之间不能互相攻击,也就是任两个王后不共线。 问有多少种摆放的方法?

输入

输入为一组整数,每行为一个整数n,n<=10,最后一行是一个0。

输出

对每个整数n(不包括结尾行的0),计算摆放王后的方法,并输出方案个数,每个输出占一行。

样例输入 复制

2
4
0

样例输出 复制

0
2
#include<iostream>
#include <cmath>
using namespace std;
int N;
int ans=0;
int colqueen[1000];
void NQueen(int k);
int main()
{
    while(cin >> N){
    ans=0;
    if(N==0)
        break;
    int k=0;
       NQueen(k);
       cout<<ans<<endl;
   }

    return 0;
}
void NQueen(int k)
{
    if(k==N)
    {
       ans++;
        return;
    }
    for(int i=0;i<N;i++)//列
    {
        int j;
        for(j=0;j<k;j++)//row
        {
            if(colqueen[j]==i||fabs(colqueen[j]-i)==fabs(k-j))
            {
                break;
            }
        }
        if(j==k)
        {
            colqueen[k]=i;
            NQueen(k+1);
        }
    }
}

 

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

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

相关文章

大文件上传接口响应超时

背景 开发了一个内容管理发布系统&#xff0c;在后台发布内容信息时&#xff0c;上传了一个较大的视频&#xff08;较大文件≥200M&#xff09;&#xff0c;以往未上传过如此大文件&#xff0c;然后出现报错 Status Code 413 问题&处理过程 1. status code&#xff1a;4…

如何在Linux使用 chattr 命令更改文件或目录的扩展属性?

在 Linux 操作系统中&#xff0c;chattr 命令用于更改文件或目录的扩展属性&#xff0c;包括可写性、可执行性和删除性等。本文将介绍 chattr 命令的使用方法以及常见的参数。 1. chattr 命令的基本语法 chattr 命令的基本语法如下&#xff1a; chattr [选项] [文件或目录]选…

论文阅读---《人类活动识别的准周期时间序列聚类》

论文地址&#xff1a;Quasi-Periodic Time Series Clustering for Human Activity Recognition | SpringerLink 相空间知识概念&#xff1a;相空间相关概念以及轨迹生成_末世灯光的博客-CSDN博客 摘要&#xff1a; 本文利用移动加速度计对时间序列中的周期信号进行分析&…

[python][学习]turtle.circle()函数

turtle.circle()函数 定义&#xff1a;turtle.circle(radius, extentNone) 作用&#xff1a;根据半径radius绘制extent角度的弧形 参数&#xff1a; radius &#xff1a;弧形半径 当radius值为正数时&#xff0c;圆心在…

斯坦福最新AI报告发布,12张图看懂AI现状

最近&#xff0c;斯坦福人工智能研究所&#xff08;HAI&#xff09;发布了2023年AI指数报告&#xff0c;提供了AI领域当前技术成就、政策趋势、经济影响等多方面的最新情况。 今天我们将报告最重要的12个结论精简出来&#xff0c;分享给大家。 ▍AI大模型不只是大这么简单 在…

JavaEE-轻松了解网络原理之TCP协议

目录 TCP协议TCP协议数据格式TCP原理确认应答超时重传连接管理三次握手四次挥手 滑动窗口流量控制拥塞控制延迟应答捎带应答面向字节流异常问题 TCP协议 TCP&#xff0c;即Transmission Control Protocol&#xff0c;传输控制协议. TCP协议数据格式 16位源端口号与16位目的端…

【工作小札】利用动态数据源实现Sass的一种思路(内含完整代码示例)

文章目录 1 楔子2 分析3 代码实现3.1 管理库关键库表设计3.2 租户库关键库表设计3.3 新建一个SpringBootWeb项目3.4 添加maven依赖3.5 创建初始化数据库工具类3.6 创建动态数据源配置类3.7 创建登录代码3.8 创建数据源元数据服务类3.9 创建saas服务基础父类 4 示例演示4.1 下载…

MultiHeadAttention多头注意力机制的原理

MultiHeadAttention多头注意力作为Transformer的核心组件&#xff0c;其主要由多组自注意力组合构成。 1. self-Attention自注意力机制 在NLP任务中&#xff0c;自注意力能够根据上下文词来重新构建目标词的表示&#xff0c;其之所以被称之为注意力&#xff0c;在于从上下文词…

【Spring6】| Spring6集成MyBatis3.5

目录 一&#xff1a;Spring6集成MyBatis3.5 第一步&#xff1a;准备数据库表 第二步&#xff1a;IDEA中创建一个模块&#xff0c;并引入依赖 第三步&#xff1a;基于三层架构实现&#xff0c;所以提前创建好所有的包 第四步&#xff1a;编写pojo 第五步&#xff1a;编写m…

【Redis数据库】异地公网远程登录连接Redis教程

文章目录 1. Linux(centos8)安装redis数据库2. 配置redis数据库3. 内网穿透3.1 安装cpolar内网穿透3.2 创建隧道映射本地端口 4. 配置固定TCP端口地址4.1 保留一个固定tcp地址4.2 配置固定TCP地址4.3 使用固定的tcp地址连接 转发自CSDN远程穿透的文章&#xff1a;公网远程连接R…

Java阶段二Day05

Java阶段二Day05 文章目录 Java阶段二Day05截至此版本可实现的流程图为V14UserControllerClientHandlerDispatcherServletHttpServletResponseHttpServletRequest V15DispatcherServletHttpServletResponseHttpServletRequest V16HttpServletRequestHttpServletResponse 反射JA…

SpringCloud整合AOP做日志管理

目录 1、前置知识2、步骤2.1、依赖2.2、自定义注解&#xff0c;用于注解式AOP2.3、定制切面类2.4、测试 1、前置知识 切面&#xff08;Aspect&#xff09;&#xff1a;官方的抽象定义为“一个关注点的模块化&#xff0c;这个关注点可能会横切多个对象”&#xff0c;在本例中&a…

超详细Redis入门教程——Redis命令(上)

前言 本文小新为大家带来 超详细Redis入门教程——Redis命令&#xff08;上&#xff09; 相关知识&#xff0c;具体内容包括Redis 基本命令&#xff0c;Key 操作命令&#xff0c;String 型 Value 操作命令&#xff0c;Hash 型 Value 操作命令&#xff0c;List 型 Value 操作命令…

快速搭建外卖配送服务:利用外卖系统源码实现

外卖配送服务已经成为了现代消费者生活的一部分&#xff0c;它不仅方便了消费者的用餐需求&#xff0c;也给商家提供了新的销售渠道&#xff0c;同时也为外卖配送员提供了更多的就业机会。为了满足这个市场的需求&#xff0c;外卖系统源码应运而生。 外卖系统源码是一个集成了…

第一章:数、式、方程与方程组

1.实数 1.内容概述 1.了解实数分类2.数轴3.相反数和倒数4.绝对值5.算数平方根相关概念及有关计算2.实数分类 3.实数的基本概念 1.数轴:规定原点、正方向和单位长度的直线叫做数轴2.相反数:绝对值相同而符号相反的两个数,互称相反数3.倒数:1除以任何数的商,我们叫做倒数,0…

超市购物系统【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设&#xff01;&#xff01;&#xff01; 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址&#xff1a;https://download.csdn.net/download/qq_50954361/87682510 更多系统资源库…

Jenkins ssh windows 部署 java程序

版权说明&#xff1a; 本文由博主keep丶原创&#xff0c;转载请保留该段内容在文章头部。 原文地址&#xff1a; https://blog.csdn.net/qq_38688267/article/details/130203785 文章目录 前言实现步骤1. windows下载安装ssh2. windows 安装 winsw2.1 下载 winsw2.2 配置winsw2…

Linux 0.11启动过程分析(一)

Linux 0.11 系列文章 Linux 0.11启动过程分析&#xff08;一&#xff09; Linux 0.11 fork 函数&#xff08;二&#xff09; Linux0.11 缺页处理&#xff08;三&#xff09; Linux0.11 根文件系统挂载&#xff08;四&#xff09; Linux0.11 文件打开open函数&#xff08;五&…

[oeasy]python0132_变量含义_meaning_声明_declaration_赋值_assignment

变量定义 回忆上次内容 上次回顾了一下历史 python 是如何从无到有的看到 Guido 长期的坚持和努力 编程语言的基础都是变量声明 python是如何声明变量的呢&#xff1f; 变量 想要定义变量首先明确什么是变量 变量就是数值能变的量英文名称 variable 计算机在内存中分配出…

SpringBoot Starter 作用及原理

本文会以 mybatis 为例&#xff0c;通过对比 mybatis-spring 和 mybatis-spring-boot-starter 代码示例&#xff0c;了解 Starter 的作用。并对 mybatis-spring-boot-starter 进行简单剖析&#xff0c;了解 Starter 原理。 下面还有投票&#xff0c;一起参与进来吧&#x1f44d…