又见彩票事件(含米哈游算法变形题)

又见彩票事件

1月17日,中国体彩最新开奖结果出炉,其中“排列3”和“排列5”均出现罕见的“连5”组合。

体彩“排列3”的开奖号码为“555”,“排列5”的开奖号码为“55555”。

5亿奖池被清空。

开奖后第二天就有同学问我怎么看。

我 ... 我能怎么看?

2.2 亿 的时候我已经看过了,也把结论分享过给大家了。

果然,1月18号这事儿上热搜之后,我们又一次的迎来最具"说服力"的回应:

1月18日,相关话题冲上微博热搜,有网友质疑开奖号码过于罕见和特殊,是否存在内幕。对此,中国体彩客服回应记者称,“开奖全流程有网络直播,也有两名工作人员的监督,号码是随机摇出来的,不存在内幕和故障,开奖是真实有效的。”

这里面的重点,也是在普通人常识里最有说服力,最能实现逻辑自洽的,是「监督」二字。

...

其实也难怪大家来问我看法。

虽然我已经在 1月10号 的推文中详细说过彩票问题,但文章似乎被平台精准限流了。

在我近期的发文中,那篇文章的阅读是倒数第一。

如果是和「前一天」及「后一天」的推文去比较,则更是突兀到不行。

alt

我十分好奇这里面到底存在什么玄学因素。

于是,我萌生了把这些“似乎有风险“,会被公众号推荐系统标记的内容重发一遍。

直接对那天的推文中的「彩票」部分内容进行截图贴出,我估计是可以绕过某些机制,让阅读回归到正常水准的。

但,那又有什么意思呢?

我就是要看看,对于一些无法反驳的事实,简中网是如何让文章不被看到的。

以下看到的内容,是对 1月10号 推文中「锐评时事」部分的完全复制。

...

本来今天不打算更新闻的了,中午的时候看到「花10万中2.2亿彩票事件调查进展」上热搜。

原以为总算和"融创"来了点不一样的了。

alt

结果调查结果是暂无结果,调查进展是没有进展。

一则报道,没有实际的信息增量,但有广泛的群众记忆和讨论基础。

使得报道发出之后,话题稳坐热搜榜的第二名。

alt

只要能骂能喷,能对外输出情绪,群众从不在意这是新闻还是旧闻,有意义还是没意义。

如果你问我,如何理解彩票事件。

能问出这样的问题,那么大概率你对福利彩票的认识存在较大盲区。

嗯,是盲区,而不是误区。

我这里简单列举一些基本信息:

  1. 彩票中心的博彩专营权是由国务院给予的,主要目的是通过发售彩票,来增加财政收入
  2. 目前福利彩票的开奖过程,都是有公证人在场的
  3. 公证人来自于公证机构,公证机构的公证权是由国家直接下放,即不存在自由经济市场产生的公证企业,必须是国家司法证明机构,才能行使公证权

看到这里,一切正常,逻辑闭环。

也符合普罗大众对彩票事业的理解。

可能大家印象中的细节没有这么足,但结论肯定是大差不差:彩票的公平性由国家直接或间接保证。

但稍微深究就可以发现当中的不合理关系,我补充一些大家可能不知道的信息:

  1. 公证机构虽然是由国家直接下放公证权,但不属于公务员体系,是自收自支的事业单位
  2. 开奖过程的公证人在场,并非规定的条例,而是彩票中心为了自身形象,多卖彩票,花钱从公证机构请的。主要作用不得而知,但个人猜想,如果现场有公证人,那么开奖过程中,增加一个公证人宣誓的环节,会在观众心理上增加许多正面作用

现场公证员的拿着背靠国家的公证权,但位于自收自支的事业单位,可能会有对权力进行变现的局部压力,彩票中心作为现场公证人的甲方,可能也会影响公证人员的立场。

这里也有必要声明一下,上述只是基于现有规则进行的动机猜测,不代表事实本身。

任何有独立思考能力的人都会有自己的想法。

但彩票的本质终归不是数学。

搞清楚这些之后,你可能要推翻以前对福利彩票的认识了。

但普通人接受到这些信息之后,可能只够在一段时间内,认识到「彩票不是一个概率游戏」,长期还是会落入「用数量对抗随机性」的不切实际幻想中。

归根到底,是这些利害关系不足以产生画面感。

无法与报道刊登的「xxx 中 xxxx 万元」形成对立效果。

因此,我有必要提供一个具体的场景,断了大家通过彩票致富的念想。

你可以把这游戏看作是一场特殊「剪刀石头布」:赢了得 500w,输了赔 2 元,但永远是对方后出。如果对方一时间头脑发热出错了,他有权判定无效,重开一盘。

好,现在我已经将一个画面深深植入你的脑海。

大概率足够你对现有的体制下的游戏产生免疫效果。

...

好,复述完毕。

如果本推文达到了阅读的平均水准,那么很好,之前没被传播出去的东西,现在有了二次机会。

如果本推文没有达到阅读的平均水准,那么至少你和我都见证了某些无形的东西,亦具意义。

