夜色已经很晚了,所以我长话短说

1.表单

链接:https://ac.nowcoder.com/acm/contest/917/C
来源:牛客网

输入描述:

第一行两个整数n,Q

后n行每行一个字符串

后Q行每行代表一个操作:

一操作:1 s

二操作:2

输出描述:

对于每个二操作,进行回答。
示例1

输入

复制

4 4
play
the
pubg
game
1 game
1 pubg
2
2

输出

复制

2
0

说明


100% 1≤n,Q≤5×105100% 1≤n,Q≤5×105
对于所有输入的字符串长度<=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场相关推荐

  1. 牛客小白赛7 B自杀游戏 (博弈论,SG函数)

    链接:https://www.nowcoder.com/acm/contest/190/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6553 ...

  2. 牛客小白赛60(F.被抓住的小竹)61(E.排队)(数学+推公式)

    文章目录 前言 逆序对是典型题,常用统计数组内逆序对用树状数组.但是求排列中的总逆序对数量需要利用组合数学推导公式. F.被抓住的小竹 E.排队 总结 前言 逆序对是典型题,常用统计数组内逆序对用树状 ...

  3. 牛客小白月赛58 B(暴力)C(思维)D(dp滚动数组优化)

    牛客小白月赛58 感觉没什么意思,这场月赛出题人有点问题. B 题意:给定一定的数据填充顺序和每一个填充层的名称,只有填充满了上一层才可以填充下一层. 但是每一层又属于某一个大层,一个大层中包含了若干 ...

  4. 牛客小白月赛4 D.郊区春游

    牛客小白月赛4 D.郊区春游 题目链接 题目描述 今天春天铁子的班上组织了一场春游,在铁子的城市里有 nnn 个郊区和 mmm 条无向道路,第 iii 条道路连接郊区 AiA_iAi​ 和 BiB_i ...

  5. 牛客小白月赛60(A~C)题解

    原题地址:牛客小白月赛60_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ 题目A:小竹与妈妈 题意:输出(x-b)/a即可,没什么好说 代码: #include< ...

  6. 牛客小白月赛28 B.牛牛和牛可乐的赌约2

    牛客小白月赛28 B.牛牛和牛可乐的赌约2 题目链接 题目描述 牛牛感觉在上一次赌约中,情况对于自己非常不利,所以决定再赌一场. 这时候,牛蜓队长出现了:第一,绝对不意气用事:第二,绝对不漏判任何一件 ...

  7. 【2021牛客寒假第五场】C-比武招亲(下)欧拉降幂+多项式求逆预处理伯努利数计算等幂求和

    [2021牛客寒假第五场]C-比武招亲(下)欧拉降幂+多项式求逆预处理伯努利数计算等幂求和 前置技能 题意 思路 Code(715MS) 传送门: https://ac.nowcoder.com/ac ...

  8. 牛客小白9 换个角度思考(离线+树状数组)

    title: 牛客小白9 换个角度思考(离线+树状数组) date: 2018-11-29 15:25:18 tags: [离线,树状数组] categories: ACM 题目链接 题目描述 给定一 ...

  9. 牛客小白月赛16 小石的签到题(博弈)

    牛客小白月赛16 小石的签到题 链接:https://ac.nowcoder.com/acm/contest/949/A来源:牛客网 题目描述 输入描述: 共一行,输入一个数 nnn . 输出描述: ...

最新文章

  1. eyoucms添加内容
  2. 你的 CRF 层的学习率可能不够大
  3. arcgis-online-python-scripts
  4. java断点续传插件_视频断点续传+java视频
  5. pc个人微型计算机ppt,《IBMPC微型计算机》PPT课件.ppt
  6. git中的rebase操作
  7. ASP.NET 数据绑定操作
  8. 接口测试(测试用例)
  9. 多方向如何选择数据分析之营业额不一定可以决定方向
  10. hive presto sql从身份证号提取年龄和性别
  11. 德国互联网现状,缺人,4万元每月的收入,可以考虑移民了
  12. springmvc(表现层/Web层框架)
  13. MacBook系统升级问题
  14. 亚马逊服务器一键重装系统,如何使用Amazon Alexa轻松设置智能家居设备
  15. 外星人 Alienware x15 R2 评测
  16. 老梁情商课-拒绝是战术不是艺术
  17. 彩色图像、灰度图像、二值图像和索引图像
  18. linux命令行怎么播放,在linux命令行里能听歌看电影吗
  19. python程序入口
  20. 【图】广度与深度遍历

热门文章

  1. 对float浮动的我的理解,形象生动一点
  2. Android面试收集录13 Android虚拟机及编译过程
  3. 浅谈AJAX基本实现流程
  4. Qt 学习之路 2(79):QML 组件
  5. watchdog应用实例
  6. WINDOWS高级窗口的客户区域拖动技术及其应用
  7. java类Timer和TimerTask的使用
  8. Intel汇编语言程序设计学习-第六章 条件处理-上
  9. hdu3714 水三分
  10. 【Linux 内核】Linux 操作系统结构 ( Linux 内核在操作系统中的层级 | Linux 内核子系统及关系 | 进程调度 | 内存管理 | 虚拟文件系统 | 网络管理 | 进程间通信 )