剪绳子set遍历

2024-02-15 23:20
文章标签 遍历 set 绳子

本文主要是介绍剪绳子set遍历,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原题:登录—专业IT笔试面试备考平台_牛客网牛客网是互联网求职神器,C++、Java、前端、产品、运营技能学习/备考/求职题库,在线进行百度阿里腾讯网易等互联网名企笔试面试模拟考试练习,和牛人一起讨论经典试题,全面提升你的技术能力icon-default.png?t=M276https://ac.nowcoder.com/acm/contest/30532/L题目:
Wiki是电视节目《超级大脑》的忠实粉丝,几乎每期必看。最近节目组发明了一个新的记忆游戏,Wiki积极报名,居然成功入选了!

新的游戏规则很简单,但需要选手有超强的数字记忆能力。主持人会取来一根十米长的绳子,将它水平粘在一块平板上,则此时这根绳子可以视为一根单位为米的坐标轴,左侧一端为0,右侧一端为10。然后每隔10秒种主持人会发布一条命令,命令分两种,"剪"和"答"。如果主持人命令"剪",现场工作人员会随机在绳子上任意剪一刀(但他当然不会去剪已经剪过的地方或者剪绳子的两端)。每次剪完后绳子依然像最初那样固定在平板上,只不过剪断的地方多了一道痕迹,并且绳子的段数增加了1。此时在平板上的测量仪器会对这一次剪断位置的坐标进行测量,并将该坐标显示在屏幕上,直到主持人喊出下一次命令才会消失。由于这台仪器十分精密,它的每次测量都会精确到小数点后五位。如果主持人喊出"答",则屏幕上会随机显示一个坐标(也是保留五位小数),要求Wiki在10秒内答出该坐标目前所在的一段绳子有多长。这里保证屏幕上的数字不会出现刚才剪断过的位置坐标。

输入:
第一行输入一个正整数q,表示主持人有q个命令。
接下来q行,每行输入一条命令。命令有两种格式:

1. C f:f是一个浮点数,且严格保留五位小数。该命令表示主持人要求现场工作人员剪绳子,并且屏幕上显示剪断位置的坐标为f;

2. A f:f是一个浮点数,且严格保留五位小数。该命令表示屏幕上显示了一个数f,要求Wiki回答出f所在的一段绳子长度为多少。这里要求"一段绳子"左右端点都是被剪断过的位置或者是初始绳子的左右端点之一(即坐标0.00000和10.00000的位置),且这一段绳子内部没有被剪断过的地方。

输出:

对于每个"答"的要求,要求输出屏幕显示的坐标所在的一段绳子的长度,保留五位小数。

代码

#include <bits/stdc++.h>
using namespace std;

set<float> p;
set<float>::iterator iter;
string z;
float a;
int n;

void find_set(float a)
{
    bool bol = 0;
    if(a == 10)
    {
        iter = p.end();
        iter --;
        iter --;
        printf("%.5f\n",10 - *iter);
    }
    if(a == 0)
        bol = 1;
    for(iter = p.begin();iter != p.end();iter ++)
    {
        if(iter != p.begin() && bol)
        {
            printf("%.5f\n",*iter);
            break;
        }
        if(*iter > a)
        {
            float b = *iter;
            iter --;
            printf("%.5f\n",b - *iter);
            iter ++;
            break;
        }
    }
    
}

int main()
{
    std::ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
    
    p.insert(0);    //    初始端点需要特判
    p.insert(10.0);
    
    cin >> n;
    
    while(n --)
    {
        cin >> z >> a;
        
        if(z[0] == 'C')    // C 剪
            p.insert(a);
        else             // A 询问
        {
            find_set(a);
        }
    
    }
    return 0;
}

这篇关于剪绳子set遍历的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

poj 3050 dfs + set的妙用

题意: 给一个5x5的矩阵,求由多少个由连续6个元素组成的不一样的字符的个数。 解析: dfs + set去重搞定。 代码: #include <iostream>#include <cstdio>#include <set>#include <cstdlib>#include <algorithm>#include <cstring>#include <cm

leetcode105 从前序与中序遍历序列构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3/ \9 20/ \15 7   class Solution {public TreeNode buildTree(int[] pr

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

多路转接之select(fd_set介绍,参数详细介绍),实现非阻塞式网络通信

目录 多路转接之select 引入 介绍 fd_set 函数原型 nfds readfds / writefds / exceptfds readfds  总结  fd_set操作接口  timeout timevalue 结构体 传入值 返回值 代码 注意点 -- 调用函数 select的参数填充  获取新连接 注意点 -- 通信时的调用函数 添加新fd到

PHP实现二叉树遍历(非递归方式,栈模拟实现)

二叉树定义是这样的:一棵非空的二叉树由根结点及左、右子树这三个基本部分组成,根据节点的访问位置不同有三种遍历方式: ① NLR:前序遍历(PreorderTraversal亦称(先序遍历)) ——访问结点的操作发生在遍历其左右子树之前。 ② LNR:中序遍历(InorderTraversal) ——访问结点的操作发生在遍历其左右子树之中(间)。 ③ LRN:后序遍历(PostorderT

Android set Tag, findViewWithTag使用

设置了tag为“principal”的view ImageView principal = (ImageView) findViewById(R.id.imagen_home_0);principal.setTag("principal"); 在其它地方获取,获取已经设置了tag为“principal”的view LayoutInflater inflater = LayoutInflate

react笔记 8-17 属性绑定 class绑定 引入图片 循环遍历

1、绑定属性 constructor(){super()this.state={name:"张三",title:'我是一个title'}}render() {return (<div><div>aaaaaaa{this.state.name}<div title={this.state.title}>我是一个title</div></div></div>)} 绑定属性直接使用花括号{}   注

C++ STL关联容器Set与集合论入门

1. 简介 Set(集合)属于关联式容器,也是STL中最实用的容器,关联式容器依据特定的排序准则,自动为其元素排序。Set集合的底层使用一颗红黑树,其属于一种非线性的数据结构,每一次插入数据都会自动进行排序,注意,不是需要排序时再排序,而是每一次插入数据的时候其都会自动进行排序。因此,Set中的元素总是顺序的。 Set的性质有:数据自动进行排序且数据唯一,是一种集合元素,允许进行数学上的集合相

Eclipse或MyEclipse中Java Working Set管理项目

随着学习JAVA的时间的越来越久,项目也越来越多,Eclipse或MyEclipse界面中显示一堆! 每次工作使用到的项目肯定不会太多...... 每次从这么大数量的工程当中找到自己要使用的, 必须大规模的滚动滚动条...... 图片一   Project Explorer中:    图片二:Package Explorer中: 这样就好找很多了,分类放!