VJ个人周赛

news2024/12/25 9:14:01

A:模拟

 

题意:给定了N个任务,每个任务都有一个优先级(1~9),数字越大,优先级越高。将这些任务放入队列中,如果出队的元素(x),x的优先级不是最高的,那么就将x放入队尾,依次进行这种操作。再给定一个数字M,代表第几个任务,规定从下标0开始,且每一个任务的打印时间都为1,问要打印第M个任务,需要的时间是多少?(任务的出队和入队操作不计时) 

分析:这题的题意已经说的很明白了,模拟这一过程就行了

代码:

#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
#include<vector>
#define PII pair<int,int>
using namespace std;
const int N=110;
int a[N];

struct Node{
	int val,pos;
};

inline void solve(){
	int n,m;cin>>n>>m;
	queue<Node>q;
	for(int i=0;i<n;i++){
		cin>>a[i];
		Node ee;
		ee.val=a[i];ee.pos=i;
		q.push(ee);
	}
	sort(a,a+n,greater<int>());//从大到小记录一下任务的优先级:因为只有优先级最高的才会打印
	int ans=1,top=0;
	while(!q.empty()){
		Node cc=q.front();
		q.pop();
		if(cc.val==a[top]&&cc.pos!=m) ans++,top++;//如果满足打印条件,且不是目标任务
		else q.push(cc);//不满足打印条件,放入队尾
		if(cc.pos==m&&cc.val==a[top]) break;//满足打印目标任务,break
	}
	cout<<ans<<"\n";
}

int main(){
	int T;cin>>T;
	while(T--) solve();
}

B:哈密尔顿距离

题意:给一些点,而这些点是有规律的排列(如图),现在从一个点出发,遍历所有的点,最后回到起点,但是途中不能重复经过某些点,其实就是哈密尔顿回路。求最短路径。

结论:关于哈密尔顿回路有一个小规律,那就是当n.m至少有一个是偶数时,最短路径就是n*m。否则就是n*m-1+sqrt(2)。(读者有兴趣可以推一下哦,很简单的推理)

代码:

#include <iostream>
#include <cstdio>
#include<algorithm>
using namespace std;
 
int main(){
    int T;
    double n,m;
    scanf("%d",&T);
    int i=1;
    while(T--){
        scanf("%lf%lf",&n,&m);
        printf("Scenario #%d:\n",i++);
        if((int)m%2==0 ||(int)n%2==0) printf("%.2lf\n",m*n);
        else printf("%.2lf\n",n*m+0.41);
        printf("\n");
    }
}

C:博弈论

题意:有N堆石头,每堆石头数目在1到100之间,最多有10堆.两人分别取走石头.

取石头的规则是:每次只能从1堆中取,每次取走至少1个。

取过后还可以把这堆的石头任意分配到其它石子数不为0的堆上,当然也可以不分配。

问给定这些石头堆的情况,两人轮流取,谁取走最后一个石子谁胜利,问是先取的胜利还是后取的胜利.双方最优策略。

分析:这里可以从经典的石子游戏Nim进行推理:

ps:因为石子是不断减少的,所以不存在平局。

我们这里寻找必胜态

1:当石子只有一堆时:先手必胜

解释:因为,先手可以直接选择取完整堆石子。后手没有石子可取,即:先手必胜

2:当石子只有两堆,且两堆的数目相同时:后手必胜

解释:先手取后肯定不会分配石子,因为一旦分配,那么就只剩下一堆石子,后手必胜。

先手是聪明的,所以每次都会只取不分,然而,后手只需要模仿先手的操作,那么先手是肯定赢不了的。(给组样例:)

3:当石子只有三堆时:先手必胜

解释:可以通过2进行推出,先手可以取后再分,将三堆石子化成情况2,这样,后手就成了先手,因为后手必胜,所以先手必胜

4:当石子只有四堆时且可以分成两两相等的两堆时:后手必胜

解释:因为三堆是必胜态,所以只需要逼对方取完某一堆石子,那么自己就将获胜,当然两人都不是傻子,那么最后即将化为3堆的情况,一定是 1 1 1 1,谁取石子处于这种状态,那么必输

结论:当n为偶,且可以分成n/2对两两相等的石子时,先手必败,否则先手必胜

代码:

#include <iostream>
#include<algorithm>
using namespace std;
const int N=110;
int n;
int a[N];

