文章目录

  • CodeChef-Milestones
    • problem
    • solution
    • code
  • CF364D-Ghd
    • problem
    • solution
    • code

设随机化一次的正确率为 ppp,一次的复杂度为 O(f(n))O(f(n))O(f(n))。则随机的期望次数 kkk:
k=∑i=1∞p(1−p)i−1i(1)(1−p)k=∑i=1∞p(1−p)ii=∑i=2∞p(1−p)i−1(i−1)(2)(1)−(2)⇒p⋅k=p+∑i=2∞p(1−p)i−1⇒k=1+∑i=2∞(1−p)i−1=∑i=0∞(1−p)ik=\sum_{i=1}^∞p(1-p)^{i-1}i\quad\quad\quad(1)\\\\ (1-p)k=\sum_{i=1}^∞p(1-p)^ii=\sum_{i=2}^∞p(1-p)^{i-1}(i-1)\quad (2)\\\\ (1)-(2)\Rightarrow p·k=p+\sum_{i=2}^∞p(1-p)^{i-1}\Rightarrow k=1+\sum_{i=2}^∞(1-p)^{i-1}=\sum_{i=0}^∞(1-p)^i k=i=1∑∞​p(1−p)i−1i(1)(1−p)k=i=1∑∞​p(1−p)ii=i=2∑∞​p(1−p)i−1(i−1)(2)(1)−(2)⇒p⋅k=p+i=2∑∞​p(1−p)i−1⇒k=1+i=2∑∞​(1−p)i−1=i=0∑∞​(1−p)i
由等比公式得: k=∑i=0∞(1−p)i=1−(1−p)∞1−(1−p)=1pk=\sum_{i=0}^∞(1-p)^i=\frac{1-(1-p)^∞}{1-(1-p)}=\frac{1}{p}k=∑i=0∞​(1−p)i=1−(1−p)1−(1−p)∞​=p1​。

综上随机算法求解的期望复杂度为 O(p−1f(n))O(p^{-1}f(n))O(p−1f(n))。

CodeChef-Milestones

problem

题目链接

solution

因为最多只有七条直线就可以覆盖所有点,可以推出 覆盖点最多的直线至少覆盖 ⌈n7⌉\lceil\frac n7\rceil⌈7n​⌉ 个点

也就是说,两个点属于同一直线的概率为 17\frac{1}{7}71​。

期望来说,777 次随机化点就可以通过了,但是保险起见,可以运行 100010001000 次。

时间复杂度 O(Tnk)O(Tnk)O(Tnk),超了但是跑得很快》》o_o …

code

#include <bits/stdc++.h>
using namespace std;
#define maxn 10005
int T, n;
double x[maxn], y[maxn];int main() {scanf( "%d", &T );while( T -- ) {scanf( "%d", &n );for( int i = 1;i <= n;i ++ ) scanf( "%lf %lf", &x[i], &y[i] );mt19937 wwl(time(0));uniform_int_distribution < int > range( 1, n );int ans = 0;for( int t = 1;t <= 1000;t ++ ) {int a = range( wwl ), b = range( wwl );int cnt = 0;if( x[a] == x[b] ) {for( int i = 1;i <= n;i ++ )if( x[i] == x[a] ) cnt ++;}else {cnt = 1;double k = ( y[a] - y[b] ) / ( x[a] - x[b] );for( int i = 1;i <= n;i ++ )if( x[i] != x[a] and ( y[i] - y[a] ) / ( x[i] - x[a] ) == k ) cnt ++;}ans = max( ans, cnt );}printf( "%d\n", ans );}return 0;
}

CF364D-Ghd

problem

题目链接

solution

贪心地,∣S′∣|S'|∣S′∣ 选出的子集大小应该恰好为 ⌈n2⌉\lceil\frac{n}{2}\rceil⌈2n​⌉,因为选择的数越多,gcd⁡\gcdgcd 只会受到更多限制变小而不会变大。

那么每个数都是 12\frac 1 221​ 的概率会属于最后答案子集。

随机化 101010 次,正确率 1−(1−12)101-(1-\frac 1 2)^{10}1−(1−21​)10 已经很优秀了。

随机化出一个数 axa_xax​ 假设其属于最后答案子集。

先求出 axa_xax​ 的所有因子数,最后的答案肯定是 axa_xax​ 的因子。用桶 cntpcnt_pcntp​ 记录下来。

再求出与 aia_iai​ 的 gcd⁡\gcdgcd,枚举 gcd⁡\gcdgcd 的因子数,找到因子所在的桶,cntp++cnt_p++cntp​++。

最后进行桶的合并,如果桶 ppp 代表的因子是桶 qqq 代表的因子倍数,则有 cntq+=cntpcnt_q+=cnt_pcntq​+=cntp​。

1e121e121e12 内因子数最多的不超过 680068006800 个。

单次时间复杂度,假设 δ(n)\delta(n)δ(n) 为 nnn 的因子个数,O(ax+δ(n)2+nlog⁡n)O(\sqrt{a_x}+\delta(n)^2+n\log n)O(ax​​+δ(n)2+nlogn)。

