
简单题目
文章平均质量分 58
逍遥Fau
为伊蕾娜献上心脏!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HDU1106 排序(scanf进阶)
题目连接:题目:解题思路:AC代码:#include <bits/stdc++.h>#define ll long longusing namespace std;char a[2000]; char b[20];int num[1005];int main(void){ while (cin.getline(a, 2000)) { char *p = a; ...原创 2020-03-30 22:27:56 · 188 阅读 · 0 评论 -
Codeforces1352E Special Elements (思维 尺取法)
题目链接: Special Elements大致题意给定长度为nnn的序列aaa, 问有多少个aia_iai满足ai=a[l:r],1≤l<r≤na_i = a[l : r], 1 \le l < r \le nai=a[l:r],1≤l<r≤n .解题思路思维我们需要计算的是, 某个位置的数字是否等于一个区间和, 我们很容易想到处理出a[]a[]a[]的前缀和.然后我们可以通过枚举rrr, 来判断之前是否出现对应的lll.但是题目卡了哈希表, 又卡了空间, 我们无法存储原创 2021-10-20 19:22:00 · 167 阅读 · 0 评论 -
Codeforces1398C Good Subarrays (思维 + 前缀和)
题目链接: Good Subarrays大致题意给定一个长度为n的序列, 问有多少个连续子序列满足∑i=1nai=r−l+1\displaystyle \sum_{i = 1}^na_i = r - l + 1i=1∑nai=r−l+1.解题思路思维我们考虑枚举右端点rrr来计算答案:设[l,r][l, r][l,r]满足条件, 我们应该找到有多少个lll满足要求.设s[]s[]s[]为aaa的前缀和数组, 则[1,r][1, r][1,r]的和为s[r]s[r]s[r], 我们希望s[r原创 2021-09-17 20:24:59 · 245 阅读 · 0 评论 -
HDU1506 Largest Rectangle in a Histogram (单调栈)
题目链接: Largest Rectangle in a Histogram大致题意给定一个宽度为nnn的图形, 由nnn个宽度为1, 高度为hih_ihi的矩形组成.要求计算出最大矩形的面积.解题思路思维首先我们最终选取出的大矩形高度一定为某个hih_ihi.我们考虑到对于完全包含第iii个小矩形而言的答案, 相当于需要在iii左侧找到小于hih_ihi的点, 则记录iii位置可以向左延伸lil_ili, 右侧同理记录出rir_iri.这样答案为res=max((ri−li−1)原创 2021-09-11 16:02:08 · 182 阅读 · 0 评论 -
Codeforces1562B Scenes From a Memory (思维)
题目链接: Scenes From a Memory大致题意给定一个十进制数字(数位中不包含0), 你可以删除任意数位.要求保留尽可能少的数位, 且使得剩余的数字是非质数或1. (题目保证一定有解)解题思路思维显然, 如果给出的数字包含{ 1, 4, 6, 8, 9 }, 那么我们一定可以仅保留一位数字.反之, 我们保留两位数字一定可以满足题意.证明: 首先这个数字一定是由{ 2, 3, 5, 7 }构成.如果这个数字中包含两个相同的数字, 则保留他们, 最终的数字一定是11的倍数.原创 2021-08-27 09:46:35 · 447 阅读 · 0 评论 -
Codeforces437C The Child and Toy (思维)
题目链接: The Child and Toy大致题意给出有n个顶点, m条边的无向图.删除掉一个点的代价是: 所有与该点相连的, 且未被删除的点的权值和.问: 删除掉所有点的最小代价是多少.解题思路思维考虑到最终情况是, 图中所有的点都被删除了, 且图中不存在任何边.我们分析所有边对答案的贡献. 每一条边(a, b)被删除, 要么是删除b, 增加waw_awa的贡献, 要么是删除a, 增加wbw_bwb的贡献.因此最终答案就是∑i=1mmin(wa,wb)\displaystyle\原创 2021-08-06 11:27:53 · 155 阅读 · 0 评论 -
Codeforces1380C Create The Teams (贪心)
题目链接: Create The Teams大致题意有n个数字, 希望你把这些数字分成尽可能多的组. 要求: 每组数字的数字个数乘以该组数字的最小值应当大于等于m.注: 你不必用完所有的数字. 只需要最大化组数即可.解题思路贪心 本题算很典型的 排序 + 贪心 类型的题目我们先考虑对于一组数字而言, 如果已经存在一个最小的数字, 则后续组中再放数字, 我们没必要放大的数字, 只需要较小的即可.那我们现在考虑把所有数字从小到大排序, 我们发现此时有一个问题: 可能存在我不选某个数字, 然后我选后原创 2021-07-28 09:10:05 · 148 阅读 · 0 评论 -
UCF Local Programming Contest Round 1A C.Unique Values (思维)
题目链接: Unique Values大致题意给出一段长度为n的序列, 问有多少个连续子序列中不含有相同的元素.解题思路思维我们从前向后扫描序列, 设当前位置为pos, 统计当子序列右端点为pos时的答案. 用last记录上一次含有相同元素的位置.这样[last + 1, pos]为一段不含有相同元素的连续子序列, 则以pos作为结尾的连续子序列有: [pos, pos], [pos - 1, pos], …, [last + 1, pos]. 共有num = pos - (last + 1)原创 2021-07-25 11:20:13 · 150 阅读 · 0 评论 -
还是畅通工程(prim+kruskal最小生成树)
题目连接: 还是畅通工程题目:某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。Input测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对...原创 2020-05-04 02:47:10 · 946 阅读 · 0 评论 -
Codeforces1285B Just Eat It! (思维)
题目链接: Just Eat It!大致题意给定一个长度为n的序列a, 问是否存在a的严格子序列b, 使得b中所有元素的和 严格大于 a中所有元素的和.若存在则输出 “NO” , 反之输出 “YES”.解题思路我们不难想到, 如果我们能找到a中的最大连续子序列c, 我们直接用c的元素和与a的元素和做比较即可.我们可以枚举子序列的右端点r, 然后找到[1, r - 1]中的最小前缀和位置l, 则[l, r]是以r为右端点的最大连续子序列区间. 我们把所有区间的和取max就可以得到整个序列的最大连原创 2021-07-05 23:37:06 · 242 阅读 · 0 评论 -
Codeforces1285C Fadi and LCM (数学 思维)
题目链接: Fadi and LCM大致题意给定一个整数x, 要求你找到两个整数a和b, 满足 lcm(a, b) == x 并且 max(a, b) 尽可能小.解题思路通过题意, 我们不难想到, a和b两个数字应该是互质的两个数. 则 a和b 的所有质因子 应该和x的质因子相同.然后我们光速开始写质因数分解, 现在问题就来了, 你怎么去分配这些质因子, 使得a和b尽可能接近呢?到这里, 我们应该发现我们的思路就不太对了.本题的正确思考角度是, 我们枚举x的所有约数对, 然后判断每个约数对的原创 2021-07-05 19:49:37 · 221 阅读 · 0 评论 -
Codeforces1364B Most socially-distanced subsequence (思维)
题目链接: Most socially-distanced subsequence大致题意给出一个长度为n的序列p, 你需要找到p的一个子序列s, s的长度至少为2, 且|s1 - s2| + |s2 - s3| + … + |sk-1 - sk|尽可能大, 如果多个子序列的值相同, 输出任一长度最短的子序列.解题思路考虑到对于上式|s1 - s2| + |s2 - s3| + … + |sk-1 - sk|进行化简:①假设当前序列单调递增, 则可化简为: (s2 - s1) + (s3 - s2原创 2021-07-05 13:02:28 · 186 阅读 · 0 评论 -
Codeforces1375C Element Extermination (思维)
题目链接: Element Extermination大致题意给定一个 1~n 的排列, 若对于i ∈ [1, n) 且 a[i] < a[i + 1], 则我们可以删除元素a[i] 或 a[i + 1].问: 我们能否把这个序列长度变为1.解题思路如果满足 a[1] < a[n], 则可以将序列长度删至1, 反之不能.证明: 假设 a[1] < a[n], 对于 i ∈ (1, n) 区间的元素, 由于a[i]各不相同, 我们一定可以使得这个区间删剩一个元素a[pos], 对原创 2021-07-04 21:14:27 · 131 阅读 · 0 评论 -
Codeforces1324D Pair of Topics (思维 + 二分)
题目链接: Pair of Topics大致题意给定两个数组a和b, 要求找出所有满足i < j 并且 ai + aj > bi + bj 的所有数对.解题思路我们不难想到先对等式变形, 不妨设ci = ai - bi, 则原式变为ci > -cj <==> ci + cj > 0.这是什么? 权值线段树!!!. 好吧, 我又来了个1A权值线段树. 竟和 1538C 如此的相似.我们发现, 我们可以去枚举每一个ci, 通过二分的方式找到符合的cj数量.为了避原创 2021-07-02 17:49:56 · 312 阅读 · 0 评论 -
Codeforces1406B Maximum Product
题目链接: Maximum Product大致题意给你n个数字, 你要从中挑选出5个数字, 使得他们的乘积最大.输出最大的乘积解题思路这个题一读完, 思路并不是难点, 因为我们很容易想到很多种合法的方式.但是我们要通过代码来实现, 这就不是很容易了. 我们最笨的方式当然是去模拟每一种我们人脑认为的合法情况, 但显然太麻烦了.我们可以发现, 给出的n个数字中, 如果某个数字x, 既不是最大的5个数字, 也不是最小的5个数字, 则它是没有意义的. 很显然, 如果我们能凑出一个正数, 我们肯定尽可能原创 2021-07-02 09:53:21 · 146 阅读 · 0 评论 -
Codeforces1381A1 Prefix Flip (Easy Version) (思维)
题目链接: Prefix Flip (Easy Version)大致题意给定一个长度为n的01串, 每次操作可以选择一个位置pos, 使得[1, pos]的每一位进行取反, 并且翻转[1, pos]区间.要求: 在3n次操作内, 使得该字符串变成目标串. 输出操作次数和每次选择的位置.解题思路我们考虑到, 如果对同一个位置进行两次操作, 会使得字符串不改变.因此我们可以从前往后遍历, 如果index位置不满足条件:①操作[1, index]区间②然后再操作[1, 1]区间③最后再操作一次[原创 2021-06-30 10:42:11 · 348 阅读 · 0 评论 -
Codeforces1355B Young Explorers (贪心)
题目链接: Young Explorers大致题意给你n个人, 你需要给这些人组队.每个人有个对应的ai值, 表示这个人如果组队了, 队伍应当人数>=ai.问: 最多能组出多少个队伍. (有些人可以没有队伍)解题思路贪心 + 排序我们把所有的人按照ai的值从小到大排序.然后从前向后遍历排序后的数组, 并记录一个sum值, 表示当前已经遍历过, 且没有队伍的人数. 如果sum == a[i], 则表示我们可以让这sum个人组成队伍.关于思路正确性:我们目的是成尽可能多的队伍, 所以原创 2021-06-24 15:05:31 · 142 阅读 · 0 评论 -
Codeforces1348B Phoenix and Beauty (思维 构造)
题目链接: Phoenix and Beauty大致题意给你一个长度为n的序列, 你可以向序列中任意位置添加任何元素, 问你能否使得每一个长度为m的子序列之和都相等.解题思路发现我们最终要构造出一个长度为m的循环节.如果原数组中不同元素的种类大于m, 一定是无解的.反之, 我们可以任意构造长度为m的循环节, 保证这个循环节包含所有原序列中的所有种元素即可, 这样我们输出n次这个循环节, 我们一定可以保证每个长度为m的子序列之和都相等. 且我们也发现我们一定可以从原序列添加若干元素变化得到.AC原创 2021-06-21 11:36:29 · 159 阅读 · 0 评论 -
Two Buttons (思维)
题目链接: Two Buttons大致题意给出数字n和m, 我们有两种操作: ①给n乘2 ②给n减1.问: 最少操作多少次, 使得n等于m解题思路我们发现我们必然会有一种策略, 最终使得n==m.如果n > m, 我们一定是一直执行②, 这一定是最优的方案.反之若n < m, 我们需要合理安排执行操作①②的顺序, 使得花费步数最小.考虑到以常规的方式去考虑, 我们可以bfs枚举情况.但我们也可以通过逆向思维: 最终情况一定有n == m, 我们可以倒推这一步是怎么转变过来的.原创 2021-06-09 16:11:11 · 260 阅读 · 2 评论 -
T-primes (规律 思维 筛素数)
题目链接: T-primes大致题意给你一个数字x, 判断其约数个数是否为3.解题思路假设x != 1, 那么1和数字x本身一定都是其约数, 此时我们还差一个约数. 且这个约数一定得是一个质数.考虑到约数本身的性质, 如果a是x的一个约数, 则 b=x/a 也一定是x的一个约数. 因为我们此时只差一个约数, 因此应有a = b. 到这里, 这个题就很明确了, 这个数字x是一个质数的平方. 只有这样, 我们才能保证他只有3个约数.AC代码#include <bits/stdc++.h>原创 2021-06-08 13:37:30 · 461 阅读 · 0 评论 -
CF1515B Phoenix and Puzzle (思维)
题目链接: Phoenix and Puzzle大致题意给你n个相同的等腰直角三角形, 问你能否拼凑出一个正方形.解题思路首先我们考虑到比较独立的组合方式:2个三角形我们可以以斜边相碰的方式构造出一个正方形a.4个三角形我们可以以直角边相碰的方式构造出一个正方形b.除此之外的正方形, 你会发现都是由这两种方式拼凑出的.当我们观察到这一点后, 很快啊, 我们就开始盲猜 2k 才成立. 又是很快啊, WA了. 一定是我写错了, 再来一遍, 又WA了!我们分析一下这两种方式凑出的正方形, 假设等原创 2021-06-03 19:07:15 · 340 阅读 · 0 评论 -
牛客 又一道 GCD 问题(求约数)
题目链接: 又一道 GCD 问题大致题意略解题思路把给出的数字求出所有约数, 然后从大到小枚举当前拥有当前约数的数字个数是否满足要求即可.这里提一点, 分解质因数 和 求所有约数 的函数写法很相似, 复杂度最坏也都是 O(√n). 但是两者是有本质却别的.AC代码#include <bits/stdc++.h>#define rep(i, n) for (int i = 1; i <= (n); ++i)using namespace std;typedef long原创 2021-05-14 20:54:21 · 186 阅读 · 0 评论 -
Social Network(运用map容器)
你正在一个流行的社交网络中通过智能手机发送信息。你的智能手机最多可以显示k个最近与朋友的对话。最初,屏幕是空的(即显示的对话数等于0)。 每次谈话都是你和你的一些朋友之间的。最多只能和你的朋友进行一次谈话。所以每次谈话都是由你的朋友来定义的。 现在你(突然!)有能力看到未来。你知道在一天中你将收到n条信息,第i条信息将从id为idi(1≤idi≤10^9)的朋友处收到。 如果在智能手机当前显示的对话中收到来自IDI的消息,则不会发生任何事情:屏幕上的对话不会更改,也不会更改其顺序,您将阅读该消息并继续等待新原创 2020-02-04 17:23:46 · 608 阅读 · 0 评论 -
Yet Another Walking Robot (map容器+重载)
There is a robot on a coordinate plane. Initially, the robot is located at the point (0,0). Its path is described as a string s of length n consisting of characters 'L', 'R', 'U', 'D'.Each of these characters corresponds to some move:'L' (left): means原创 2020-03-07 22:23:14 · 251 阅读 · 0 评论 -
Display The Number(找规律)(又名: 超超超超超大电子屏)
有一个大的电子屏幕,可以显示998244353个十进制数字。数字的显示方式与不同的电子闹钟相同:每个数字的位置由7个部分组成,可以打开和关闭,组成不同的数字。下图描述了如何显示所有10位小数:可以看到,不同的数字可能需要打开不同数量的段。例如,如果你想显示1,你必须打开屏幕的2段,如果你想显示8,显示数字的某个地方的所有7段都应该打开。您希望在屏幕上显示一个非常大的整数。不幸的是,屏幕出BUG了:不能同时打开超过n个片段。所以现在你想知道什么是最大的整数可以显示通过打开不超过n段。你的程序应该能原创 2020-02-04 19:41:19 · 653 阅读 · 0 评论 -
Til the Cows Come Home(dijkstra)
公交站1是dxt的位置,公司所在的位置是N。所有公交站中共有T (1 <= T <= 2000)条双向路径。dxt为了锻炼未来的ACMer,决定让你帮他计算他到公司的最短距离。可以保证这样的路存在。Given the trails between the landmarks, determine the minimum distance Bessie must walk to get back to the barn. It is guaranteed that some such route exis原创 2020-02-13 18:29:08 · 511 阅读 · 0 评论 -
Boats Competition
题目链接: Boats Competition大致题意:给定n个数构成的数组, 让我们自定义一个数s, 使得对于任选ai与aj(i≠j), 满足ai+aj=s的组合尽可能多.解题思路:由于本题数据较小, n最大只有50, wi最大也只有50, 所以s最大不会超过100. 我们不妨枚举出每种s的取值, 然后看看对于当前s值有多少种组合, 结果取最大即可.AC代码:#include <bits/stdc++.h>using namespace std;typedef long lon原创 2020-08-24 10:10:05 · 382 阅读 · 0 评论 -
Barbells
题目连接: Barbells大致题意:给你n个杠铃的杠杆, m个配重, 平衡杠杆的左右两端时, 杠铃的重量即为一种解, 要求从小到大输出所有解解题思路:暴力dfs, 对于配重, 只有三种选择, 加在左侧, 加在右侧, 不加. 得出所有使杠杆平衡的配重重量, 然后分别与杆重做和排序即可.AC代码:#include <bits/stdc++.h>typedef long long ll;using namespace std;ll w[20];ll a[20];set<l原创 2020-06-30 15:57:31 · 336 阅读 · 0 评论 -
Fuse the Cube Fragment
题目连接: Fuse the Cube Fragment大致题意:1-n中选出尽可能多的数字, 组成的序列中保证彼此不能相互整除.解题思路:看到输入输出样例, 我们不妨有个猜测, 序列长度应该是len = (n + 1) / 2;第一种串:我们发现, 无论奇偶, 连续的len个数字一定符合要求, 直接输出即可.第二种串:对于偶数串, 我们发现该串-1后, 变成的奇数串同样连续len个数字符合要求.但是对于奇数串, 我们发现如果该串-1后变成的偶数串一定不满足该要求, 至多只能有n/2个满足原创 2020-06-30 13:59:28 · 134 阅读 · 0 评论 -
Reversi
题目连接: Reversi大致题意:翻转棋的简略版, 只有一维, 输出谁胜利解题思路:翻转棋: 在二维的情况要占据边角位, 尤其是四个顶角.在本题中则应该是占据左右两侧.如果先手方任意一侧已经有自己的棋子, 则他只需要下在对侧就满足了占据左右两侧, 则必胜.反之则是对方已经占据了左右两侧, 则对方必胜.AC代码:#include <bits/stdc++.h>typedef long long ll;using namespace std;deque<int>原创 2020-06-30 12:49:06 · 138 阅读 · 0 评论 -
Ants
题目连接: Ants大致题意:给你n个数字(最大1E6个), 让你输出最小的没有出现过的自然数.解题思路:最多1E6个数字, 答案一定在[0, 1E6]; 暴力即可AC代码:#include <bits/stdc++.h>typedef long long ll;using namespace std;const int MAXN = 1E7;bool a[MAXN];int main(void){ int n; scanf("%d", &n); //1000原创 2020-06-30 12:38:16 · 154 阅读 · 0 评论 -
Faster Microwaving
题目连接: Faster Microwaving大致题意:给你一个时间, 和一个百分比误差, 在百分比误差允许的范围内, 希望找到需要在微波炉上按键花费时长最短的按键方式. 微波炉的最后两位恒为秒.解题思路:模拟, 把所有情况的按键时间都求出来, 取最小.特别注意的是, 对于1:30, 可以输入130, 可以输入90, 会有不同的方式.AC代码:#include <bits/stdc++.h>typedef long long ll;using namespace std;i原创 2020-06-30 10:48:35 · 144 阅读 · 0 评论 -
Jumping Frog
题目连接: Jumping Frog大致题意:一只青蛙从原点出发, 路途中有些点不可达, 每次最远跳跃d, 询问最少跳多少次可以到达终点解题思路:暴力dfs深搜AC代码:#include <bits/stdc++.h>typedef long long ll;using namespace std;int c, d; char s[1000];int res = 0x7fffffff;bool dfs(int index = 1, int num = 0) { if (i原创 2020-06-30 09:25:34 · 742 阅读 · 0 评论 -
Accurate Movement(模拟)
cpp题目连接: Accurate Movement大致题意:初始有a和b两个木块(a比b短),位于最左端, 现在移动a和b木块, 在a块不能超出b块的前提下, 问你最少挪动多少次可以把a和b都挪到最右端.解题思路:模拟, 以两木块的最右端做为记录点. 先挪动a, 每次a块只能挪到和b块相同的位置, b块每次最多挪动(b-a).AC代码:#include <bits/stdc++.h>typedef long long ll;using namespace std;int ma原创 2020-06-24 22:55:41 · 1095 阅读 · 0 评论 -
胜利大逃亡(BFS)
题目连接: 胜利大逃亡解题思路:三维BFS, 挺简单的. 但是我找了一个多小时BUG, 以前做的bfs都不涉及能跑到出口, 但是出口居然 不!能!走! 的情况, 我真的是裂开了.AC代码:#include <cstdio>#include <queue>using namespace std;int mp[55][55][55];struct node { int x, y, z; int step; node(int x, int y, int z, int原创 2020-06-19 23:09:06 · 338 阅读 · 0 评论 -
Just the Last Digit
题目连接: Just the Last Digit题目: 略大致题意:有一张有向图, 只能从小的点跑向大的点, 告诉你从某点a跑到某点b的可行方案数的个位数(a<b), 让你确定任意两点间是否能直达.解题思路:由于只给了个位数, 其实相当于将总的方案数%10给出.某点a到某点b的方法无非是, 间接通过c点(a < c < b), 或者直接到达, 如果我们将所有间接可达的方案总数求出, %10后如果与给出的个位数相同, 则无法直达, 反之可以直达.因此我们只需要枚举a, b,原创 2020-06-15 23:53:42 · 327 阅读 · 0 评论 -
Bob in Wonderland
题目连接: Bob in Wonderland题目: 请点击连接查看大致题意:这个题挺水的, 直接看题目的给的图片就行, 给你一个链子, 最左边的链子是标准形式, 就是组成一个单链, 中间和右边的都不是标准型, 问你最少要断开重连几次才能让给定的链条变成标准型.解题思路:这个题当时感觉有点偏思维, 其实如果想让链子是单链, 一定至少有两个环是只连接一个的, 即为首尾环. 剩下的理应都有两个不同的环与其相连.如果某个环上不止连接了两个环, 我们就得断开多余的环, 让他连到合适的地方去. 而断开环的原创 2020-06-10 23:10:40 · 261 阅读 · 1 评论 -
ABB(马拉车)
题目连接: ABB题目:Fernando was hired by the University of Waterloo to finish a development project the university started some time ago. Outside the campus, the university wanted to build its representative bungalow street for important foreign visitors and co原创 2020-06-10 22:53:11 · 375 阅读 · 0 评论 -
Adding Powers
题目连接: Adding Powers题目:见链接大致题意:给你一个数字k 和一个整型数组, 问你能否用一个或多个ki的值(和), 来表示整个数组里的各个数字, 其中要求i不能重复使用.例如: 给定数字9, 数组为: 1, 82;1 = 90, 82 = 90 + 92, 即使我们表达出了整个数组, 但是 i=0 被用了两次, 因此是不成立的.解题思路:这其实就是一个进制转换, 但是要求从十进制转换到k进制后, 各个数位上的数字只能为0或者1.当我们把一个数字i进行转换时:如果当前取余的原创 2020-05-10 10:42:06 · 232 阅读 · 0 评论 -
Bogosort
题目连接: Bogosort题目:You are given an array a1,a2,…,an. Array is good if for each pair of indexes i<j the condition j−aj≠i−ai holds. Can you shuffle this array so that it becomes good? To shuffle an array means to reorder its elements arbitrarily (leaving原创 2020-05-10 10:13:51 · 247 阅读 · 0 评论