标签:分记 map 第一种 frac 第二种 Codeforces 数都 544 neq
Codeforces Round #544 (Div. 3) 错过上分记
rating是不可能上1600的。这辈子都不可能的。所以只能在Div.3遨游。
Virtual Participant做到简单的比赛总是很恨哦!
A
全换算成秒,算平均值,再换算回来就完事了。
用printf
的话就可以直接用%02d
,可惜我当时用的是cout,浪费了一点时间。
B
边界情况没考虑明白,我WA了3次。
显然每个数都对\(k\)取模。这些数就可以用100的桶存下来了。
两个点先特殊考虑:\(0\)和\(\frac{k}{2}\)(当\(k\)为偶数)。对答案的贡献就是除2乘2。
其他的点只需要取其中的最小值,除2乘2再加进答案。
然后就完事了。
C
这道题我脑子里面乱想,乱写就过了。。。
显然要找一个长度为10的区间,包含最多的数。
但是值域太大了,怎么搞?
其实只需要排序后,一个upper_bound
减掉lower_bound
即可算出任意一个区间内数的多少。
为了考虑周全,把每一个数左右5个数都考虑为该左节点,右节点就是左节点加10。一次查询只需要\(O(\log n)\)。
但是我怕考虑太多TLE了,于是用了一个unordered_map
判重。
然后就过了。。。
D
比赛时没想出来,用了两种方法。第一种用double
当map
的key,第二种用pair
表示分数,当map
的key。
第一种方法会被卡精度过不去,怒用long double
就TLE了。。。
第二种方法由于自己菜,没能过。
其实第二种方法就是标算。
首先对\(a_i\)和\(b_i\)分类讨论,可以得出:
当\(a_i = b_i = 0\)时,\(d\)取任何数都成立。
当\(a_i \neq 0, b_i = 0\)时,\(d\)只能取\(0\)。
当\(a_i = 0, b_i \neq 0\)时,\(d\)取什么都不成立。
当\(a_i \neq 0,b_i \neq 0\)时,\(d\)只能取一个非0实数\(-\frac{b_i}{a_i}\)。
对第一种情况,用一个变量记录,最后的答案加上即可。
其他的情况我们统统用分数记录。现在我们要做的就是统一所有的分数形式,然后用pair
存下来。
人为规定第二种情况的\(d\)为\(\frac{0}{0}\),第四种情况的\(d\)分子一定为正数。
规定后最后的一件事情只需要针对第四种,即约分。
注意:求gcd的两个数都只能是非负整数,绝对不能有负数!
最后遍历map
,找到最大的数,加上第一种情况的个数就完事了。
F1
显然需要经过那个原图度数最多的点,如果有多个的话随便取。
然后从这个点开始跑个bfs,得到的bfs树就是一个最大度数的生成树了。
我这个sb居然用堆优化的prim还想了很久。。。
其他的题目
标签:分记,map,第一种,frac,第二种,Codeforces,数都,544,neq 来源: https://www.cnblogs.com/Garen-Wang/p/10504709.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。