...

回归主线。

过去一周,大家对米哈游(原神)的一面算法题十分感兴趣,但那道题毕竟太裸(太模板)了。

所以这次,我给大家安排了一道「变形题」试试。

题目描述

平台:LeetCode

题号:1035

在两条独立的水平线上按给定的顺序写下 s1s2 中的整数。

现在,可以绘制一些连接两个数字  和  的直线,这些直线需要同时满足满足:

  • 且绘制的直线不与任何其他连线(非水平线)相交。

请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。

以这种方法绘制线条,并返回可以绘制的最大连线数。

示例 1: alt

输入:s1 = [1,4,2], s2 = [1,2,4]

输出:2

解释:可以画出两条不交叉的线,如上图所示。 
但无法画出第三条不相交的直线,因为从 s1[1]=4 到 s2[2]=4 的直线将与从 s1[2]=2 到 s2[1]=2 的直线相交。

示例 2:

输入:s1 = [2,5,1,2,5], s2 = [10,5,2,1,5,2]

输出:3

示例 3:

输入:s1 = [1,3,7,1,7,5], s2 = [1,9,2,5,1]

输出:2

提示:

动态规划

这是一道「最长公共子序列(LCS)」的轻度变形题。

对于这类题都使用如下「状态定义」即可:

代表考虑 的前 个字符、考虑 的前 的字符,形成的最长公共子序列长度。

然后不失一般性的考虑 如何转移。

由于我们的「状态定义」只是说「考虑前 个和考虑前 个字符」,并没有说「一定要包含第 个或者第 个字符」(这也是「最长公共子序列 LCS」与「最长上升子序列 LIS」状态定义上的最大不同)。

我们需要考虑「不包含 ,不包含 」、「不包含 ,包含 」「包含 ,不包含 」、「包含 ,包含 」四种情况:

  • 不包含 ,不包含 :结合状态定义,可以使用 进行精确表示。

  • 包含 ,包含 :前提是 ,可以使用 进行精确表示。

  • 不包含 ,包含 :结合状态定义,我们无法直接将该情况表示出来。

    注意 只是表示「必然不包含 ,但可能包含 」的情况,也就是说 其实是该情况与情况 的合集

    但是由于我们求的是「最大值」,只需要确保「不漏」即可保证答案的正确(某些情况被重复参与比较不影响正确性),因此这里直接使用 进行表示没有问题。

  • 包含 ,不包含 :与情况 同理,直接使用 表示没有问题。

就是在上述所有情况中取 而来,由于情况 被 情况 和 情况 所包含,因此我们只需要考虑 三种状态即可,其中最后一种状态需要满足 前提条件。

因此我们最后的状态转移方程为:

上述分析过程建议加深理解,估计很多同学能 AC 但其实并不知道 LCS 问题的状态转移是包含了「重复状态比较」的。

Java 代码:

class Solution {
    public int maxUncrossedLines(int[] s1, int[] s2) {
        int n = s1.length, m = s2.length;
        int[][] f = new int[n + 1][m + 1];
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                f[i][j] = Math.max(f[i - 1][j], f[i][j - 1]);
                if (s1[i - 1] == s2[j - 1]) {
                    f[i][j] = Math.max(f[i][j], f[i - 1][j - 1] + 1);
                }
            }
        }
        return f[n][m];
    }
}

C++ 代码:

class Solution {
public:
    int maxUncrossedLines(vector<int>& s1, vector<int>& s2) {
        int n = s1.size(), m = s2.size();
        vector<vector<int>> f(n + 1vector<int>(m + 10));
        for (int i = 1; i <= n; ++i) {
            for (int j = 1; j <= m; ++j) {
                f[i][j] = max(f[i - 1][j], f[i][j - 1]);
                if (s1[i - 1] == s2[j - 1]) {
                    f[i][j] = max(f[i][j], f[i - 1][j - 1] + 1);
                }
            }
        }
        return f[n][m];
    }
};

Python 代码:

