在今天的模拟赛中,部分同学由于对出现某个数在模 \(1000000007\) 意义下为 \(0\) 的情况不规范被 Hack。

Hack 原理:开始时有 \(2\) 个 \(1\),先都加到 \(1000000001\),然后一个一个加 \(8\) 次虽然加 \(7\) 次足以 Hack,这个时候如果对 \(1000000007\) 处理不好,可能后面都变成 \(0\)。

我的方案:考虑两个性质(按照题解):

  1. \(2\) 操作到 \(1000000007\) 的倍数(分子为 \(0\))只可能是 \(1000000007\),也就是说每个位置至多出现一次分子或分母为 \(0\)。
  2. 分母为 \(0\) 的上一步同样位置的 \(2\) 操作中一定分子为 \(0\),因为分母为 \(0\) 时必定出过 \(a_i=1000000007\)。(我可能给之前的同学解释错了,因为可能出现 \(3\) 操作使得分子分母为 \(0\) 的 \(2\) 操作之间夹着几个,但也无伤大雅,这里致以诚挚歉意)。

综上所述,考虑记录每个位置上一次的分子为 \(0\) 位置,维护一个指针指向当前更新到的点。遇到分子为 \(0\) 的值,停止维护,输出答案一定为 \(0\)。遇到分母为 \(0\),找到对应分子为 \(0\) 的位置,合并两个分数:将后者的分子赋给前者,后者置为 \(1\),这样保证后面的值都是对的。指针继续往下跳转,直到遇到下一个分子为 \(0\) 的数。

以 Hack 数据为例,最后几个数为 \(\frac{0}{1000000006},\frac{0}{1000000006},\frac{1}{0},\frac{1}{0}\cdots\),位置分别在 \(1,2,1,2\cdots\),扫到第一、二个数停止更新,输出 \(0\)。扫到第三个数,将第一个数变成 \(\frac{1}{1000000006}\),第三个数变为 \(1\),往下更新到第二个数处。扫到第四个数,同理更新,此时可以更新到第四个数。

upd:好像还把精度卡了,PEP \(10^{-15}\) 的 eps 没过....我的代码用的分数类。

附:数据,我的代码

Hack 说明的更多相关文章

  1. css常用hack

    原文地址:css常用hack 突然想起今天早上在CNZZ看到的统计数据,使用IE6.7的用户比例还真多,看到之后我的心都碎了.微软都放弃了为毛还有这么多人不死心? 所以说,IE下的兼容还是得做的. – ...

  2. CSS3_01之选择器、Hack

    1.兄弟选择器:①相邻兄弟选择器:元素的后一个兄弟元素,选择器1+选择器2:②通用兄弟选择器:元素后的所有兄弟元素,选择器1~选择器2: 2.属性选择器:attr表示属性名称,elem表示元素名:①[ ...

  3. CSS Hack技术介绍及常用的Hack技巧集锦

    一.什么是CSS Hack? 不同的浏览器对CSS的解析结果是不同的,因此会导致相同的CSS输出的页面效果不同,这就需要CSS Hack来解决浏览器局部的兼容性问题.而这个针对不同的浏览器写不同的CS ...

  4. Medial Queries的另一用法——实现IE hack

    众所周知,有些时候为了实现IE下的某些效果与现代浏览器一致,我们不得不使用一些hack手段来实现目的.比如说使用"\0","\"和"\9"来 ...

  5. CSS Hack

    CSS HACK,网上有很多,主要是IE版本不同造成的,尽量不要用CSS HACK,实在调不过去可以用一用,相信以后随着IE低版本的淘汰,CSS HACK也将不在使用. 类内部HACK IE6识别 - ...

  6. hack

    1.Firefox @-moz-document url-prefix() { .selector { property: value; } }上面是仅仅被Firefox浏览器识别的写法,具体如: @ ...

  7. 浅谈CSS hack(浏览器兼容)

    今天简单写一点关于浏览器兼容的处理方法,虽然百度上已经有很多,但是我还是要写! 先看一个图 这个图描述了2016年1月至8月网民们所使用的浏览器市场份额(来源:http://tongji.baidu. ...

  8. css3复杂选择器+内容生成+Css Hack

    1.复杂选择器2.内容生成3.多列4.CSS Hack(浏览器兼容性)=======================================1.复杂选择器 1.兄弟选择器 1.特点: 1.通过 ...

  9. dedecms功能性函数封装(XSS过滤、编码、浏览器XSS hack、字符操作函数)

    dedecms虽然有诸多漏洞,但不可否认确实是一个很不错的内容管理系统(cms),其他也不乏很多功能实用性的函数,以下就部分列举,持续更新,不作过多说明.使用时需部分修改,你懂的 1.XSS过滤. f ...

  10. CSS hack技巧大全

    ——作者:吴雷君 兼容范围: IE:6.0+,FireFox:2.0+,Opera 10.0+,Sarari 3.0+,Chrome 参考资料: 各游览器常用兼容标记一览表: 标记 IE6 IE7 I ...

随机推荐

  1. 【Web】前端框架对微软老旧浏览器的支持

    零.原因 最近要做一个项目,要能在学校机房运行的,也要在手机上运行.电脑和手机,一次性开发,那最好的就是响应式前端框架了.手机和正常的电脑兼容性问题应该都不大,但是学校机房都是Win7的系统,自带的都 ...

  2. C#/.NET/.NET Core优秀项目和框架2025年3月简报

    前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的详细介绍.功能特点.使用方式以及部分功能 ...

  3. 0x00 语法知识

    目录 C++ STL Vector Pair String Queue Stack Deque Set Map Bitset Algorithm库函数 Reverse Unique Random_sh ...

  4. MySQL的limit优化2

    一.底层原理 在 MySQL 8.0 中,当使用 LIMIT offset, count 进行分页查询时,如果 offset 非常大(例如 LIMIT 200000, 10),性能会显著下降. 这是因 ...

  5. TreeSet的add方法源码分析

    一.JDK 1.8 中 TreeSet 的 add 方法源码详细分析 TreeSet 是 Java 集合框架中的一个有序集合类,基于红黑树(TreeMap)实现.TreeSet 的 add 方法用于向 ...

  6. K8s新手系列之Pod容器中的command和args指令

    概述 command和args是containers下的两个指令,类似Dockerfile中的ENTRYPONIT和CMD指令. 官方文档地址:https://kubernetes.io/zh-cn/ ...

  7. 【经验】Python3|输入多个整数(map方法或ctypes调用C标准库scanf)

    文章目录 方法一:多次调用input 1. 代码 方法二:调用C标准库 1. 代码 2. 残留的问题(int数组取元素) 附:计算时间差的程序(使用实例) 第一种读取方式: 第二种读取输入方式: 方法 ...

  8. k8s入门操作

    kubectl -->apiserver 管理工具 管理k8s集群 增删改查node kubectl get service/node/replicaset/deployment/statefu ...

  9. LR梯度下降法MSE演练

    同步进行一波网上代码搬砖, 先来个入门的线性回归模型训练, 基于梯度下降法来, 优化用 MSE 来做. 理论部分就不讲了, 网上一大堆, 我自己也是理解好多年了, 什么 偏导数, 梯度(多远函数一阶偏 ...

  10. WordPress插件:dsdiss-ai-paraphrasing(火山引擎版)文章伪原创 !一键创作!升级!

    本站原创!<文章伪原创插件(火山引擎版)>是一款基于WordPress开发的高效内容创作工具,依托火山方舟AI模型实现智能化文章伪原创处理.插件支持在后台配置API密钥与模型ID,可灵活设 ...