code

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define maxn 1000005
int n, ans, tot;
int a[maxn], d[maxn], cnt[maxn];int gcd( int x, int y ) {if( ! y ) return x;else return gcd( y, x % y );
}void divide( int x ) {tot = 0;for( int i = 1;i * i <= x;i ++ )if( x % i == 0 ) {d[++ tot] = i;if( i * i != x ) d[++ tot] = x / i;}sort( d + 1, d + tot + 1 );
}void solve( int x ) {divide( x );for( int i = 1;i <= tot;i ++ ) cnt[i] = 0;for( int i = 1;i <= n;i ++ ) {int g = gcd( x, a[i] );int pos = lower_bound( d + 1, d + tot + 1, g ) - d;cnt[pos] ++;}for( int i = 1;i <= tot;i ++ )for( int j = i + 1;j <= tot;j ++ )if( d[j] % d[i] == 0 ) cnt[i] += cnt[j];for( int i = tot;i;i -- ) {if( d[i] <= ans ) break;if( cnt[i] >= ( n + 1 >> 1 ) ) ans = max( ans, d[i] );}
}signed main() {scanf( "%lld", &n );for( int i = 1;i <= n;i ++ ) scanf( "%lld", &a[i] );mt19937 wwl(time(0));uniform_int_distribution < int > range( 1, n );for( int t = 1;t <= 10;t ++ ) {int x = range( wwl );solve( a[x] );}printf( "%lld\n", ans );return 0;
}

[骗分技巧——随机化Ⅰ]CodeChef-Milestones,CF364D-Ghd相关推荐

  1. [骗分技巧——随机化Ⅱ] [Poi2014]Couriers,CodeChef - TKCONVEX

    文章目录 [Poi2014]Couriers problem solution code CodeChef - TKCONVEX problem solution code 随机算法的典型套路:枚举太 ...

  2. 新版骗分导论 - 第7 版

    新版骗分导论第7版\quad\tiny\texttt{第 7 版}第 7 版 修订--Jerrycyx(CSDN,洛谷) 洛谷博客查看 前言 这是我在倒腾洛谷水贴时偶然翻到的一篇博客,自认为写得很好, ...

  3. 大神cyd的骗分导论

    新 版 骗 分 导 论 THE NEW GUIDE OF CHEATING IN INFORMATICS OLYMPIAD 蒟 蒻 的 宝 书 目录 第1章 绪论 第2章 从无解出发 2.1 无解情况 ...

  4. 新 版 骗 分 导 论

    新 版 骗 分 导 论{蒟 蒻 的 宝 书} {目 录} 第1章 绪论 第2章 从无解出发 ↪ 2.1 无解情况 ↪ 2.2 样例--白送的分数 第3章 "艰苦朴素永不忘" ↪ 3 ...

  5. 新版骗分导论(最少骗到省级三等奖)

    第1章 绪论 在Oier中,有一句话广为流传: t{任何蒟蒻必须经过大量的刷题练习才能成为大牛乃至于神牛}任何蒟蒻必须经过大量的刷题练习才能成为大牛乃至于神牛≺ 这就是著名的lzn定理.然而,我们这些 ...

  6. 骗分导论-第8修订测试版

    参考:<骗分导论-第7修订测试版><骗分导论-第6修订测试版><骗分导论-第5修订测试版><骗分导论-第4修订测试版><骗分导论-第3修订测试版& ...

  7. C++考试题目骗分秘籍

    应用在什么情况(前言) 如果考试时间只有15分钟了,你还有3道题没写,或者是实在不会做,那该怎么办??? 答案只有三条: 1.放弃 2.骗分 3.拼命想出来 显然只有2,3可选,所以还剩好多时间的话( ...

  8. “ 骗 ”分指南——对于蓝桥你不得不知的应试技巧(文末发送礼包)

    文章目录 前言 合理使用考试外的电脑工具--简称外挂 计算器 excel 常用的代码模板 辗转相除法求最大公约数 闰年 素数 排序--sort 函数库 暴力 万能钥匙--DFS 打表 最后 前言 蓝桥 ...

  9. CV入门赛最全思路上分技巧汇总!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:安晟,算法工程师,Datawhale成员 赛题数据及背景 http ...

最新文章

  1. 关于PCA算法的一点学习总结
  2. 一不小心,删错了,还把回收站清空了,咋办啊?
  3. 浅读:ITSM信息技术服务管理
  4. 响应式网页布局 - W3Schools How-Tos 01
  5. centos7重新加载服务的命令_CentOS7 从查看、启动、停止服务说起systemctl
  6. webpack+es6+node+react初实践及总结
  7. 生产企业如何部署VMware虚拟化的解决方案
  8. 《江南》、乌镇、《似水年华》
  9. Sping : @InitBinder注解
  10. PHP开发中涉及到emoji表情的几种处理方法
  11. Java 重写(Override)与重载(Overload)区别
  12. 口才训练方法——速读法、背诵法
  13. ​Windows下RSA密钥生成工具openssl​
  14. C#面向对象封装继承多态
  15. obs 推流编码在哪设置_直播工具OBS推流配置操作指引
  16. android 版本选择,谷歌服务框架版本如何选择 我该下载哪个版本解析
  17. BATH四巨头鼎立,中国云市场将走向何方?
  18. Java快排两种写法
  19. pdf如何在线旋转?PDF旋转的方法
  20. 《联盟》读书笔记(三):如何协调员工与公司的目标和价值观

热门文章

  1. 数学告诉你家庭关系的奥秘
  2. 2020下半年新机最新消息_提前剧透 2020 年下半年五大新机
  3. java执行更新sql_sql server执行更新需要更多时间
  4. java 判断进程状态_获取远程服务器上 Java 进程的运行状态
  5. html图片宽度高度等比例绽放,css图片自动绽放大小,左右,上下居中
  6. 5gh掌上云计算认证不通过_【众志成城战疫情】法官助理告诉你“移动微法院”、“掌上法庭”有多便捷、有多硬核~!...
  7. linux 往文件写4k大小,[svc]为何linux ext4文件系统目录默认大小是4k?
  8. tensorrt轻松部署高性能dnn推理_部署环境之:tensorRT的插件
  9. 数据科学与python语言——Matplotlib数据可视化基础
  10. 算法设计与分析——递归与分治策略——循环日程赛