自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 Codeforces D Rarity and New Dress (二维dp & 菱形寻找)

传送门题意: 给出n*m的矩形,相同字符的表示同一种颜色,找出矩阵中有多少个斜正方形(如下图所示)。思路:设dp[i][j]表示(i,j)为止以上能最多得到的"斜正方形",答案就是所有位置的dp值之和。而对于位置(i,j),只需要考虑(i-1,j-1),(i-1,j),(i-1,j+1),(i-2,j)位置是否与其同色。若同色则(i,j)位置构成一个图形,直接dp[i][j]=1。反之就dp[i][j] = min(dp[i-1][j-1],dp[i-1][j+1],dp[i-2][j])+

2020-08-30 00:04:48 181

原创 Codeforces E1. Weights Division (easy version) (树dfs & 边的利用次数)

传送门题意: 给定一棵以 1 号点为根的带权有根树。每次可选择一条边将其边权除以2(下取整),试问至少经过多少次选择,才能使得所有根节点到叶子节点的路径权值和不超过S?思路:利用有限队列每次选择权值最大的边处理,直到sum <= S。(我只想得到这么多了,莫得法太菜了呜呜呜。细节部分还一直处理不好,嗐。)看了大佬博客才知道,原来还得将经过次数和权值分别存取,如果直接存cnt*val会有错(这个在大佬2博客中有提到)。大佬1博客代码比较简洁清晰,大佬2博客思路比较详细。代码实现:#i

2020-08-29 22:47:42 162

原创 Codeforces E. Tree Queries (树 & dfs & 特定路径判断)

传送门题意: 给你一个以 11 为根的有根树。每回询问 k 个节点v1 ,v2 ⋯vk。​求出是否有一条以根节点为一端的链使得询问的每个节点到此链的距离均≤1.只需输出可行性, 无需输出方案.思路:这棵树以 1 为根,那么,这条路径要么经过给定点,要么经过给定点的父亲,要么经过给定点的至少一个儿子。这时我们发现,经过以上三种点都必须经过给定点的父亲,于是我们就把题面转化为了:给定若干个点,求是否有一条从 1 开始的路径经过这些点。按照深度排序后依次判断后一个点是否在前一个点的子树内即可。

2020-08-23 00:26:20 175

原创 Codeforces C. Uncle Bogdan and Country Happiness (树型递推)

传送门题意: 给出一颗根节点为 1 的树,对于每个节点 i,有 p[i] 个人的家在节点 i 上。一开始所有人都在根节点上,然后每个人会往家沿着最短路走。每个人出发时有一个心情,可能是好心情也可能是坏心情,在经过一条边时,心情可能由好变坏,但是不可能由坏变好。每个点有一个幸福检测器,最后的检测结果为:所有经过该节点的人中,好心情的人数减坏心情的人数。现在给出每个 h[i] ,问有没有可能最后每个节点的检测结果恰好为 h[i] 。思路:刚开始看完题就一头懵,有点点思路但还是太菜,码力不得行啊。

2020-08-22 21:26:12 195

