牛客小白赛190615场
夜色已经很晚了,所以我长话短说
1.表单
链接:https://ac.nowcoder.com/acm/contest/917/C
来源:牛客网
输入描述:
第一行两个整数n,Q 后n行每行一个字符串 后Q行每行代表一个操作: 一操作:1 s 二操作:2
输出描述:
对于每个二操作,进行回答。
输入
复制
4 4 play the pubg game 1 game 1 pubg 2 2
输出
复制
2 0
说明
对于所有输入的字符串长度<=40 这个链接不错,让我在做题的时候启蒙了https://blog.csdn.net/zhaohuaonline/article/details/21482687
这道题之前觉得4 4 这种输入也没啥用,结果开始编程直接没编进去,打算结束的时候往里加,结果忘了,由此带来的退出循环问题耗时耗力影响了解题进度。下次首先1.把输入的格式先写好2.尽量看清能给的条件,团结一切可以团结的力量。
莫名其妙flag每次结尾置0导致报错
cin换成scanf提高正确率
以上两点都是编译器自己sb
对map的循环不能放在循环里,会超时,这个值得注意
下面放出我期待已久的map以及迭代器的用法,真的是太方便了,鸟枪换炮感觉就是不一样!!开森(/≧▽≦)/
map<string,int> word_count; map<string,int>::iterator iter; //输入字符串进mapfor(int i=0;i<a1;i++){cin>>word;++word_count[word];} //对map进行遍历,并对数值进行操作for(iter = word_count.begin(); iter != word_count.end(); iter++){res+=(iter->second-1);iter->second=1;}
这道题在思路上有一个改进点:
核心本题是求,字符重复的次数,我一直觉得得把map中的次数统计部分,数数,开始还为此发愁,后来直接遍历的时候每个减1,就是重复次数了
但,其实还有更好方法。用
if(flag==1){cin>>word; //if括号里面的内容,运用了map的属性,如果这个词之前没有出现过,查无此人,则一定会 //是false,这种情况就说明出现了重复,用一个单独的变量统计重复的次数,只在这个时候 //++即可减轻了计算负担if(word_count[word]) res++;else word_count[word]=1;flag=0;}
下面放出我的解法:
#include<iostream> #include<math.h> #include<map> #include <string> #include<stdio.h> #include <cstdlib> using namespace std; int main() {map<string,int> word_count;map<string,int>::iterator iter;string word;int flag=-1;int res=0;int a1,a2;//scanf("%d %d",&a1,&a2);cin>>a1>>a2;for(int i=0;i<a1;i++){cin>>word;++word_count[word];}for(iter = word_count.begin(); iter != word_count.end(); iter++){res+=(iter->second-1);iter->second=1;}for(int i=0;i<a2;i++){//cout<<"flag:"<<flag<<endl;scanf("%d",&flag);//cout<<"flag1:"<<flag<<endl;//cin>>flag;if(flag==1){cin>>word;if(word_count[word]) res++;else word_count[word]=1;}else{cout<<res<<endl;res=0;}}return 0; }
真正大佬的代码,看看什么叫信达雅
//膜大佬 #include<bits/stdc++.h> using namespace std; int n,q,res; map<string,int> mp; int main() {scanf("%d %d",&n,&q);while(n--){string str;cin>>str;if(mp[str]) res++;else mp[str]=1;}while(q--){int op;scanf("%d",&op);if(op==1){string str;cin>>str;if(mp[str]) res++;else mp[str]=1;}else{printf("%d\n",res);res=0;}}return 0; }
2.pow慎用
尤其是先开完方再平方就容易有问题
int main() {int n=100; //如果是double的,结果还可以是100,如果是int型,结果是99,估计是精度造成的,但下 //次注意不要用pow,比较好的解决方式是直接乘,t*t,反正只用乘一次,但稳定性和正确 //率都会高很多double t=sqrt(n);cout<<t<<endl;double k=pow(t,2);cout<<k<<endl;return 0; }
3.
特别注意一个思想上的问题
有些需要循环统计次数的问题,如果有一个全局变量计数,每次循环之前记得要清0
求公因子这次至少有两道题,直接遍历的方法很容易超时,这里介绍一种辗转相除法
例1 。求两个正数8251和6105的最大公因数。
(分析:辗转相除→余数为零→得到结果)
解:8251=6105×1+2146
显然8251与6105的最大公因数也必是2146的因数,同样6105与2146的公因数也必是8251的因数,所以8251与6105的最大公因数也是6105与2146的最大公因数。
6105=2146×2+1813
2146=1813×1+333
1813=333×5+148
333=148×2+37
148=37×4+0
则37为8251与6105的最大公因数。
以上我们求最大公因数的方法就是辗转相除法。也叫欧几里德算法,它是由欧几里德在公元前300年左右首先提出的。
int gcd1(int a,int b) {int temp;if(a==0||b==0)return -1;if(a<b){ temp=a;a=b;b=temp;} //求最小值最大值,大的用a表示,小的用b表示while(b!=0) //用循环求最大公约数 {temp=a%b;a=b;b=temp;}if(a==1)return -1;return a; //返回最大公约数 }
转载于:https://www.cnblogs.com/Marigolci/p/11026050.html
牛客小白赛190615场相关推荐
- 牛客小白赛7 B自杀游戏 (博弈论,SG函数)
链接:https://www.nowcoder.com/acm/contest/190/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6553 ...
- 牛客小白赛60(F.被抓住的小竹)61(E.排队)(数学+推公式)
文章目录 前言 逆序对是典型题,常用统计数组内逆序对用树状数组.但是求排列中的总逆序对数量需要利用组合数学推导公式. F.被抓住的小竹 E.排队 总结 前言 逆序对是典型题,常用统计数组内逆序对用树状 ...
- 牛客小白月赛58 B(暴力)C(思维)D(dp滚动数组优化)
牛客小白月赛58 感觉没什么意思,这场月赛出题人有点问题. B 题意:给定一定的数据填充顺序和每一个填充层的名称,只有填充满了上一层才可以填充下一层. 但是每一层又属于某一个大层,一个大层中包含了若干 ...
- 牛客小白月赛4 D.郊区春游
牛客小白月赛4 D.郊区春游 题目链接 题目描述 今天春天铁子的班上组织了一场春游,在铁子的城市里有 nnn 个郊区和 mmm 条无向道路,第 iii 条道路连接郊区 AiA_iAi 和 BiB_i ...
- 牛客小白月赛60(A~C)题解
原题地址:牛客小白月赛60_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ 题目A:小竹与妈妈 题意:输出(x-b)/a即可,没什么好说 代码: #include< ...
- 牛客小白月赛28 B.牛牛和牛可乐的赌约2
牛客小白月赛28 B.牛牛和牛可乐的赌约2 题目链接 题目描述 牛牛感觉在上一次赌约中,情况对于自己非常不利,所以决定再赌一场. 这时候,牛蜓队长出现了:第一,绝对不意气用事:第二,绝对不漏判任何一件 ...
- 【2021牛客寒假第五场】C-比武招亲(下)欧拉降幂+多项式求逆预处理伯努利数计算等幂求和
[2021牛客寒假第五场]C-比武招亲(下)欧拉降幂+多项式求逆预处理伯努利数计算等幂求和 前置技能 题意 思路 Code(715MS) 传送门: https://ac.nowcoder.com/ac ...
- 牛客小白9 换个角度思考(离线+树状数组)
title: 牛客小白9 换个角度思考(离线+树状数组) date: 2018-11-29 15:25:18 tags: [离线,树状数组] categories: ACM 题目链接 题目描述 给定一 ...
- 牛客小白月赛16 小石的签到题(博弈)
牛客小白月赛16 小石的签到题 链接:https://ac.nowcoder.com/acm/contest/949/A来源:牛客网 题目描述 输入描述: 共一行,输入一个数 nnn . 输出描述: ...
最新文章
- eyoucms添加内容
- 你的 CRF 层的学习率可能不够大
- arcgis-online-python-scripts
- java断点续传插件_视频断点续传+java视频
- pc个人微型计算机ppt,《IBMPC微型计算机》PPT课件.ppt
- git中的rebase操作
- ASP.NET 数据绑定操作
- 接口测试(测试用例)
- 多方向如何选择数据分析之营业额不一定可以决定方向
- hive presto sql从身份证号提取年龄和性别
- 德国互联网现状,缺人,4万元每月的收入,可以考虑移民了
- springmvc(表现层/Web层框架)
- MacBook系统升级问题
- 亚马逊服务器一键重装系统,如何使用Amazon Alexa轻松设置智能家居设备
- 外星人 Alienware x15 R2 评测
- 老梁情商课-拒绝是战术不是艺术
- 彩色图像、灰度图像、二值图像和索引图像
- linux命令行怎么播放,在linux命令行里能听歌看电影吗
- python程序入口
- 【图】广度与深度遍历
热门文章
- 对float浮动的我的理解,形象生动一点
- Android面试收集录13 Android虚拟机及编译过程
- 浅谈AJAX基本实现流程
- Qt 学习之路 2(79):QML 组件
- watchdog应用实例
- WINDOWS高级窗口的客户区域拖动技术及其应用
- java类Timer和TimerTask的使用
- Intel汇编语言程序设计学习-第六章 条件处理-上
- hdu3714 水三分
- 【Linux 内核】Linux 操作系统结构 ( Linux 内核在操作系统中的层级 | Linux 内核子系统及关系 | 进程调度 | 内存管理 | 虚拟文件系统 | 网络管理 | 进程间通信 )