大一寒假集训(11)—map

1.查字典 nefu 1678

#include <bits/stdc++.h>
using namespace std;
map<string,int>q;
int main()
{int n;string ch1,ch;int x,y;cin>>n;for(int i=1;i<=n;i++){cin>>ch1>>x;q[ch1]=x;}cin>>y;for (int i=1;i<=y;i++){cin>>ch;cout<<q[ch]<<endl;}return 0;
}

2.保龄球-map nefu 1687

⭐️ 若加了ios::sync_with_stdio(false);还是tle,就将cout改成printf

#include <bits/stdc++.h>
using namespace std;
map<int,int>s;
int n,q;
int x;//瓶子数
int m;//要打倒的瓶子数
int main()
{ios::sync_with_stdio(false);cin>>n;for(int i=1;i<=n;i++){cin>>x;s[x]=i;}cin>>q;while (q--){cin>>m;printf("%d\n",s[m]);}return 0;
}

3.眼红的Medusa nefu 1686

⭐️此题与上一题的注意眼红的Medusa事项一样

#include <bits/stdc++.h>
using namespace std;
map<int,int>s;
const int N=1e5+10;
int n,m,j;
int n0[N],m0[N];
int ans;
int a[N];
int main()
{ios::sync_with_stdio(false);cin>>n>>m;for(int i=1;i<=n;i++)cin>>n0[i];for (int i=1;i<=m;i++){cin>>m0[i];s[m0[i]]=1;}ans=0;for (int i=1;i<=n;i++){if (s[n0[i]])//同时得两个奖a[++ans]=n0[i];}for(int i=1;i<=ans;i++)printf("%d ",a[i]);return 0;
}

4.指数序列 nefu 1677

由于2^x + 2^x = 2^(x+1),对于一个非降序列,我们可以向上进位得到

单调递增序列,如:

1 1 2 3 5——>2 2 3 5——>3 3 5——>4 5

由于2v-1=20+21+22+……2^(v-1),所以我们只需暴力找0的个数即可

#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
const int  N=100000+10;
ll a[N];
map<ll,int>cc;
int main()
{ios::sync_with_stdio(false);int n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];ll ans=a[1];a[n+1]=2345678901;for(int i=1;i<=n+1;i++){if(a[i]!=a[i-1]&&(i!=1)){for(int j=a[i-1];j<a[i];j++){if(!cc[j])//是否有一样的{if(i!=n+1)ans+=a[i]-j;break;}while(cc[j]>=2)//每两个一样的加一{cc[j]-=2;cc[j+1]++;}if(!cc[j])ans++;}}cc[a[i]]++;//记录有几个一样的}cout<<ans<<endl;return 0;
}

大一寒假集训(12)—set

知识点

1.定义set方法
set< typename>name
2.set的常用命令

insert()插入一个新元素,如果集合中已存在某个元素,再次插入不会产生任何效果,集合中不会出现重复元素的
3.count的使用

#include <iostream>
#include <set>
using namespace std;
int main() { set<int> s; s.insert(1); s.insert(2); s.insert(3); s.insert(1); cout<<"set 中 1 出现的次数是 :"<<s.count(1)<<endl; cout<<"set 中 4 出现的次数是 :"<<s.count(4)<<endl; return 0; }

4.三种删除方法
erase(iterator) ,删除定位器iterator指向的值
erase(first,second),删除定位器first和second之间的值
erase(key_value),删除键值key_value的值
5.
lower_bound(key_value) ,返回第一个大于等于key_value的定位器 upper_bound(key_value),返回最后一个大于等于key_value的定位器
6.迭代器的使用
set只能通过迭代器访问。即先定义一个迭代器: set::iterator it;然后使用“*it”来访问set中的元素。
for(it = s.begin() ; it != s.end() ; ++it)
{
cout<<*it<<" ";
}
另外:
Size() 表示集合中元素的个数
Clear() 清空集合中元素

1.明明的随机数-set nefu 743

⭐️基本应用

#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
set<int>lay;
int n;
int m;
int main()
{ios::sync_with_stdio(false);while(cin>>n){lay.clear();//多组数据记得初始化for(int i=1;i<=n;i++){cin>>m;lay.insert(m);}cout<<lay.size()<<endl;set<int>::iterator it;for(it=lay.begin();it!=lay.end();it++){if(it==lay.begin())cout<<*it;else cout<<" "<<*it;}cout<<endl;}return 0;
}

2.第K小整数-SET nefu 1684

基础题

#include <bits/stdc++.h>
using namespace std;
int n,k,x;
int flag,z;
set<int>go;
int main()
{flag=0;z=0;ios::sync_with_stdio(false);cin>>n>>k;for(int i=1;i<=n;i++){cin>>x;go.insert(x);}set<int>::iterator it;for(it=go.begin();it!=go.end();it++){z++;if(z==k){cout<<*it;flag=1;break;}}if (flag==0)cout<<"NO RESULT";return 0;
}

3.单词记忆-set-map nefu 2117

#include <bits/stdc++.h>
using namespace std;
set<string>me;
string word;
int n,n0;
int main()
{ios::sync_with_stdio(false);cin>>n;for (int i=1;i<=n;i++){cin>>n0>>word;if(n0==0)me.insert(word);else{if(me.find(word)!=me.end())//?cout<<"YES"<<endl;elsecout<<"NO"<<endl;}}return 0;
}

4.列车调度-SET nefu 1680

#include <bits/stdc++.h>
using namespace std;
set<int>me;
set<int>::iterator it;
int n,x;
int ans;
int main()
{ios::sync_with_stdio(false);cin>>n;ans=1;//注意此处初始化应为1for(int i=1;i<=n;i++){cin>>x;if(me.empty())me.insert(x);else{it=me.upper_bound(x);//第一个大于x的数if(it==me.end())//比任何数都大{ans++;me.insert(x);}else{me.erase(*it);me.insert(x);}}}cout<<ans<<endl;return 0;
}

5.相似的数集简单版-SET nefu 2119

#include <bits/stdc++.h>
using namespace std;
set<int>s[55];//注意set的新用法
int n,m,x,k;
int a,b;
int ans1,ans2;
int main()
{ios::sync_with_stdio(false);cin>>n;for(int i=1;i<=n;i++){cin>>m;while (m--){cin>>x;s[i].insert(x);}}//输入完成cin>>k;//输入k组while(k--){ans1=ans2=0;//初始化cin>>a>>b;set<int>::iterator it;for (it=s[a].begin();it!=s[a].end();it++){if (s[b].count(*it))//若有相同的数ans1++;}ans2=s[a].size()+s[b].size()-ans1;//注意set不录入重复的元素!!,所以无需考虑一个数集中的重复元素//cout<<ans1*1.0/(ans2*1.0)*100;//cout<<'%'<<endl;用此法输出无法精确到小数点后两位printf("%.2lf%%\n",ans1*1.0/(ans2*1.0)*100);}return 0;
}

6.NOIP 题海战-SET-1 nefu 1679

⭐️本题看似麻烦,实际思维量并不大

#include <bits/stdc++.h>
using namespace std;
set<int>s[1005];//做的题
set<int>all;//所有题
set<int>ans;//答案
int n,m,p,x,k,q,c;//q为参赛编号
int ch;
set<int>::iterator it;
int main()
{ios::sync_with_stdio(false);cin>>n>>m;//共n个人,m道题for(int i=1; i<=n; i++){cin>>p;while(p--){cin>>x;s[i].insert(x);}}//输入for (int i=1; i<=m; i++)all.insert(i);//所有题cin>>k;//总共场次while (k--){cin>>ch>>c;//c为参赛人数ans=all;//等号可直接让两个Set相等,后续再筛!!注意顺序if (ch==1)//若为训练,找所有人都做过的题{for(int i=1;i<=c;i++){cin>>q;for (it=ans.begin(); it!=ans.end();){if(!s[q].count(*it))//若没做过ans.erase(it++);//则从答案中删除else it++;}}}else//若为比赛,找所有人都做过的题{for(int i=1;i<=c;i++){cin>>q;for (it=ans.begin(); it!=ans.end();){if(s[q].count(*it))//若做过ans.erase(it++);//则从答案中删除else it++;}}}for(it=ans.begin(); it!=ans.end(); it++)cout<<*it<<" ";cout<<endl;}return 0;
}

大一寒假集训(11)(12)---map,set相关推荐

  1. 大一寒假训练九(map,set,vector)【更新完成】

    一.map的应用 洛谷 P1918 保龄球 #include <bits/stdc++.h> using namespace std; map<int,int>a;//实际上就 ...

  2. acm大一寒假集训--暴力枚举类

    题目来源于东北林业大学OJ 东北林业大学OJ,点击进入

  3. NEFU 2021大一寒假集训总结赛 全题解

    比赛链接:这里 OP 肝了两个半小时A,没过-- sl大佬也写题解了 A SET 最大公约数 感谢老师的标程~ 思路 任选两数 a,b 做 2*a-b 运算,可以理解成 a + a - b ,即 a ...

  4. NEFU 大一寒假训练十二(set)2020.02.18

    Summary 可能是昨天的题少了一些,今天的题多了一堆,还疯狂TLE /(ㄒoㄒ)\~~ Information No. Title AC/Submit A 明明的随机数-set 60/101 B ...

  5. 暑期集训1期11暑期集训一期12阶段性测验

    暑期集训1期11 1.树状数组模板 2.线段树模板 暑期集训一期12阶段性测验 T1棒棒糖之王(^)前面讲过 T2烤乐滋埋雷(模拟) 用一个数组存储每一列是不是有炸弹,再用一个数组表示每一行有没有,最 ...

  6. 寒假集训三(暴力枚举)2020.01.02(11题)

    寒假集训三(暴力枚举)id :521 Problem:A 二倍的问题 Description 给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍.比如给 ...

  7. 2019NEFU寒假集训新生考试 2020.1.6

    2019NEFU寒假集训新生考试 2020.1.6 为期一周的的培训终于面临尾声,就以一场考试告终吧. A 28的因子 Description 我们都知道28的因子中含有4和7,而某些人偏爱数字4和7 ...

  8. 大一寒假培训(三)——暴力枚举及妙用

    大一寒假培训(三) 经过两天的培训之后,第三天也到来了.今天讲的是暴力枚举.好像没什么可讲的(悄咪咪地说) 接下来还是今天的练习 nefu 8 二倍的问题 Description 给定2到15个不同的 ...

  9. linux 彻底定制指南,8.3. Linux-2.6.11.12 《Linux 彻底定制指南》[翻译:金步国]...

    8.3.1. 安装内核 编译内核包含几个步骤(配置.编译和安装)请阅读内核源码树里的 README 文件,选择不同于本书的其它配置内核的方式. 运行下面的命令做编译前的准备: make mrprope ...

最新文章

  1. 在GHOST的WINXPSP2安装SQL SERVER2000个人版时出现“以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装之前,必须重新启动计算机。”错误的解决方法...
  2. HDU 3709 Balanced Number
  3. 【OpenGL】用OpenGL shader实现将YUV(YUV420,YV12)转RGB-(直接调用GPU实现,纯硬件方式,效率高)...
  4. 计算机视觉与图像处理、模式识别、机器学习学科之间的关系
  5. 软考-信息系统项目管理师-项目采购管理
  6. 漫画:互联网人的十二时辰,程序员有多惨?
  7. [Jarvis OJ - PWN]——[XMAN]level2(x64)
  8. DNN架构解析(收集)
  9. 跨国实时网络调度系统设计
  10. UI5_INFO_FETCH_FROM_DB
  11. rough and crude
  12. 【数据库系统】实例和模式
  13. python获取网页元素坐标_Python实战爬虫系统学习笔记一:解析网页中的元素
  14. 今天最好的生日礼物就是重新找到目标
  15. flutter 获取android 还是ios_Flutter完整开发实战详解(二十、 Android PlatformView 和键盘问题)...
  16. IntellijIDEA配置Tomcat
  17. 基于51单片机的智能路灯照明控制系统proteus仿真原理图程序设计
  18. 云原生 Kuma 简单部署与使用
  19. python读取163邮件内容_python 3.x 163邮箱登陆,邮件读取
  20. python制作万年历

热门文章

  1. 西门子s7-200PLC编程软件
  2. speedoffice(Excel)表格怎么设置文字自动换行呢?
  3. 《流浪地球》反响强烈,车联网现状又该如何发展?
  4. 【12月19日】传媒行业的股票排名
  5. ECMAScript(pink)
  6. 【2022年高教杯数学建模】C题:古代玻璃制品的成分分析与鉴别方案及代码实现(一)
  7. java 混淆_Java 混淆那些事(一):重新认识 ProGuard
  8. 最多只需三步,彻底解决VB6中不能加载MSCOMCTL.OCX的提示
  9. SSLOJ2895 购买干草
  10. 土木工程考研和计算机考研哪个,土木工程考研还是就业