原创 Codeforces D. Maximum Distributed Tree (树dfs & 边的利用次数)(Round #665 Div.2)

传送门题意: 给出一棵n个点的树,想让给每条边赋值,使得所有边权的乘积为k。因为k非常大,所有将k拆分成m个因子,换而言之就是n-1条边权的乘积得等于m个因子的乘积。定义f(x, y)为点x到点y的简单路径所经过的所有边的权值和,现问怎么安排边权,才能让所有简单路径的 f 值和 (即下图所示公式)最大,并得到该max值。思路:比赛的时候相叉了,后面快结束了才行到 idea, 但对树的相关操作不熟就这么错过了上高分分的机会,呜呜太菜了~若m < n-1,那么剩下的边用1来填充。dfs找

2020-08-22 19:48:02 222

原创 Codeforces A. Distance and Axis (思维 / 暴力) (Round #665 Div.2)

传送门题意: 在坐标轴OA上找到一个点B,使得| |OA| - |OB| | == k。若无法等于k,就将A向左后右移动一个单位,试问最少经过多少次操作可以找到符合条件的B点。思路:简单粗暴点,可直接先将B点放在原点位置。若 |OA| == k,那么可以直接选择原点(或二倍A点的位置)为B,操作数为0。若 |OA| < k,那么将A加到k即可。若 |OA| > k,就需要在OA间安插B点的操作数比较少,且若 n-k为奇数,还需要将A向右移动一步即可。代码实现:#inclu

2020-08-22 17:55:21 176

原创 Codeforces B. Ternary Sequence (思维 / 贪心) (Round #665 Div.2)

传送门题意: 给出两个只由0,1,2组成的数组a,b;可通过一种计算规则得到相应的数组c:c[i] = a[i]*b[i] , a[i] > b[i]c[i] = 0 , a[i] == b[i]c[i] = -a[i]*b[i], a[i] < b[i]现可将a,b进行特定的排序,使得sum©得到最大值,并求出该max。思路:正贡献(+2)的情况,a[i] > b[i],那么就要认a中的2尽量多的对应b的1.无贡献的情况,a[i]

2020-08-22 17:34:35 886 1

原创 Codeforces C. Mere Array (思维 / gcd) (Round #665 Div.2)

传送门就先不说了,咱先上代码,明早再来写思路吧。#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#define int long long#define pii pair<int, int>#define lowbit(x) (x &(-x))#define ls(x) x<<1#define rs(x) (x<<1+1)#d

2020-08-22 01:18:17 180

原创 Codeforces D. Secret Passwords (并查集 / 字符串分组)

传送门题意: 给定n个字符串。如果存在一个或多个字母同时在字符串a和b中出现, 这a和b就被分在同一组如果a和c在同一组 b和c在同一组, 则aa和bb也在同一组问所有的字符串最后被分成几组?思路:基本原理:利用并查集维护下字符集合。把每一个字母当成一个点,对于每一个给出的字符串,把字符串中的所有字母之间都连上边。这样,若两个字符串有公共的字母,他们就一定在一个连通块内,最后求出连通块个数就是答案。代码实现:#include<bits/stdc++.h>#defin

2020-08-22 01:06:09 196

原创 Codeforces E. Tree Painting (树形dp & 换根)

传送门题意: 给定一棵有 n 个结点的无根树,所有结点都是白色的。第一次操作可以随意使一个结点染成黑色,之后每次操作可以使一个与黑色结点相邻的白色结点变成黑色。每次操作可以获得的权值为被染成黑色的白色结点所在的白色连通块的结点数量。求可以获得的最大权值。思路:最开始我以为选哪儿都一样,都是n到1的和,后面才知道是俺太菜了。只要确定第一个黑点后权值就确定了,所以这就是个选择根节点的树形dp题。但显然如果要每个节点都dfs求答案绝对超时,于是需要推算下换根公式预处理下。这里可以参考大佬博客,讲得

2020-08-21 22:26:41 295

原创 P3379 【模板】最近公共祖先(LCA)

传送门思路:所谓LCA即两点的最近公共祖先,暴力的思维当然是一步一步往上爬寻找相交的第一个祖先,但这么暴力显然会超时。这个时候就可考虑以2的倍数来加速向上爬,且是从……32,16,8,4,2,1这样从大往小的选择跳跃步数(这样方便对大数悔棋)。大概操作即先爬最深的点x,让x与y位于同一深度时再开始一起往上爬。首先要记录各个点的深度和他们 2^i 级的的祖先,用数组d表示每个节点的深度,用 fa[i][j] 表示节点 i 的 2^j 级祖先。具体思路操作参考大佬博客,真的超详细,超nice!

2020-08-21 01:26:52 157

原创 Codeforces E. 1-Trees and Queries (树 & LCA & 定长路径)

传送门题意: 给定一个含有n个节点的树(相邻两点间的距离为1),以及q个询问。每一个询问给出5个整数:x,y,a,b,k。指如果像树中的x节点和y节点之间加一条边,问是否存在一条路径从a到b长度为k的路径?(注:每一次询问添加的边不会互相干扰,即只在该次询问有效)思路:首先我们看a与b之间的连通性,有三种有意义的最短路径L:a -> b,即不需要x与y之间的边a和b也能连通,距离记录为dist_ab。a -> x -> y -> b,记作dist_axyb。a

2020-08-21 00:37:09 199

原创 Codeofrces C. Omkar and Waterslide (模拟 / 暴力) (Global Round 10)

传送门题意: 给出一个序列a,每次可以选择一个非递减序列将每个元素+1,试问将整个元素变成非递减需要多少次操作?思路: 简单的模拟题,直接找到每次出现降低地方非递减序列中的min取操作数即可。代码实现:#include<bits/stdc++.h>//#define endl '\n'#define null NULL#define ll long long#define int long long#define pii pair<int, int>#defin

2020-08-19 23:46:39 365

原创 Codeforces E Necklace Assembly (暴力 / 循环因子)

传送门题意: 店铺里有n颗珠子,现让你串一条最长的项链,满足将项链逆时针旋转 k 个位置后依然和原位置一样(被定义为k-beautiful项链)。思路:首先最小的答案是最大的字符个数,然后考虑项链中字符不全相等的情况。如果环转k的因子次是美的,那么k次也一定是美的,那么k也一定是美的。设某个字母有x个,x/循环节个数就是该字母能填充的循环节长。把所有字母填充的循环节长加起来,如果大于循环节长度就是符合的。代码实现:#include<bits/stdc++.h>#define

2020-08-19 23:30:20 229

原创 Codeforces E. Polygon (思维 / 判断)

传送门题意: 对于一个n* n的一个全为0的初始矩阵,矩阵上方和左侧均有一排炮台,矩阵的下侧与右侧是边界。炮台可以发射子弹,子弹只能直线行走,且遇到边界后会停止,遇到一个停止的子弹也会停止,子弹停止后的坐标里面的值记为1。现给出一个结果矩阵,试问是否可以由初始矩阵(全为0)通过炮台打出来;能则输出“YES”,否则输出“NO”。思路: 很简单的思维题,显然对于边界上的炮弹是一定可以打到的,而对于中间的炮弹必须满足其下方或右侧有停留的炮弹即可。代码实现:#include<bits/stdc+

2020-08-19 21:43:05 286

原创 Codeforces F. Maximum White Subtree (树形dp)

传送门题意: 给定一棵 n 个节点无根树,每个点都有一个颜色,非黑即白。现在问对于每个点 i 而言,选出一个 包含i的 连通块,使其白色点与黑色点的个数差最大(注意不是绝对值)。1 ≤ n ≤ 2e5 ,0 ≤ a[i] ≤ 1 (a[i]为0表示黑色,为1表示白色) 。思路:因为我们需使cntw-cntb尽量大,可设定每个白色节点贡献值为1,黑色节点贡献值为-1。这样就转换成两次dp求出最大子连通块的权值和,分别为自底向上和自顶向下。自底向上的话可直接维护dp[ i ],表示以点 i 为根

2020-08-19 00:02:52 222 2

原创 Codeforces C. Ehab and Path-etic MEXs (树 / 构造 / MEX)

传送门题意: 给定一个 n 个节点 n−1 条边的树,要求给边重新标注边权,分别为 0,1,2…n-20,1,2…n−2 。然后使得树上任意两点 u,v的 MEX(u,v) 的最大值最小。MEX(u,v) : u 到 v 的简单路径没有出现的自然数中最小的数。思路:当这棵树是一条链时,便可随机构造,ans(min)都是n-2。会发现无论如何构造,边权为 0,1 的两条边总能出现在某条路径上;所以我们只需要考虑如何使得边权为 0,1,2 的三条边不同时出现在某一路径上。因为当这棵树不为一条链时

2020-08-18 22:32:37 265

原创 Codeforces D. Cow and Snacks (并查集 / dfs)

传送门题意: 现有n 种花,k 个客人,每个人喜欢两种编号不同的花。但是每种花在花店里只有一束。客人将按一定顺序进入花店买走所有她喜欢且仍在店铺里的花。如果一个客人买不到任何一束花,那么她就会十分沮丧导致变成肥宅。现在你可以自己安排这 n 个人的顺序,使得肥宅的数量最小。思路:将两种花看做点,把客人看做连接两个节点的边,以此建图来具体化问题。对于一个含x个节点的连通块,总有一个边会占据两个点,那么便一定能以一定顺序最多满足x-1条边有点可分配。那么对于所有n个点,若有c个连通块,便会产生c个

2020-08-18 19:04:28 231

原创 Codeforces A. String Transformation 1 (字符串构造 / 并查集)

传送门题意: 给出两个(由前20小写字符组成的)字符串a和b,每次你可选择a中几个某一类字符x,将其变成字符y(要求y > x),试问最少需要多少次操作才能将字符串a变成b。思路:第一个样例 aab和bcc,由于第一个a要变成b,第二个a要变成c第二个a要变成c,第三个b要变成c第三个b要变成c,原则上是需要三次操作;但是由于a−>b,b−>c,所以a−>c的步骤就不需要了。这意味着如果合并的两个字母不在一个集合中,才需要额外操作,所以我们直接用并查集维护下即可。代码

2020-08-17 22:54:47 235

原创 Codeforces D TediousLee (规律 / 树型递推计数)

传送门题意: 给你一个建树规则:级别1的有根死灌木是单个顶点。为了构造级别i的RDB,首先,我们构造级别i-1的RDB,然后对于每个顶点u:如果您没有孩子,那么我们将添加一个孩子;如果你有一个孩子,那么我们将增加两个孩子;如果您有一个以上的孩子,那么我们将跳过它。若出现含四个节点的根树(claw,如下图),且该四节点的爪子上的点都是绿色,则可将其都标记为黄色。先给出n级别的树,试问最多能标记多少个黄色节点?答案对1e9+7取模。思路:其实推到5级别树便会发现一定规律,每个节点都可作

2020-08-17 20:39:48 206

原创 Codeforces B. Omkar and Infinity Clock (思维 / 假模拟) (Global Round 10)

传送门题意: 现有一个序列a,每次操作可以取整个序列的max,将每个元素变成max-a[i],试找到k次操作后的序列为多少。思路:由于n可达2e5,而k也能达到1e18,显然不能直接模拟来解决,需要找到规律。若序列只有1个元素且k不为零,那么第一次操作后就变成了0。若序列有负数,那么需要操作一次找到真正的最大值maxx,再考虑k的奇偶最后确定结果序列。若序列最小值是正数,直接分奇偶讨论即可。具体操作见代码。代码实现:#include<bits/stdc++.h>#de

2020-08-17 19:43:06 174

原创 Codeforces D. Omkar and Bed Wars (思维 / 构造) (Golab Round 10)

传送门题意: 现有一个一圈人在进行游戏(给出他们的初始攻击状态),R表示向右边相邻的人进行攻击,L反之。有一游戏规则:若受到单方向攻击就必须还予攻击,若受到0或两个方向的攻击则任选一个方向攻击。现问需要改变多少次(将R取反为L,或将L取反为R)才能使这一圈人按在规则进行游戏。思路:若都是单一元素,那么只需要改变n/3上取整次即可。若出现R和L交替,则对每次连续区间改变cnt/3次即可(cnt为连续区间的长度)。代码实现:#include<bits/stdc++.h>#defi

2020-08-17 19:20:45 248

原创 Codeforces A. Omkar and Password (思维) (Global Round 10)

传送门题意: 现有一个长度为n的序列a,只要两相邻元素不相等便可将其合并成一个元素。试问a最小可被合并成几个元素。思路: 仔细想想就不难发现,只要序列不是单一元素,就可一直合并知道变成一个。代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#define int long long#define pii pair<int, int>#define l

2020-08-17 18:41:12 137

原创 Codeforces A. Johnny and Contribution(思维 / 拓扑排序)

传送门题意: 给定一张 n 个点 m 条边的图。你需要给每个点写上数字,其数字为所有与它相邻且被写上数字的点中没出现过的最小的正整数。请求出一种写数字的顺序使得编号为 i 的点上的数字为给定序列p[i]。无解直接输出 -1。思路:对于i号点必须满足与它相邻的数必须包含[1,p[i]),且不包含p[i]才能有解。如果满足上述条件,则按照 p序列 从小到大写数字就是一个符合条件的顺序。不过也可以用拓扑排序来写。代码实现:#include<bits/stdc++.h>#defin

2020-08-16 22:33:01 415 1

原创 Codeforces A.Linova and Kingdom (树的深度 / dfs)

传送门题意: 给你一棵n个节点的树,试标记其中k个节点为工业区,剩下的为旅游区,使得所有工业区走到1号根节点所经过的旅游区数量max。思路:将深度最大的k个节点标记为工业区即可。s[u]表示u节点子树上节点的数目。d[u]表示u节点的深度。排序找到d[u]-s[u]最大的k歌节点即可。代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#define i

2020-08-16 21:12:53 168

原创 Codeforces C Anna, Svyatoslav and Maps (floyd最短路 & 贪心)

传送门题意: 题意有点复杂,现有n个点的有向无权图,给出一条路径p。试问是否可以去掉p序列中的部分点,使得剩余序列所经路径依旧是原路径(长度不变)。思路:由于数据范围比较小,可以直接floyd处理。每次找到给定路径上终点到当前点的最短路,如果最短路小于给的路径的长度,那么把路径上该点的上一个点加进去。代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#de

2020-08-15 22:50:22 145

原创 洛谷:P1104 生日 (结构体排序)

传送门思路: 虽然是个水题,但是不认真读题的下次就是一直wa,一定记着在结构体排序时同年同月同日生的人要 id大的在前。代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#define int long long#define pii pair<int, int>#define lowbit(x) (x &(-x))#define ls(x

2020-08-12 00:05:14 681

原创 P3817 小A的糖果 (贪心 / 规律)

传送门思路:贪心的思维(其实有规律),你会发现对于第一个数 a[1] (无论哪一个数 >x, 那么它必定至少需要减到x为止),它只有右侧相邻的数,那么只要满足 a[1] + a[2] <= x即可,因此如果两个数的和超限a[2]就需要根据 a[1]变动。然后你会发现对于a[2]你不用再考虑a[1]了,于是又变成了上面的规律。 这样依次贪心处理下去就是min答案啦!代码实现:#include<bits/stdc++.h>#define endl '\n'#defi

2020-08-11 23:44:20 331 2

原创 P2241 统计方形 (数据加强版) (暴力枚举)

传送门思路:数据范围还行,就可直接枚举矩形的两条边长度。如果两边相同就是正方形,否则就是长方形;然后考虑每个矩形的做起点个数即可。比如对于 长x宽y 的矩形,左起点便有(n-x+1)*(m-y+1)个可行位置。若实在不懂,那就看这篇特细致题解吧。代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#define int long long#define pii

2020-08-11 23:11:29 393

原创 1009. Increasing and Decreasing (构造 / 最长递增(减)子序列) 2020 Multi-University Training Contest 7

传送门思路:题意: 让构造一个长度为n的序列,使得其最长递增子序列长度为x,最长递减子序列的长度为y。若无法构成自己输出 “NO”。官方题解:cls代码思路:将整个序列分成x块,每一块找一个元素出来形成的就是最长递增子序列;而递减序列正好是某一整块元素。代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#define int long long#de

2020-08-11 22:48:11 948 4

原创 Codeforces C. Boats Competition (枚举 / 思维) (Round #661 Div.3)

传送门题意: 现有很多能力值的成员,要求你选择一个团队能力值w,使得两两匹配得到的团队能力值刚好为w的队伍最多,输出最多队伍数。思路:因为数据范围比较小,可以之间枚举w。再用桶mh[]统计每个能力值成员的数量,挨个组队判断改w下的成队数量。代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#define int long long#define pii p

2020-08-10 20:13:27 201

原创 E. Game (思维) 2020牛客暑期多校训练营(第十场)

传送门思路:题意:将右侧木块香左推动,求得最后所有列的max的最小值。官方题解:(记着上取整)代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#define int long long#define pii pair<int, int>#define lowbit(x) (x &(-x))#define ls(x) x&l

2020-08-10 19:36:35 279

原创 A. Permutation (规律 / 构造) 2020牛客暑期多校训练营(第十场)

传送门思路:题意: 让你构造1~p-1的一种排列(p是素数),使得a[i+1] == a[i]*2%p 或者 a[i+1] == a[i]*3%p。若无解输出 “-1”。刚开始一直不知道怎么写,比赛后半段快找出规律了,再经过队友提点还是相通了。每次肯定都是1 2 4开始,对于 i 位置若 a[i-1]*2没有使用过就使用,否则就使用 a[i-1]*3,若两个都已被使用,说明必定有冲突。(详细见代码!)代码实现:#include<bits/stdc++.h>#define e

2020-08-10 18:55:39 244

原创 I. The Crime-solvingPlan of Groundhog (思维 / 高精度乘法) 2020牛客暑期多校训练营(第九场)

传送门思路:题意: 给出n个数,将其拼接成两个没有前导零的正整数,使得他们的乘积最小。官方题解:我想的思路个题解一样,但是我在补题的时候出现了一个小问题(代码中已注释),导致我一直改其他地方一直wa,呜呜呜~代码实现:#include<bits/stdc++.h>//#define endl '\n'#define null NULL#define ll long long#define int long long#define pii pair<int,

2020-08-09 23:11:16 138

原创 C.有向无环图(构造 / 特定路径数的有向图) (智算之道复赛高校组)

传送门思路: 个人觉得应该要用到前缀和。骗分代码(60分):#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#define int long long#define pii pair<int, int>#define lowbit(x) (x &(-x))#define ls(x) x<<1#define rs(x) (x<

2020-08-09 22:40:27 260

原创 B. 网格(dp / 二维偏序问题) (智算之道复赛高校组)

传送门思路:显然若w2 > w1*2的话,魔法点就没有什么意义了。在听了学姐说的k^2建图后,个人觉得只需要考虑k个魔法点,但是不知道为什么就是只有20分,呜呜。代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#define int long long#define pii pair<int, int>#define lowbit(

2020-08-09 22:30:06 229

原创 A. 数字 (思维) (智算之道复赛高校组)

传送门思路: 就是简单的模拟一下,不用特殊处理中间的0(我又菜到被卡了,呜呜呜~)。代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#define int long long#define pii pair<int, int>#define lowbit(x) (x &(-x))#define ls(x) x<<1#defi

2020-08-09 22:11:24 126

原创 洛谷:P1255 数楼梯 (高精度加法 & 斐波那契数列)

传送门思路:这种题以前也做过,只不过没有套高精度的计算。对于第n阶台阶,能从第n-1和第n-2台阶垮过了,所以到达第n阶台阶的方法数就有n-1与n-2方法数之和。(其实就是斐波那契数列啦)。注意下数据范围,的用高精度加法来写。代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#define int long long#define pii pair<

2020-08-09 00:51:45 679

原创 Codeforces B. Captain Flint and a Long Voyage (思维 / 二进制) (Round #660 Div.2)

传送门题意: 找到最小的n位十进制数,使得起每位数的二进制拼接在一起形成的长二进制串删除末尾n位数后剩下的数max。思路:这场比赛我当时没有参加,还一直口胡误导队友,啊啊啊!太菜了!要想剩下的数最大,那么就得要求每位数的二进制位数最高(就像二进制100绝对比11大),而不难发现0~9中只有8和9是4位的二进制数。要想剩下的数最大,不仅需要最高位,也需要低位来凑。所以只要不在后n位范围内的地方都可是9,而在后n位中不管是9还是8都会被去掉。但我们需要的是最小的n位十进制数,当然就选择最小的8啦

2020-08-09 00:21:40 146

原创 Codeforces A. Captain Flint and Crew Recruitment (思维) (Round #660 Div.2)

传送门题意: 试问是否可以将整数n分解成四个不同的正整数,且其中至少三个数位近似质数(即能用两个不同的质数p*q表示)。思路:既然要找三个不同的近似质数,那么就先取6, 10, 14这三个最小的数。那么至少还得给第四个数留个位置,所有只有 n >30 时才能分解成功。再考虑是否有重复数出现的问题,若有就将14变成15,第四个数便是n-31。代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NULL#

2020-08-08 23:57:52 156

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除