摘要:
20220812 闲话 阅读全文
摘要:
提示:萌新不会写substr,所以本篇是适合新手阅读的题解。 PART 01 读入 我们可以利用C++语言的特性,把字符串读入写入循环条件里: for( ; cin>>s[cnt] ; ){ //C++语言特性 cnt++; } 为了避免变量重名,也为了为字符串数组提供指针,用 cnt 表示目前读入 阅读全文
摘要:
PART 01:思路 我们知道最后的字符串一定是一个左右两边为括号的串,所以先找一波括号。 第一步,找左右括号。 接着在两个括号之间找出两个冒号,所以还要存下左右括号的下标。 第一步,找左右括号并存下下标。 第二步,找左右冒号。 最后在两个冒号之间找 \(|\) 字符,所以还要存下冒号的下标。 第一 阅读全文
摘要:
题目大意 对于一个无向无权联通图 \(G\),有 \(n\) 个点 \(m\) 条边,往这个图里没有被连接的两个点之间连边,问有多少连法可以使得 \(s\) 到 \(t\) 的最短路长度不变。 解决思路 2.1 暴力做法 可以枚举任意两个点,对于每次连接使用 bfs 求最短路,计算出时间复杂度为 \ 阅读全文
摘要:
题目大意 现在有 \(n\) 个学生,每个学生的水平为 \(a_i\),允许你往其中添加 \(k\) 个任意水平的学生。现在要求你把这 \(n\) 个学生分成几组,使得每一组中的水平大小相邻的学生的水平绝对差小于等于 \(x\)。 思路分析 考虑贪心 可以先对学生的水平排一下序,算绝对差,把绝对差存 阅读全文
摘要:
题目传送门 可能更好的阅读体验 思路 很简单的贪心,我们可以把打分的情况分为三种讨论。 显然,如果要使得答案尽量大,就尽量把除最小得分以外的分数都加成最大的分数。我们可以假设要把除最小值、最大值以外的分数都变成最大分需要加 \(sum\) 分,这样就可以举出三种情况: 1.\(sum=m\),刚好可 阅读全文
摘要:
题目大意 首先,本题含有多组数据。 对于每组数据,考虑两个下标 \(i,j\) 在一个长度为 \(n\) 的序列 \(a\) 中,若 \(1\leqslant i < j \leqslant n \land gcd(a_i,2a_j)>1\) 则称这对 \((i,j)\) 是优美的数对,请问怎样安排 阅读全文
摘要:
题目大意 有 \(t\) 组测试数据。 对于每一组测试数据,有 \(n\) 个糖果堆,每个糖果堆都有 \(a_i\) 颗糖果,请问可不可以把所有糖果分平均? 如果可以输出最少要分几次才能平均,不可以就输出 \(-1\)。 思路 2.1 考虑不行的情况 把所有的糖果堆里的糖果数量加在一起得到和 \(s 阅读全文
摘要:
题目大意 有 \(t\) 组数据,每组数据是一个长度为 \(n\) 的数列,现在要你求出需要往数列中加入多少个非负整数才能使得数列的平均数为 \(1\)。 解决思路 考虑各种情况 如果平均数大于 \(1\),我们就要把平均数降下来,那肯定不能往里面加正数,只能往数列里加 \(0\) 。 如果平均数等 阅读全文
摘要:
题目传送门 可能更好的阅读体验 题目大意 对于一个有向图 \(G\):有 \(N\) 个点,\(M\) 个边,把每一条边用三元组 \((S_i,T_i,W_i)\),其中 \(S_i,t_i\) 表示两个端点,\(W_i\) 表示这条边的长度。 如果这个图中从点 \(1\) 到点 \(N\) 的最短 阅读全文