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

文章目录

  • 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=1p(1p)i1i(1)(1p)k=i=1p(1p)ii=i=2p(1p)i1(i1)(2)(1)(2)pk=p+i=2p(1p)i1k=1+i=2(1p)i1=i=0(1p)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(1p)i=1(1p)1(1p)=p1

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

CodeChef-Milestones

problem

题目链接

solution

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

也就是说,两个点属于同一直线的概率为 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}\rceil2n,因为选择的数越多,gcd⁡\gcdgcd 只会受到更多限制变小而不会变大。

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

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

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

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

再求出与 aia_iaigcd⁡\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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316648.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初探奥尔良(Orleans)

由于工作上关系目前经常被各种并发数据问题搞得焦头烂额&#xff0c;要么要性能舍弃数据上得一致性&#xff0c;要么要一致性但是却得到了特别糟糕的响应。难道鱼和熊掌真的无法兼得吗&#xff1f;然后找到了类似奥尔良这种基于Actor模型的kuangjia首先本人因为是C#系的所以暂不…

2021杭电多校1

题号题目知识点AMod, Or and Everything思维数论BRocket landCPuzzle loopDAnother thief in a ShopEMinimum spanning tree推结论欧拉筛FXor sum01字典树GPass!HMaximal submatrix单调栈IKD-GraphJzotoKNecklace of Beads

P4775 [NOI2018] 情报中心(线段树合并)

前言 似乎也没有那么难&#xff1f; 但确实也不太好想。 解析 对于两条有交路径 (u1,v1,c1),(u2,v2,c2)(u_1,v_1,c_1),(u_2,v_2,c_2)(u1​,v1​,c1​),(u2​,v2​,c2​)&#xff0c;设 tlca(u1,u1)tlca(u_1,u_1)tlca(u1​,u1​) 为四个 lca 中最深的&#xff0c;那么代价的二…

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

文章目录[Poi2014]CouriersproblemsolutioncodeCodeChef - TKCONVEXproblemsolutioncode随机算法的典型套路&#xff1a;枚举太花时&#xff0c;转化为随机一个数。然后通过对正确率的分析&#xff0c;选择一个随机的次数来卡。前提是要保证每一次检验随机是否为答案的时间复杂…

[NewLife.XCode]功能设置

NewLife.XCode是一个有10多年历史的开源数据中间件&#xff0c;由新生命团队(2002~2019)开发完成并维护至今&#xff0c;以下简称XCode。整个系列教程会大量结合示例代码和运行日志来进行深入分析&#xff0c;蕴含多年开发经验于其中&#xff0c;代表作有百亿级大数据实时计算项…

I love max and multiply HDU - 6971(详细解答)

I love max and multiply HDU - 6971 题意&#xff1a; 数组a和b&#xff0c;现在构造一个数组c&#xff0c;使得c[k]max(a[i] * b[j]) , i&j>k 求数组c的和 题解&#xff1a; 我们可以考虑求出所有Dkmax(Ai * Bj)并满足i&jk&#xff0c;然后再从后向前取&#…

[NewLife.XCode]数据模型文件

NewLife.XCode是一个有10多年历史的开源数据中间件&#xff0c;由新生命团队(2002~2019)开发完成并维护至今&#xff0c;以下简称XCode。整个系列教程会大量结合示例代码和运行日志来进行深入分析&#xff0c;蕴含多年开发经验于其中。开源地址&#xff1a;https://github.com/…

[HNOI2013]数列(差分)

[HNOI2013]数列 problem 洛谷链接 solution 假设每天的股价为 a[i]a[i]a[i]。则需满足 ∀i<ka[i1]−a[i]≤m\forall_{i<k}a[i1]-a[i]\le m∀i<k​a[i1]−a[i]≤m。又有参数满足 m(k−1)<nm(k-1)<nm(k−1)<n。 也就是说每天的股价都可以取到上限&#xf…

24dian(牛客多校第三场)

24dian(牛客多校第三场) 题意&#xff1a; 给你n张牌&#xff0c;每张牌的大小为1 ~ 13&#xff0c;问这些牌与加减乘除任意组合(可以使用括号)&#xff0c;且但所有的有效解在计算过程中都涉及到分数&#xff0c;即非整数&#xff0c;能否组成答案m&#xff0c;如果可以&…

[NewLife.XCode]高级增删改

