2020年2月18日 set

set相当于一个自动排序+自动去重的数组,即插入时会自动排序,插入重复元素时不会变化。set的元素访问需要用到迭代器,其原理可以类比普通循环中的循环变量i。

林大OJ 743 明明的随机数-set

set的模版题,set的特点在排序和去重。

#include <bits/stdc++.h>using namespace std;set<int>a;int main()
{int n,x;while(cin>>n){a.clear();for(int i=1;i<=n;i++){cin>>x;a.insert(x);}printf("%d\n",a.size());set<int>::iterator it;for(it=a.begin();it!=a.end();it++)it==a.begin()?printf("%d",*it):printf(" %d",*it);printf("\n");}return 0;
}

林大OJ 1684 第K小整数-set

仍然是模版题,看到“相同的数字只计算一次”就用set就对了。

#include <bits/stdc++.h>using namespace std;set<int>a;int main()
{int n,x,k,cnt,flag;cin>>n>>k;for(int i=1;i<=n;i++){cin>>x;a.insert(x);}set<int>::iterator it;cnt=flag=0;for(it=a.begin();it!=a.end();it++){cnt++;if(cnt==k){printf("%d\n",*it);flag=1;}}if(flag==0) printf("NO RESULT\n");return 0;
}

林大OJ 2117 单词记忆-set-map

在set中查找元素用count函数更简单点,但只能知道有没有,这道题已经足够了。

#include <bits/stdc++.h>using namespace std;set<string>a;int main()
{int n,f,flag;string x;cin>>n;a.clear();set<string>::iterator it;while(n--){cin>>f>>x;if(f==0) a.insert(x);if(f==1){flag=0;if(a.count(x)){printf("YES\n");flag=1;}if(flag==0) printf("NO\n");}}return 0;
}

林大OJ 1680 列车调度-SET

set中的数据存放是有顺序的。
这道题相当于找列车初始顺序中最长单调递减子序列的长度。换言之,如果新的一辆列车的序号大于目前所有轨道上末尾车的序号就要重开一条轨道用来调度。

#include <bits/stdc++.h>using namespace std;set<int>a;int main()
{ios::sync_with_stdio(false);int n,num;cin>>n;for(int i=1;i<=n;i++){cin>>num;if(!a.empty()&&*a.rbegin()>num)a.erase(*a.upper_bound(num));a.insert(num);}printf("%d\n",(int)a.size());return 0;
}

林大OJ 2119 相似的数集简单版-SET

利用count函数找到两个数集中相同元素的个数即可,因为要求相同元素两两不同,所以用set。

#include <bits/stdc++.h>using namespace std;set<int>a[51];int main()
{ios::sync_with_stdio(false);int m,n,x,n1,n2,k;cin>>n;for(int i=1;i<=n;i++){cin>>m;while(m--){cin>>x;a[i].insert(x);}}cin>>k;while(k--){cin>>n1>>n2;int same=0,dif=0;set<int>::iterator it;for(it=a[n1].begin();it!=a[n1].end();it++)if(a[n2].count(*it)) same++;dif=a[n1].size()+a[n2].size()-same;printf("%.2lf%%\n",1.0*same/(1.0*dif)*100.0);}return 0;
}

林大OJ 1679 NOIP 题海战-SET-1

题目很长,主要是要读懂题目每句话的意思。

#include <bits/stdc++.h>using namespace std;const int N=1e3+10;
int n,m,x,k,num,type;
set<int>s[N],quanji,ans;
set<int>::iterator it;int main()
{ios::sync_with_stdio(false);cin>>n>>m;for(int i=1;i<=n;i++){cin>>num;for(int j=1;j<=num;j++){cin>>x;s[i].insert(x);}}for(int i=1;i<=m;i++)quanji.insert(i);cin>>k;while(k--){cin>>type>>num;ans=quanji;if(type==0){for(int i=1;i<=num;i++){cin>>x;for(it=ans.begin();it!=ans.end();){if(s[x].count(*it)) ans.erase(it++);else it++;}}}else{for(int i=1;i<=num;i++){cin>>x;for(it=ans.begin();it!=ans.end();){if(!s[x].count(*it)) ans.erase(it++);else it++;}}}for(it=ans.begin();it!=ans.end();it++)printf("%d ",*it);printf("\n");}return 0;
}

林大OJ 1677 指数序列-set-map

这道题其实是昨天map的压轴题,因为又写着set,所以决定今天解决。这道题其实相当于又回到了二进制的计算上,大佬的题解:
由于2x + 2x = 2x+1,对于一个非降序列,我们可以向上进位得到单调递增序列,如:

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

由于2v-1 = 20 + 21 + 22 +……+ 2v-1,所以我们只需暴力找答案的二进制中0的个数。

