首页 > 其他分享 >6450: levil与时间点 map

6450: levil与时间点 map

时间:2023-10-13 20:34:45浏览次数:33  
标签:opt map int -- levil 6450 数组 操作

描述

 

levil有T个时间点会对一个长度未知数组进行操作,开始时数组里仅有一个元素x,接下来每个时间点,levil都会进行下面的操作中的一种。

操作一:输出当前数组中最大元素的最大因子。

操作二:将一个新的数y加入数组。

操作三:输出数y在数组中有几个。

操作四:将数y从数组中删除一个。

但是levil又不想这个数组里的元素特别多,所以从开始到结束,插入数组的数的个数最多只会有103个。

数字n本身不算自己的因子,1算自己的因子;特别的,如果这个数是1,那么因子就是1。

 

 

输入

 

第一行,两个正整数T,x,分别代表T个时间点和数组的初始元素x(1 <= T <= 105,1 <= x <= 108)。

接下来T行,每行开始一个整数opt。

如果opt == 1.则执行操作一。

如果opt == 2.再输入一个数y(1 <= y <= 108),执行操作二。

如果opt == 3.再输入一个数y(1 <= y <= 108),执行操作三。

如果opt == 4.再输入一个数y(1 <= y <= 108),执行操作四。

数据保证删去的数都在数组中,且数组不会为空。

 

 

输出

 

对于每次查询输出一行。

 

 

样例输入

 

8 2
1
2 3
1
3 2
3 4
4 2
1
3 2

样例输出

 

1
1
1
0
1
0

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e3+10,inf = 0x3f3f3f3f;

int main()
{
    map<int,int>mp;
    int t,x; cin >> t >> x;
    mp[x]++;
    while(t--)
    {
        map<int,int>::iterator it;
        int op,y;
        scanf("%d",&op);
        if(op == 1)
        {
            it = --mp.end();
            //while(it->second == 0)it--;
            y = it->first;
            //cout << y << endl;
            int f = 0;
            for(int i = 2; i * i <= y; i++)
            {
                if(y % i == 0)
                {
                    f = 1;
                    cout << y / i << endl;break;
                }
            }
            if(!f)cout << 1 << endl;
        }
        else if(op == 2)
        {
            scanf("%d",&y);
            mp[y]++;
        }
        else if(op == 3)
        {
            scanf("%d",&y);
            if(mp[y]) cout << mp[y] << endl; 
            else cout << 0 << endl,mp.erase(y); 
        }
        else
        {
            scanf("%d",&y);
            mp[y]--;
        }
    }
    return 0;
}

 

 

标签:opt,map,int,--,levil,6450,数组,操作
From: https://www.cnblogs.com/jyssh/p/17763069.html

相关文章

  • 7249: 改变数字 map
    描述 给定n个整数,现在每次能改动一个整数,问最少需要多少次改动才能将它们改成全部相同。 输入 第一行为正整数n(n<=1000000)。第二行为n个整数(绝对值不超过109)。 输出 输出最少改动的次数。 样例输入 512125样例输出 3map大法好呀#include......
  • 5383: C++实验:STL之multimap
    描述  使用STL中的multimap记录用户的所有电话号码,yuyu想查询用户有多少个电话号码,crq则想查询时输出所有的号码。部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码。 C++intmain(){ multimap<string,string>sm; stringname,phone; intn; cin>>......
  • #Python中 (map、filter、reduce)这几个内置方法的用法
    1、map 映射l=[1,2,3,4,5]res=map(lambdax:x**2,l)print(list(res))>>>[1,4,9,16,25]注:此时的res必须使用list(res)否则只会返回一个对象 2、filter过滤l=[1,2,3,4,5]res=filter(lambdax:x>3,l)print(list(res))>>>[4......
  • Oracle索引之(b-tree、bitmap、聚集、非聚集)
    Oracle索引之(b-tree、bitmap、聚集、非聚集)一、B-TREE索引一个B树索引只有一个根节点,它实际就是位于树的最顶端的分支节点。可以用下图一来描述B树索引的结构。其中,B表示分支节点,而L表示叶子节点。对于分支节点块(包括根节点块)来说,其所包含的索引条目都是按照顺序排列的(缺省是......
  • 无涯教程-DBUtils - MapListHandler接口
    org.apache.commons.dbutils.MapListHandler是ResultSetHandler接口的实现,负责将ResultSet行转换为Maps列表,此类是线程安全的。MapListHandler-声明以下是org.apache.commons.dbutils.MapListHandler类的声明-publicclassMapListHandlerextendsAbstractListHandler......
  • ArcMap属性表汉字乱码的一种解决方案
      本文介绍ArcMap软件打开图层的属性表后,出现字段中汉字乱码情况的解决方法。  有时在使用ArcMap软件时,会发现一些图层的属性表中,原本应该是中文的字段却出现乱码的情况;如下图所示,其中NAME99一栏应该是图层中各个要素对应的汉语名称,但却出现了数字、符号等乱码。  针对这......
  • leaflet使用heatmap.js出现heatmap.js:527 Uncaught TypeError: Cannot assign to rea
    一、问题背景问题是这样发生的,因为项目中需要实现热力图的功能,所以使用了第三方的库heatmap.js。但是在一些浏览器中使用它时,会出现这个错误:>UncaughtTypeError:Cannotassigntoreadonlyproperty'data'ofobject'#<ImageData>'出现问题的原因是因为img.data=im......
  • Scala学习(三)Map与Tuple
    1、创建map的方式Map("zhangsan"->18,"LiSi",20)创建一个不可变的mapMap(("zhangsan",18),("LiSi",30))不可变vals=scala.collection.mutable.HashMap("zhangsan"->30)可变maps("zhangsan")=50重新赋值vals=scala.collecti......
  • map 简单梳理【GO 基础】
    〇、map简介map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。其中键可以是任何类型,但值必须是可比较的类型(如整数、字符串、布尔值等)。一、map的定义和使用1.1map的定义map[KeyType]ValueType//KeyType:表示键的类型//Value......
  • golang map json 结构体
    要将JSON转换为Go结构体,您可以使用json.Unmarshal()函数。首先,您需要定义一个与JSON数据结构匹配的Go结构体,然后使用json.Unmarshal()将JSON数据解码为该结构体。以下是一个示例:假设有如下JSON数据:{"name":"JohnDoe","age":30,"email":"[email protected]"}......