NewLife.XCode是一个有10多年历史的开源数据中间件&#xff0c;支持nfx/netstandard&#xff0c;由新生命团队(2002~2019)开发完成并维护至今&#xff0c;以下简称XCode。整个系列教程会大量结合示例代码和运行日志来进行深入分析&#xff0c;蕴含多年开发经验于其中&#xff0…

[AtCoder Grand Contest 048] D - Pocky Game(区间dp + 博弈)

problem AtCoder solution 注意&#xff1a;本题不是平等博弈&#xff0c;因为先手只能取最左边&#xff0c;后手只能取最右边。 设 f[l][r][k]:f[l][r][k]:f[l][r][k]: 只剩下区间 [l,r][l,r][l,r] 等待操作&#xff0c;第 lll 堆石子数量为 kkk 的时候&#xff0c;先手是…

P4147 玉蟾宫

P4147 玉蟾宫 题意&#xff1a; 给你一个n * m的矩阵&#xff0c;矩阵每个值有F或R&#xff0c;求最大的全为F的矩阵&#xff0c;输出面积 * 3 题解&#xff1a; 很明显&#xff0c;求最大01矩阵&#xff0c;悬线法或者单调栈 对于模板除了要记熟还要知道原理&#xff0c;不…

[NewLife.XCode]数据初始化

NewLife.XCode是一个有10多年历史的开源数据中间件&#xff0c;支持nfx/netstandard&#xff0c;由新生命团队(2002~2019)开发完成并维护至今&#xff0c;以下简称XCode。整个系列教程会大量结合示例代码和运行日志来进行深入分析&#xff0c;蕴含多年开发经验于其中&#xff0…

I love counting HDU - 6964

I love counting HDU - 6964 题意&#xff1a; 一个数组c&#xff0c;给你了(l,r)一个范围&#xff0c;问这个范围内满足ci ^ a < b数量的有多少&#xff1f; 题解&#xff1a; 我第一反应是莫队&#xff0c;直接莫队得到结果&#xff0c;但是发现样例不对&#xff0c;再…

CF98E Help Shrek and Donkey(纳什博弈 + 大讨论)

problem 洛谷链接 solution 纳什均衡 是博弈论中一种解的概念&#xff0c;它是指满足下面性质的策略组合&#xff1a;任何一位玩家在此策略组合下单方面改变自己的策略&#xff0c;其他玩家策略不变&#xff0c;都不会提高自身的收益。 一个策略组合被称为纳什均衡当且仅当…

[NewLife.XCode]反向工程(自动建表建库大杀器)

NewLife.XCode是一个有10多年历史的开源数据中间件&#xff0c;支持nfx/netstandard&#xff0c;由新生命团队(2002~2019)开发完成并维护至今&#xff0c;以下简称XCode。整个系列教程会大量结合示例代码和运行日志来进行深入分析&#xff0c;蕴含多年开发经验于其中&#xff0…

树上启发式合并

文章内容选自OI Wiki 参考博客 内容&#xff1a; 树上启发式合并&#xff08;dsu on tree&#xff09;对于某些树上离线问题可以速度大于等于大部分算法且更易于理解和实现的算法。 他是用来解决一类树上询问问题&#xff0c;一般这种问题有两个特征&#xff1a; 只有对子树…

CF1270H Number of Components(线段树)

problem 洛谷链接 solution 定理 若 i<ji<ji<j 且 i,ji,ji,j 联通&#xff0c;则必有 k∈(i,j)k\in(i,j)k∈(i,j) 也与 i,ji,ji,j 联通。 下面给出证明&#xff0c;挺显然的。 若 ai<aja_i<a_jai​<aj​&#xff0c;则一定有 ai<ak∨ak<aja_i<…

tex模板

\documentclass{beamer} \usetheme{Madrid} \usecolortheme{default} \usepackage{ctex} \usefonttheme[math]{serif}\usepackage{graphicx} \graphicspath{{img/},{pics/}} % 图片在img目录\title{} \author{} \institute{} \date{\today} \begin{document}\maketitle\begin{f…

Wexflow:C#中的开源工作流引擎

Wexflow是一个高性能、可扩展、模块化和跨平台的工作流引擎。Wexflow在GitHub&#xff1a;https://github.com/aelassas/Wexflow。Wexflow的目标是在没有用户干预的情况下自动执行重复任务。在Wexflow的帮助下&#xff0c;构建自动化和工作流过程变得简单。Wexflow还有助于使长…