#include <bits/stdc++.h>using namespace std;int n,x,s,mx;
set<int>ans;
map<int,int>vis;int main()
{ios::sync_with_stdio(false);cin>>n;for(int i=1;i<=n;i++){cin>>x;vis[x]++;ans.insert(x);mx=max(mx,x);}set<int>::iterator it;for(it=ans.begin();it!=ans.end();it++){x=*it;int tmp=vis[x];vis[x]=tmp%2;if(vis[x]==0) s++;//统计被删除的数的个数int k=tmp/2;//将相同的两个数合并if(!vis[x+1]&&k!=0){ans.insert(x+1);//合并后的数大小+1mx=max(mx,x+1);//mx记录合并完成后数的最大值}vis[x+1]+=k;//合并后数的个数+k}printf("%d\n",mx+1-ans.size()+s);return 0;
}

2020年2月18日 林大OJ习题 set相关推荐

  1. 2020年1月2日 林大OJ习题 暴力枚举

    2020年1月2日 暴力枚举 林大OJ 8 二倍的问题 #include <bits/stdc++.h>using namespace std;int main() {int n,i,j, ...

  2. 2020年2月12日 林大OJ习题 队列

    2020年2月12日 队列 林大OJ 1632 周末舞会-队列 队列的基本题目,重在理解队列的原理. #include <bits/stdc++.h>using namespace std ...

  3. 2020年2月17日 林大OJ习题 map

    2020年2月17日 map map相当于一种特殊的数组.普通的数组是从数到数或字符的映射,即int或char类型的数组,下标都是数字.而map则是任意数据类型间的映射.借助map能完成更多类型的插入 ...

  4. 神雕侠侣手游服务器维护,《神雕侠侣》2020年6月18日更新维护新服开启公告

    亲爱的玩家: 为了给您提供更好的游戏体验,我们将于2020年6月18日上午8:00-11:00对所有服务器进行停机更新维护,预计维护时间3小时. 若提前完成维护内容,我们将提前开服.对于停机期间给您带 ...

  5. 【财经期刊FM-Radio|2020年12月18日】

    title: [财经期刊FM-Radio|2020年12月18日] 微信公众号: 张良信息咨询服务工作室 [今日热点新闻一览↓↓] 刺激希望力撑欧美股市齐涨,美元逾两年半来首次跌破90,比特币大涨首度 ...

  6. 决战平安京服务器升级维护如何解封,《决战平安京》2020年12月18日维护公告

    在决战平安京手游中2020年12月18日更新了哪些有趣的内容呢?不清楚本次维护更新情况如何的话,下面就来看一下吧! 决战平安京手游2020年12月18日维护公告 12月18日维护更新后,化鲸海番队系列 ...

  7. 项目日报模板_新建区重点易涝区能力建设项目2020年11月18日日报

    新建区重点易涝区排涝能力建设项目2020年11月18日日报: 天气  18℃~31℃  晴 赣西联圩: 设备:挖机7台 人员:管理人员:13人,技术工13人,普工19人,钢筋工46人,木工41人 廿四 ...

  8. 利用rfcomm实现树莓派与手机通信_树莓派资源整理汇总(2020年2月18日更新)

    本文收集了树莓派使用过程中经常需要用到的资源,主要包括树莓派系统镜像.树莓派硬件介绍.树莓派GPIO引脚编号.树莓派电路原理图下载.树莓派应用.树莓派工具等等,非常值得收藏. 一.快速上手 树莓派快速 ...

  9. 2020年11月18日起施行!最高法发布《关于知识产权民事诉讼证据的若干规定》

    11月16日,最高人民法院发布<关于知识产权民事诉讼证据的若干规定>(以下简称<规定>),于2020年11月18日起施行.该<规定>对保障和便利当事人依法行使诉讼权 ...

最新文章

  1. Android 依赖注入: Dagger 2 实例解说(一)
  2. php会员可见内容代码,DedeCMS内容隐藏指定字段仅对会员显示对游客不可见的实现方法...
  3. Python_微信开发
  4. 华为qy2音乐如何转换为mp3_华为手机还有这种骚操作?开启这个功能,让你体验至尊级待遇...
  5. SEM和SEO的区别
  6. Plain Road
  7. 戳这里,誉天胡老师教你如何备考 HCIE-Datacom!考试通关so easy!
  8. 运用遗传算法求解函数极值(fortran)
  9. nginx根据项目名实现内网地址转发
  10. 如何让游戏里的 NPC 拥有自己的意志?
  11. 平均年薪60.8万,Linux开发拿下这个证书有多吃香?
  12. 记账后,如何查看、修改或删除不需要的收支
  13. 人工智能正在改变音乐产业
  14. matlab矩阵分块
  15. knn基础与优化2--ball tree、LSH
  16. 硬盘错误计数 计算机内存不足,硬盘问题!Ultra DMA CRC错误计数 电脑死机
  17. 段码屏和点阵屏的区别如何呢
  18. IIS配置网站访问权限和安全
  19. c#四种线程安全的懒加载单例模式(Lazy、静态内部类、CAS、双重校验)
  20. mxgraph进阶(五)搭建mxGraph简单应用

热门文章

  1. 移动硬盘启动win7蓝屏7b_移动硬盘安装win7,蓝屏,0x0000007B
  2. 推荐书单(网课)-人生/编程/Python/机器学习
  3. 计算机网络练习题(应用层)
  4. Python txt转pcd(带RGB值,点云)
  5. 压力串级控制装置用于气动马达的高精度调节
  6. R语言线性混合效应模型(固定效应随机效应)和交互可视化3案例
  7. 动态背景下目标跟踪算法目标跟踪
  8. python 典型变量分析
  9. FPGA图像处理——cameralink发送设计实现之改进版
  10. 基于51单片机的烟雾火灾报警器proteus仿真设计