ccf 201706-1 打酱油 201706-2 公共钥匙盒 c++ ac

2023-12-26 12:08

本文主要是介绍ccf 201706-1 打酱油 201706-2 公共钥匙盒 c++ ac,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

 

一、201706-1 打酱油

AC代码

二、201706-2 公共钥匙盒

思路:

 

AC代码


一、201706-1 打酱油

AC代码

#include <bits/stdc++.h>
using namespace std;
int main()
{int n;int sum=0;int p;cin>>n;p=n/10;sum=p;while(p>2){if(p/5){sum+=2*(p/5);p-=p/5*5;}else if(p/3){sum+=p/3;p-=p/3*3;}}cout<<sum;return 0;
}

二、201706-2 公共钥匙盒

思路:

因为钥匙借还时间不冲突,所以可以把开始时间和结束时间分开存储。对借的时间从小到大排序,还的时间也排序,对钥匙的标记判断钥匙是否借还。

对于同一把钥匙还钥匙的时间肯定比借钥匙的时间晚,所以判断结束的条件就是还完最后一把钥匙。

按照时间顺序对借还的钥匙一起排序,进行操作,操作如下:

当借钥匙的的时候查找一下钥匙的位置,然后把那个位置置空

当还钥匙的时候,从左向右找空位置,找到了就放回去。

 

 

AC代码

 

#include <bits/stdc++.h>using namespace std;struct DATA
{int w;int s;
};
struct DATA1
{int w;int c;
};
bool cmp(DATA a,DATA b) 
{return a.s<b.s||(a.s==b.s&&a.w<b.w);
}
bool cmp1(DATA1 a,DATA1 b) 
{return a.c<b.c||(a.c==b.c&&a.w<b.w);
}int main()
{int n,k;int w,s,c;vector<DATA> sta(0);vector<DATA1> sta1(0);DATA data;DATA1 data1;int a[1005]={0};//表示钥匙的位置, 0代表没有cin>>n>>k;for(int i=0;i<n;i++){a[i]=i+1;//初始化钥匙的位置 }for(int i=0;i<k;i++){cin>>w>>s>>c;data.w=w;data.s=s;data1.w=w;data1.c=c+s;sta.push_back(data);sta1.push_back(data1);}sort(sta.begin(),sta.end(),cmp);sort(sta1.begin(),sta1.end(),cmp1);vector<DATA>::iterator it=sta.begin();vector<DATA1>::iterator it1=sta1.begin();	while(it1!=sta1.end()){if(it==sta.end()){			for(int i=0;i<n;i++){if(a[i]==0)//送回钥匙 {a[i]=it1->w;it1++; //继续下个那要是 break; }}}else if(it->s  <  it1->c)  //判断拿走的时间  早于  送还的时间 {for(int i=0;i<n;i++){if(a[i]==it->w){a[i]=0;//把钥匙拿走 it++; //继续下个那要是 break;}}} else if(it->s >= it1->c)//判断拿走的时间  等于  送还的时间 {for(int i=0;i<n;i++){if(a[i]==0)//先送回钥匙 {a[i]=it1->w;//吧钥匙拿走 it1++; //继续下个那要是 break; }}}} for(int i=0;i<n;i++){cout<<a[i]<<" ";}return 0;
}

3

4

5

这篇关于ccf 201706-1 打酱油 201706-2 公共钥匙盒 c++ ac的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/539336

相关文章

Win32下C++实现快速获取硬盘分区信息

《Win32下C++实现快速获取硬盘分区信息》这篇文章主要为大家详细介绍了Win32下C++如何实现快速获取硬盘分区信息,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实现代码CDiskDriveUtils.h#pragma once #include <wtypesbase

SpringBoot自定义注解如何解决公共字段填充问题

《SpringBoot自定义注解如何解决公共字段填充问题》本文介绍了在系统开发中,如何使用AOP切面编程实现公共字段自动填充的功能,从而简化代码,通过自定义注解和切面类,可以统一处理创建时间和修改时间... 目录1.1 问题分析1.2 实现思路1.3 代码开发1.3.1 步骤一1.3.2 步骤二1.3.3

C++ Primer 标准库vector示例详解

《C++Primer标准库vector示例详解》该文章主要介绍了C++标准库中的vector类型,包括其定义、初始化、成员函数以及常见操作,文章详细解释了如何使用vector来存储和操作对象集合,... 目录3.3标准库Vector定义和初始化vector对象通列表初始化vector对象创建指定数量的元素值

C++实现回文串判断的两种高效方法

《C++实现回文串判断的两种高效方法》文章介绍了两种判断回文串的方法:解法一通过创建新字符串来处理,解法二在原字符串上直接筛选判断,两种方法都使用了双指针法,文中通过代码示例讲解的非常详细,需要的朋友... 目录一、问题描述示例二、解法一:将字母数字连接到新的 string思路代码实现代码解释复杂度分析三、

C++一个数组赋值给另一个数组方式

《C++一个数组赋值给另一个数组方式》文章介绍了三种在C++中将一个数组赋值给另一个数组的方法:使用循环逐个元素赋值、使用标准库函数std::copy或std::memcpy以及使用标准库容器,每种方... 目录C++一个数组赋值给另一个数组循环遍历赋值使用标准库中的函数 std::copy 或 std::

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动