【算法心得】C++map用不着map.find(arr[j])!=map.end();js的map是map不是哈希;编译器选GNU

https://leetcode.com/problems/count-of-range-sum/

https://vjudge.csgrandeur.cn/problem/CodeForces-459D

这两题都是线段树,很明显的单点修改区间查询

leetcode那题我觉得map用hashmap就行,但是好像js里没有hashmap,那就 Map() 也行吧

let map = new Map();
map.set(key, value);
let num = map.get(key)

没有map[key]!也没有map[key]=value!这个和C++不一样


其实C++的map也没弄明白
之前老这样写

if(mymap.find(k)!=mymap.end()) mymap[k]=1;
else mymap[k]++;

其实不需要,默认就是0

mymap[k]++;

【算法心得】C++map用不着map.find(arr[j])!=map.end();js的map是map不是哈希;编译器选GNU_第1张图片
交了好多次,次次都是TLE
输入输出优化后也一样

以前只知道

ios::sync_with_stdio(false); 

看了人家写的,还加了

cin.tie(0);cout.tie(0);

后来真的没有招了,找了一个写的逻辑差不多的,为了跟他写的差不多我自己的优化都舍弃了,最后基本是写的一样一样的,还是TLE

后来发现跟人家唯一不同的是编译器选的不一样,我选的Clang++,人家是GNU

果然换了就能过了

不过吧在第10个点WA了,这个很快查出来了,把ans换成long long 就好了

我自己都没想到调了一个半小时,要是之前肯定老早就放弃了,觉得评测机sb,不是我的问题,但是吧今天是组团练算法第一天,不好意思。调好了还挺开心的,虽然确实是评测机sb

把最开始的那次,没跟着优化的代码拿过去跑,也可以AC,满意了
在这里插入图片描述

你可能感兴趣的:(算法,算法,c++,哈希算法)