class Solution:
    def maxUncrossedLines(self, s1: List[int], s2: List[int]) -> int:
        n, m = len(s1), len(s2)
        f = [[0] * (m + 1for _ in range(n + 1)]
        for i in range(1, n + 1):
            for j in range(1, m + 1):
                f[i][j] = max(f[i - 1][j], f[i][j - 1])
                if s1[i - 1] == s2[j - 1]:
                    f[i][j] = max(f[i][j], f[i - 1][j - 1] + 1)
        return f[n][m]

TypeScript 代码:

function maxUncrossedLines(s1: number[], s2: number[]): number {
    const n = s1.length, m = s2.length;
    const f = Array.from({ length: n + 1 }, () => Array(m + 1).fill(0));
    for (let i = 1; i <= n; ++i) {
        for (let j = 1; j <= m; ++j) {
            f[i][j] = Math.max(f[i - 1][j], f[i][j - 1]);
            if (s1[i - 1] === s2[j - 1]) {
                f[i][j] = Math.max(f[i][j], f[i - 1][j - 1] + 1);
            }
        }
    }
    return f[n][m];
};
  • 时间复杂度:
  • 空间复杂度:

我是宫水三叶,每天都会分享算法题解,并和大家聊聊近期的所见所闻。

欢迎关注,明天见。

更多更全更热门的「笔试/面试」相关资料可访问排版精美的 合集新基地 🎉🎉

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

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

相关文章

python系统学习Day1

section1 python introduction 文中tips只做拓展&#xff0c;可跳过。 PartOne introduction 首先要对于python这门语言有一个宏观的认识&#xff0c;包括特点和应用场景。 特点分析&#xff1a; 优势 提供了完善的基础代码库&#xff0c;许多功能不必从零编写简单优雅 劣势 运…

Microsoft Word 超链接

Microsoft Word 超链接 1. 取消超链接2. 自动超链接2.1. 选项2.2. 校对 -> 自动更正选项2.3. Internet 及网络路径替换为超链接 References 1. 取消超链接 Ctrl A -> Ctrl Shift F9 2. 自动超链接 2.1. 选项 2.2. 校对 -> 自动更正选项 ​​​ 2.3. Internet…

JS逆向进阶篇【去哪儿旅行登录】【上篇】

目标url: aHR0cHM6Ly91c2VyLnF1bmFyLmNvbS9wYXNzcG9ydC9sb2dpbi5qc3A 实现难点&#xff1a; 逆向滑块请求发送短信登录 目录 每篇前言&#xff1a;0、前置技术栈&#xff08;1&#xff09;JS实现页面滑动&#xff08;2&#xff09;JS实现记录滑动轨迹&#xff08;3&#xff…

Pandas从基础统计到高级分析的完整指南【第77篇—Pandas高级分析】

Pandas从基础统计到高级分析的完整指南 在数据科学和分析领域中&#xff0c;Pandas是Python中最受欢迎的数据处理库之一。它提供了丰富而强大的功能&#xff0c;其中包括各种统计方法&#xff0c;用于更好地理解和分析数据。本文将介绍Pandas中常用的统计方法&#xff0c;通过…

分享80个jQuery特效,总有一款适合您

分享80个jQuery特效&#xff0c;总有一款适合您 80个jQuery特效下载链接&#xff1a;https://pan.baidu.com/s/1o8TcFu68r67e7VeiwmR-XQ?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理…

游泳耳机怎么选?四大口碑最好游泳耳机推荐

在挑选适合游泳的耳机时&#xff0c;选择合适的产品至关重要。游泳不仅是一项身体锻炼&#xff0c;更是一种享受。佩戴耳机能够为游泳者提供更加愉悦的体验&#xff0c;但确保所选耳机符合水中使用的要求至关重要。 传统的有线耳机和非防水设计的蓝牙耳机并不适合水中使用&…

牛客错题整理——C语言(实时更新)

1.以下程序的运行结果是&#xff08;&#xff09; #include <stdio.h> int main() { int sum, pad,pAd; sum pad 5; pAd sum, pAd, pad; printf("%d\n",pAd); }答案为7 由于赋值运算符的优先级高于逗号表达式&#xff0c;因此pAd sum, pAd, pad;等价于(…

嵌入式Qt Qt Creator安装与工程介绍

一.Qt概述 什么是Qt&#xff1a;Qt是一个跨平台的C图形用户界面应用程序框架。它为应用程序开发者提供建立图形界面所需的所有功能。它是完全面向对象的&#xff0c;很容易扩展&#xff0c;并且允许真正的组件编程。 二.Qt Creator下载安装 下载地址&#xff1a;Index of /a…

从零开始实现消息队列(一)

从零开始实现消息队列 .什么是消息队列需求分析核心概念模型 . 什么是消息队列 相信大家都了解过阻塞队列和生产者消费者模型,而阻塞队列最大的用途,就是用于实现生产者消费者模型,生产者消费者模型有以下好处: 解耦合 解释: 当主机A给主机B发消息时,A给B发送请求,B给A返回响应…

C语言第二十三弹---指针(七)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 指针 1、sizeof和strlen的对比 1.1、sizeof 1.2、strlen 1.3、sizeof 和 strlen的对比 2、数组和指针笔试题解析 2.1、⼀维数组 2.2、二维数组 总结 1、si…

全坚固平板EM-I12U,全新升级后的优质体验

平板终端机在户外勘探、制造业、畜牧业、银行金融行业当中都不是陌生的&#xff0c;能采集各种数据来转换成信息流向企业和行业的各个分支当中&#xff0c;在整个行业发展、社会推动上面都起着关键性作用&#xff0c;而平板终端机的升级也就意味着未来的这些行业发展会进入一个…

服务治理中间件-Eureka

目录 简介 搭建Eureka服务 注册服务到Eureka 简介 Eureka是Spring团队开发的服务治理中间件&#xff0c;可以轻松在项目中&#xff0c;实现服务的注册与发现&#xff0c;相比于阿里巴巴的Nacos、Apache基金会的Zookeeper&#xff0c;更加契合Spring项目&#xff0c;缺点就是…