int main(){
    while(cin>>n){
    	if(n==0) break;
    	for(int i=1;i<=n;i++) cin>>a[i];
    	if(n&1){
    		cout<<1<<"\n";continue;
		}
		bool ok=true;
		sort(a+1,a+1+n);
		for(int i=1,j=2;i<=n;i+=2,j+=2){
			if(a[i]!=a[j]) ok=false;
		}
		if(ok) cout<<"0\n";
		else cout<<"1\n";
    }
}

 D:规律

题意:一群小孩围成一个圈,老师顺时针发糖,分别每间隔0,1, 2, 3, 4……发一颗,问是否每个同学都有糖 

思路:数论:完全剩余系(本蒟蒻数论不好,所以不会推导,给读者推荐一篇推导的blog:

POJ 3372 Candy Distribution(数论)_v5zsq的博客-CSDN博客_poj candy

我的方法:手撸样例找规律

结论:只要是2的幂就为YES,否则为NO

代码:

#include <iostream>
#include<algorithm>
using namespace std;
const int N=110;
int n;
int a[N];

int main(){
    while(cin>>n){
    	if((n&(n-1))==0) cout<<"YES\n";
    	else cout<<"NO\n";
	}
}

E:简单数学题

题意:给出航线的长度,经济舱500公里以下算500公里,否则算实际里程。商务舱算实际里程×1.5。头等舱实际里程×2。根据给出的航班,求出总航线长

分析:具体看代码

ps:0代表着一个case的结束,0后应该输出结果。然后可以再输入下一个case,#代表整个程序的结束。

#include <cstdio>
#include <cstring>
 
int main(){
    int miles, ans;
    char ch;
    char from[100], to[100];
 
    ans = 0;
    while (scanf("%s", from), strcmp(from, "#") != 0){
        if(strcmp(from, "0") == 0){
            printf("%d\n", ans);
            ans = 0;
            continue;
        }
        scanf("%s %d %c\n", to, &miles, &ch);
        if (ch == 'F'){
            ans += miles * 2;
        }
        else if (ch == 'B'){
            ans += (int)(miles * 1.5 + 0.5);
        }
        else if (ch == 'Y'){
            if (miles < 500){
                ans += 500;
            }
            else{
                ans += miles;
            }
        }
    }
}

 

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

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

相关文章

从高级测试到测试开发有什么感悟

最近加入了新的团队&#xff0c;角色发生较大的转变&#xff0c;在这里分享一下自己的感受。 测试的划分 如果我们把产品的生产看成一个流水线的话&#xff0c;那么测试就是流水线上的一个重要岗位&#xff0c;把控着产品的质量。 当然&#xff0c;产品类型的不同&#xff0…

信息系统安全管理

信息系统安全是一个绕不开的话题。从事IT行业&#xff0c;不论何种角色&#xff0c;哪个工种&#xff0c;都需要有所了解。 一、信息系统安全策略 1、概述 信息系统安全策略是指对&#xff08;本单位&#xff09;信息系统的安全风险&#xff08;安全威胁&#xff09;进行有效…

小白学编程(js):通过按钮变换背景颜色

《JavaScript从入门到精通》【例9.1】 代码演示&#xff1a; <body><form class"form1" action"" name"form1" method"psot"><p><input type"button" name"Submit" value"变换背景&qu…

[附源码]计算机毕业设计基于Java的图书购物商城Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Linux常用环境配置及软件安装(持续更新)

1、jdk 1、下载jdk Linux安装包 把安装包放到自己定义的目录下 安装包网盘 提取码&#xff1a;n5hj 2、解压 解压安装包&#xff0c;输入命令&#xff1a; tar -xvf jdk-8u221-linux-x64.tar.gz 解压完成后会生成一个新文件 3、配置环境变量 编辑profile文件 vim /etc/p…

基于java+springboot+mybatis+vue+mysql的高校党务系统

项目介绍 本党务管理系统主要包括五大功能模块&#xff0c;即管理员模块、学生模块、积极分子模块、党员、党建组织。 &#xff08;1&#xff09;管理员模块&#xff1a;主要功能有&#xff1a;首页、个人中心、学生管理、学院管理、专业管理、班级管理、积极分子管理、党员管…

LeetCode HOT 100 —— 208. 实现 Trie (前缀树)

题目 Trie&#xff08;发音类似 “try”&#xff09;或者说 前缀树 是一种树形数据结构&#xff0c;用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景&#xff0c;例如自动补完和拼写检查。 请你实现 Trie类&#xff1a; Trie() 初始化前缀树对象。 vo…

postgresql_internals学习笔记(二)常规vacuum

一、 作用与原理 page pruning执行速度很快&#xff0c;但它们的作用范围毕竟只有单页、且不包含索引&#xff0c;因此&#xff0c;我们还需要更有效的清理机制。 常规vacuum是最常用的一种&#xff0c;作用范围可以是整张表&#xff0c;清理过期元组及索引项&#xff0c;并且不…

PS图层+移动工具(1)图层概念-拖动操作-移动工具基础

先打开ps软件 然后点击进入工作区 选择右上角文件 点击打开 随便选一个要操作的图片 然后看一下自己工作区右侧的 这个图层工具开了没有 如果没开 点击上方 窗口 将图层选项勾选上 这里可以看到 我们打开一个完整图片 他就只有一个图层 触发你打开的是PSD格式的图片 psd是ps…

【云计算与大数据技术】云交付模型、云部署模型、云计算优势与挑战、应用的讲解(超详细必看)

一、云交付模型 云计算主要分为三种交付模型&#xff0c;而且这三种交付模型主要是从用户体验的角度出发的&#xff0c;分别是软件即服务&#xff08;SaaS&#xff09;&#xff0c;平台即服务&#xff08;PaaS&#xff09;&#xff0c;基础设施即服务&#xff08;IaaS&#xf…

数据库建表的 15 个最佳实践方式

前言 对于后端开发同学来说&#xff0c;访问数据库&#xff0c;是代码中必不可少的一个环节。 系统中收集到用户的核心数据&#xff0c;为了安全性&#xff0c;我们一般会存储到数据库&#xff0c;比如&#xff1a;mysql&#xff0c;oracle等。 后端开发的日常工作&#xff…

string的模拟实现

目录 ​一、模拟实现中类的组织 二、默认成员函数 1.默认构造函数 2.拷贝构造函数 &#xff08;1&#xff09;传统写法——循规蹈矩 &#xff08;2&#xff09;现代写法——偷天换日 3.析构函数 4.赋值运算符重载 二、元素访问 三、容量操作 1.容量与有效数据 2.改…

SpringBootStarter技术:生产就绪与环境配置、实现自定义Starter

● Spring 官 方 Starter &#xff1a; 命 名 应 遵 循 spring-boot-starter-{name} 的 格 式 &#xff0c; 如 spring-boot-starter-web 作 为 SpringBoot Web模块的官方artifactId。 ● Spring 非 官 方 Starter &#xff1a; 命 名 应 遵 循 {name}-spring-bootstarter的格…

ModBus_RTU-上位机经RS485接口与PLC通信

目录&#xff1a; 一、预备知识 二、上位机经RS485接口与PLC通信 ---------------------------------------------------------------------------------------------------------------------- 一、预备知识 电力-ModBus_RTU通讯规约1 电力-ModBus_RTU通讯规约2 通信-R…

Java基于springboot+vue足球联赛管理系统

本足球联赛管理系统是针对目前足球联赛管理的实际需求&#xff0c;从实际工作出发&#xff0c;对过去的足球联赛管理系统存在的问题进行分析&#xff0c;完善用户的使用体会。采用计算机系统来管理信息&#xff0c;取代人工管理模式&#xff0c;查询便利&#xff0c;信息准确率…

字符串处理【后缀数组】 - 原理2 后缀数组

字符串处理【后缀数组】 - 原理2 后缀数组 在字符串处理中&#xff0c;后缀树和后缀数组&#xff08;Suffix Array&#xff09;都是非常有力的工具。 后缀数组是后缀树的一个非常精巧的替代品&#xff0c;比后缀树容易实现&#xff0c;可以实现后缀树的很多功能&#xff0c;时…

Jenkins

目录 一、什么是Jenkins 二、为什么需要使用持续集成工具 三、如何搭建jenkins服务 四、jenkins集成服务器上的JDK 五、jenkins集成git 5.1 jenkins所在的服务安装git 5.2 jenkins集成git 5.3 jenkins创建一个任务项 5.4 创建远程仓库 5.5 执行任务 六、jenkins集成maven…

[附源码]Python计算机毕业设计SSM基于的校园商城(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

人工智能写代码 !ChatGPT VScode 插件 真正打败AI人工智能的只能是AI人工智能自己。

前言&#xff1a; 真正打败你的只能是你自己。 真正打败程序员的只能是程序员自己。 真正打败AI人工智能的只能是AI人工智能自己。 人工智能写代码 &#xff01;上线3天&#xff0c;下载4万&#xff0c;ChatGPT中文版VSCode插件来了,程序员要失业了吗&#xff1f; 还没开始就遇…

[附源码]JAVA毕业设计医院挂号系统(系统+LW)

[附源码]JAVA毕业设计医院挂号系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&…