填字游戏
填字游戏 问题描述 在 3×33\times 33×3 个方格的方阵中要填入数字 111 到 101010 内的某 9 个数字,每个方格填一个整数,使所有相邻两个方格内的两个整数之和为素数 编写一个实验程序,求出所有满足这个要求的数字填法 思路分析 基本的算法流程如下 初始条件:从(1,1)开始搜索 退出条件:x == 4时,即此时前三行已经完成填数,ans自增,代表寻找到了一个合法的值 递归基本思路: 首先对填入的数字进行鉴权,是否满足填入的数使左侧和上方的两个数之和为素数 由于填数顺序为从左到右,上到下,所以只需要判断左侧和上方的两个数之和是否为素数即可 若该点可以令方阵合法,则填入该点,否则继续循环找一个可选点 使用vis数组标记使用过的数字,将合法的值填入 向左侧继续递归填数,要注意的是,如果当前的数已经是最后一个数字,就另起一行从最左侧进行递归搜索 最后取消标记,回溯上一个点 编码分析 核心算法 递归算法最重要的当然是边界条件的判断,结束条件定义了最简子问题的答案 这里的边界条件是x == 4时,即此时前三行已经完成填数,ans自增,代表寻找到了一 ...
钓鱼问题
钓鱼问题 题目描述 某人想在 hhh 小时内钓到数量最多的鱼。这时他已经在一条路边,从他所在的地方开始,放眼望去,nnn 个湖一字排开,湖编号依次是 1.2…n1.2\dots n1.2…n。他已经知道,从湖 iii 走到湖 i+1i+1i+1 需要花 5∗ti5*t_i5∗ti 分钟;他在湖 iii 钓鱼,第一个 555 分钟可钓到数量为 fif_ifi 的鱼,若他继续在湖 iii 钓鱼,每过 555 分钟,钓鱼量将减少 did_idi 请给他设计一个最佳钓鱼方案 (1<=H<=6,2<=n<=25)(1<=H<=6,2<=n<=25)(1<=H<=6,2<=n<=25) 输入格式 第一行:湖的数量 nnn 第二行:时间 hhh(小时)。 第三行:nnn 个数, f1,f2,…fnf_1,f_2,\dots f_nf1,f2,…fn 第四行:nnn 个数, d1,d2,…dnd_1,d_2,\dots d_nd1,d2,…dn 第五行:n−1n-1n−1 个数, t1,t2,…tn−1t_1,t ...
求解众数问题
求解众数问题 给定一个整数序列,每个元素出现的次数称为重数,重数最大的元素称为众数。编写一个实验程序对递增有序序列a求众数 分治法实现 本题的分治策略比较明确,不过使用分治策略解决众数问题需要原集合有序,在原集合无序的情况下需要对其排序,我建议在这里使用sort()先对数组进行排序(虽然题目里已经给出输入是递增的) 分治的主要思路如下 首先假设中间的元素 a[mid] 是众数 由两边向中间遍历,找到一个子序列,其值全部都等于 a[mid] ,记录下该段的 l 与 r 边界,统计重数和众数 这样就将一个数组分为三部分(左侧区域,中间的相等子序列,右侧区域),我们再对左右部分执行上述步骤,即可分治求解 只有集合有序的时候才能保证从两侧向中间遍历的时候,找到的第一个数就可以标定连续的一串相等的数的边界 1234567891011121314151617181920212223242526272829303132333435#include <bits/stdc++.h>using namespace std;int num, mid, l, r, maxcnt ...
求二叉树中最大和的路径
实验目的 熟悉 C/C++ 语言的集成开发环境 回顾数据结构中关于二叉树的有关运算 加深对递归过程的理解 问题描述 假设二叉树中的所有结点值为 int 类型,利用二叉树存储,设计递归算法求二叉树 bt 中从根结点到叶子结点路径和最大的一条路径 样例输入 输入数据格式为前序遍历,空节点用 # 表示 11 2 6 # # # 5 3 # # 2 # # 样例输出 一行一个整数,为二叉树中最大路径和的数 之后若干行,代表所有有可能存在的最大和路径,从根节点开始,每个节点由空格隔开,一行一条路径 12391 2 61 5 3 题解与分析 本题主要的思路是递归求解最大深度,再用最大深度的值进行的深度优先搜索,进而找出所有可能存在的最大和路径 二叉树的输入,建立和初始化 首先是一个经典的二叉树节点结构 12345typedef struct node{ struct node *lchild, *rchild; int value;} Node, *BTree; 我们关注一下题目中给出的输入格式 空节点用 # 表示 则我们需要判断当前输入是否为数字 下述 ...
骗分导论
THE NEW GUIDE OF CHEATING IN INFORMATICS OLYMPIAD 蒟 蒻 的 宝 书 第 1 章 绪论 在 Oier 中,有一句话广为流传: 任何蒟蒻必须经过大量的刷题练习才能成为大牛乃至于神牛。 然而,我们这些蒟蒻们,没有经过那么多历练,却要和大牛们同场竞技,我们该怎么以弱胜强呢?答案就是: 骗分 那么,骗分是什么呢?骗分就是用简单的程序(比标准算法简单很多,保证蒟蒻能轻松搞定的程序),尽可能多得骗取分数。 骗分的操作对于 ACM 赛制并没有作用,一般作用于 OI 赛制中 无论是 NOIP 还是 CSP 等比赛,骗分以及暴力都是极其有效的一种手段,尤其在你对题目所使用的算法不甚熟悉甚至于完全不能理解题意的时候,这往往能为你带来很多的分数。没有人知道你的程序是什么样的,所以你就算骗到了分也不会有人说你无耻,更何况这是极其常见的办法 第 2 章 从无解出发 2.1 无解情况 在很多题目中都有这句话:若无解,请输出-1 看到这句话时,骗分的蒟蒻们就欣喜若狂,因为——数据中必定会有无解的情况!那么,只要打出下面这个程序: 1printf(" ...
Mybatis分页插件PageHelper
用于 Mybatis 查询时快速使用分页功能,官方详细文档地址:PageHelper 插件 此处只记录简单使用的配置 使用配置 导入 maven 依赖 12345<dependency> <groupId>com.GitHub.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>RELEASE</version></dependency> 在 MyBatis 配置文件中配置拦截器插件 plugins标签在配置文件中的位置必须符合要求,否则会报错,顺序如下 <properties> <settings> <typeAliases> <typeHandlers> <objectFactory> <objectWrapperFactory> <plugins> <environme ...
鹿乃BEST
鹿乃的精选专辑《鹿乃 BEST》发售! 从鹿乃的同人活动开始到正式出道已经过了 6 年的现在,包含单曲在内的鹿乃本人选择的乐曲,是首张 BEST 专辑! 过去的动画合作曲自不必说,还收录了作为同人发表的稀有音源。 封面插图由水玉子负责。 乐曲列表 Stella-rium 作詞:くまのきよみ (熊野清美) 作曲・編曲:samfree TV 动画《放学后的昴星团》片头曲 2015 年 5 月 20 日发售,是鹿乃从唱见转型为歌手的开始,是鹿乃的首张商业专辑。要是说到对鹿乃影响最大的几首歌,Stella-rium 绝对意义非凡 ディアブレイブ 作詞・作曲・編曲:すこっぷ TV 动画《重装武器》片尾曲 2015 年 11 月 18 日发售,鹿乃的第二张商业化专辑单曲,也是自《Stella-rium》之后半年的第一张单曲。 是一首"在悲伤中展现力量"的歌曲 鹿乃在官方博客中说:"我带着对过去和未来的强烈意识与迄今为止和未来支持我的人们一起唱歌。 " 「今までとこれから応援してくれる人と、自分の過去と未来を強く意識して歌った」 プリ ...
2021年蓝桥杯校赛题解
题面我完全忘了,这里写的题面是我自己编的 关于代码里的一些习惯 我本地测试定义了 DEBUG 常量,#ifdef和#endif包裹的代码是用于进行文件流输入输出的,如果不想重复输入样例,可以新建一个input.in的纯文本文件,将样例打进去即可,控制台输出会输出至output.out文件内 若想使用文件流输入输出,需要在首部加入 1#define DEBUG Problem A 时间转换 Description 给出一个整数,表示从 1970 年 01 月 01 日 00 时 00 分 00 秒起至现在经过了多少毫秒,把它转换成HH:MM:SS的形式,使用 24 小时制,不足两位的时间补 0 Input 第一行一个整数 TTT ,表示输入的字符串,表示从 1970 年 01 月 01 日 00 时 00 分 00 秒起至现在的总毫秒数 Output 对于输入数据,输出一行格式为HH:MM:SS的字符串代表转换后的时间,注意不足两位的时间需要补 0,其中 0<T<1090<T<10^90<T<109 Sample Input 1163963440 ...
HNCPC 2021 D题题解
D 题题解 本题是数论题,主要用到的是求逆元的方法对除法进行优化 给定 nnn 和 mmm ,计算增量乘法公式之和: f(n,m)=∑i=1n∏j=ii+m−1jf(n,m)=\sum_{i=1}^n\prod_{j=i}^{i+m-1}j f(n,m)=i=1∑nj=i∏i+m−1j 测试用例不超过 505050 组,数据范围是 1≤n,m≤1061\le n,m\le 10^61≤n,m≤106 对于每个测试用例,输出 f(n,m)f(n,m)f(n,m) 对 109+710^9+7109+7 取模的结果。 Solution 方法 1:整数裂项 以求 f(98,3)f(98,3)f(98,3) 为例: f(98,3)=(1×2×3)+(2×3×4)+...+(98×99×100)f(98,3)=(1×2×3)+(2×3×4)+...+(98×99×100)f(98,3)=(1×2×3)+(2×3×4)+...+(98×99×100) 其可以转换表达为: 1×2×3=(1×2×3×4−0×1×2×3)/41×2×3=(1×2×3×4−0×1×2×3)/41×2×3=(1×2× ...
spring工厂的底层实现原理(简易版)
从思想层面上分析工厂是如何实现的 为什么应用工厂之后就能够通过工厂创建对象呢? 从编码流程分析 spring 底层实现 对于一个应用,我们首先从编码的角度入手,先看看逻辑书写上如何调用 spring 工厂生产对象。 应用 spring 框架的主要流程 第一步,首先创建一个实体类,作为 spring 工厂生产的产品,在这里给出一个Account类 12345public class Account implements Serializable { private String name; private String password; //此处省略实体类内的get与set方法} 第二步,我们在已经创建了实体类的情况下,对 spring 配置文件进行配置,在 xml 文件内创建 bean 标签如下 1<bean id="account" class="com.AnselYuki.Account"/> 第三步,在项目内使用 JUnit 单元测试书写一个方法进行测试 123456@Testpublic ...