思维
error0318
这个作者很懒,什么都没留下…
展开
-
LeetCode 1590. 使数组和能被 P 整除
题目链接:LeetCode 1590. 使数组和能被 P 整除题意:给你一个正整数数组nums,请你移除最短子数组(可以为空),使得剩余元素的和能被p整除。不允许将整个数组都移除。请你返回你需要移除的最短子数组的长度,如果无法满足题目要求,返回-1。子数组定义为原数组中连续的一组元素。解题思路: 用到取余的思想const int maxn = 1e5+5;class Solution {private: long long pre...原创 2020-10-11 19:22:22 · 375 阅读 · 0 评论 -
LeetCode 1589. 所有排列中的最大和
题目链接:LeetCode 1589. 所有排列中的最大和题意:有一个整数数组nums,和一个查询数组requests,其中requests[i] = [starti, endi]。第i个查询求nums[starti] + nums[starti+ 1] + ... + nums[endi- 1] + nums[endi]的结果,starti和endi数组索引都是从 0 开始的。你可以任意排列nums中的数字,请你返回所有查询结果之和的最大值。由于答...原创 2020-09-30 16:24:27 · 373 阅读 · 0 评论 -
LeetCode 1588. 所有奇数长度子数组的和
题目链接:LeetCode 1588. 所有奇数长度子数组的和题意:给你一个正整数数组arr,请你计算所有可能的奇数长度子数组的和。子数组定义为原数组中的一个连续子序列。请你返回arr中所有奇数长度子数组的和。示例 1:输入:arr = [1,4,2,5,3]输出:58解释:所有奇数长度子数组和它们的和为:[1] = 1[4] = 4[2] = 2[5] = 5[3] = 3[1,4,2] = 7[4,2,5] = 11[2,5,3] = 10[...原创 2020-09-30 15:45:31 · 302 阅读 · 0 评论 -
codeforces 1405 C. Balanced Bitstring
题目链接:codeforces 1405 C. Balanced Bitstring题意: t组样例 给出一个长度为n的 0 1 字符串, 其中包含 ? ,可以代替0 或 1 ,然后给出一个k,判断连续的k个字符中能否使0和1的个数相同例: n = 7 k = 4 1 ? 0 ? ? 1 ? 可以将字符串转换成 1 1 0 0 1 1 0. 这样 连续长度为k的子串1100 1001 0011 0110...原创 2020-09-18 15:24:38 · 155 阅读 · 0 评论 -
codeforces 1405 B. Array Cancellation
题目链接:codeforces 1405 B. Array Cancellation题意: t组测试用例 1 <= t <= 5000 1 <= n <= 100000 -1000000000 <= a[i] <= 1000000000 给一个长度为n的数组,对于不同坐标的元素,可以进行如下操作: a[i] - 1 并且 a[j] + 1 如果i < j,操作免费 如果i >...原创 2020-09-18 15:06:58 · 187 阅读 · 0 评论 -
codeforces 1405 A. Permutation Forgery
题目链接:codeforces 1405 A. Permutation Forgery题意: t组测试用例 给一个长度为n的数组,数组元素为1-n,将数组相邻两个元素相加后组成新的数组,对新数组进行排序 求对原数组的顺序打乱,将相邻的两个元素相加排序后组成的新数组排序后和之前一样 例: n = 6 原数组:2 1 6 5 4 3 新数组: 3 7 11 9 7 排序后 3 7 7 9 11 答案就可以是:1 2 5 6 3...原创 2020-09-18 15:04:06 · 151 阅读 · 0 评论 -
projectEuler Problem 15.Lattice paths
题目链接:15.Lattice paths题意:Starting in the top left corner of a 2×2 grid, and only being able to move to the right and down, there are exactly 6 routes to the bottom right corner. How many such routes are there ...原创 2020-09-16 14:48:20 · 128 阅读 · 0 评论 -
LeetCode 1585. 检查字符串是否可以通过排序子字符串得到另一个字符串
题目链接:LeetCode 1585. 检查字符串是否可以通过排序子字符串得到另一个字符串题意:给你两个字符串s和t,请你通过若干次以下操作将字符串s转化成字符串t:选择s中一个非空子字符串并将它包含的字符就地升序排序。比方说,对下划线所示的子字符串进行操作可以由"14234"得到"12344"。如果可以将字符串s变成t,返回true。否则,返回false。一个子字符串定义为一个字符串中连续的若干字符。示例 1:输入:s...原创 2020-09-14 21:33:18 · 223 阅读 · 0 评论 -
滴滴出行2017秋招笔试真题-编程题汇总 [编程题]末尾0的个数
题意: n的阶乘末尾有多少个0解题思路:(p的思路,大一被这道题虐过,好像是蓝桥杯,当时的想法,判断2和5的数量,谁多就是多少) 啊,解题思路。 判断5的数量,给你分析一下一个5的倍数和一个2的倍数就可以组成一个末尾0,平均5个数中有两个2的倍数, 当然是2的倍数多,那么直接判断5的倍数。 但是注意25 中有两个5,........#include <bits/stdc++.h>using namespace std;int main() { ...原创 2020-09-10 20:55:50 · 179 阅读 · 0 评论 -
LeetCode 60. 第k个排列
题目链接:LeetCode 60. 第k个排列题意:给出集合[1,2,3,…,n],其所有元素共有n! 种排列。按大小顺序列出所有排列情况,并一一标记,当n= 3 时, 所有排列如下:"123" "132" "213" "231" "312" "321"给定n和k,返回第k个排列。说明:给定n的范围是 [1, 9]。 给定k的范围是[1, n!]。解题思路: 解题思路有好几个,但是找规律无疑是耗时最少的,而且占用内存会很小就...原创 2020-09-09 15:30:39 · 97 阅读 · 0 评论 -
LeetCode 1567. 乘积为正数的最长子数组长度
题目链接:LeetCode 1567. 乘积为正数的最长子数组长度题意: 给你一个整数数组nums,请你求出乘积为正数的最长子数组的长度。一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。请你返回乘积为正数的最长子数组长度解题思路: 使用一个数组 记录 负数的下标, 当数组中的个数为偶数时,代表从 pre位置到当前位置的乘积为正数当数组中个数为奇数时,那么当前位置减去 数组的第一负数的下标 直接上代码,注释解释class Solution...原创 2020-09-08 08:09:04 · 437 阅读 · 0 评论 -
codeforces 1405A. Permutation Forgery
题目链接:codeforces 1405A. Permutation Forgery题意: 给一个数组,将数组中所有元素归为0,可以同时给 a[i] - 1并且给a[j] +1,如果i < j, 花费为0,否则花费为1解题思路: 从左往右遍历一遍,求前缀和中最小的负数#include <bits/stdc++.h>using namespace std;const int maxn = 100005;int a[maxn];long long ans...原创 2020-09-07 08:54:15 · 204 阅读 · 0 评论 -
LeetCode 1536. 排布二进制网格的最少交换次数
题目链接:LeetCode 1536. 排布二进制网格的最少交换次数题意: 给你一个nx n的二进制网格grid,每一次操作中,你可以选择网格的相邻两行进行交换。一个符合要求的网格需要满足主对角线以上的格子全部都是 0。请你返回使网格满足要求的最少操作次数,如果无法使网格符合要求,请你返回 -1。主对角线指的是从(1, 1)到(n, n)的这些格子。解题思路: 首先将每行从后往前遍历,找零的个数,放置在数组中如果满足那一行,就...原创 2020-08-28 13:23:40 · 147 阅读 · 0 评论 -
LeetCode 1535. 找出数组游戏的赢家
题目链接:LeetCode 1535. 找出数组游戏的赢家题意: 你一个由 不同 整数组成的整数数组 arr 和一个整数 k 。每回合游戏都在数组的前两个元素(即 arr[0] 和 arr[1] )之间进行。比较 arr[0] 与 arr[1] 的大小,较大的整数将会取得这一回合的胜利并保留在位置 0 ,较小的整数移至数组的末尾。当一个整数赢得 k 个连续回合时,游戏结束,该整数就是比赛的 赢家 。返回赢得比赛的整数。题目数据 保证 游戏存在赢家。解题思路:复杂度O(n...原创 2020-08-28 11:49:05 · 159 阅读 · 0 评论 -
codeforces 1400 D. Zigzags
题目链接:codeforces 1400 D. Zigzags题意:给定一个长度为n的序列a(n≤3000,ai≤n),求有多少个四元组(i,j,k,l) 满足:1 ≤ i < j < k < l ≤n a[i] = a[k] 且a[j] = a[l]解题思路: 4层for循环跑必然超时,所以需要优化,跑两层for循环,使用前缀和记录当前数字在 当前位置之前出现多少次具体为什么:点击查看#include <bits/stdc++.h...原创 2020-08-26 17:42:43 · 398 阅读 · 0 评论 -
LeetCode 1558. 得到目标数组的最少函数调用次数
题目链接:LeetCode 5481. 得到目标数组的最少函数调用次数题意: 给你一个与 nums大小相同且初始值全为 0 的数组 arr ,请你调用以上函数得到整数数组 nums。请你返回将 arr变成 nums的最少函数调用次数。答案保证在 32 位有符号整数以内。解题思路:分析:要么给某个数 +1 , 要么给所有数 ×2,算一次操作每个数(除了0)都要先加1,乘2才会有结果,如果往上变大,乘2会是最快的,分析出当自己本身为奇数时,需要自己额外加1,...原创 2020-08-23 09:32:23 · 232 阅读 · 0 评论 -
codeforces 1401 C. Mere Array
题目链接:codeforces 1401 C. Mere Array题意: 给出一个数组,当只有 a[i] 和 a[j] 的最大公倍数 等于 数组中最小值的时候,两个数才可以交换。问最终能否交换成一个递增序列。解题思路: 设最小元素为m,对于所有的m的倍数,m可以与这些元素互换而这些元素之间也可以借助m完成互换所有对与不是m的倍数的数,看排个序后是否还是一样#include <bits/stdc++.h>using namesp...原创 2020-08-22 09:09:19 · 277 阅读 · 0 评论 -
codeforces 1401 A. Distance and Axis
记录:好久不写,真的是没有codeforces题的思维了,每次隔好久不写,感觉像个麻瓜。题意: 给一个X轴方向的坐标,然后给一点 A 的坐标,给出一个K,要求一点 B存在 于X轴上,满足 |(B-O)-(A-B)| = k,问A点最少向左或向右移多少距离n = 4, k = 0, 那么B只要在(0,2)位置,A点就可以不移动解题思路: 如果 K 大于 n, 那么表示 B点一定在A点 右侧,公式转换为 B - (B - A) = k A = K,所以只需将A点移...原创 2020-08-22 08:24:19 · 292 阅读 · 0 评论 -
LeetCode 1540. K 次操作转变字符串
题目链接:LeetCode 1540. K 次操作转变字符串题意: 给你两个字符串s和t,你的目标是在 k次操作以内把字符串s转变成t。在第 i次操作时(1 <= i <= k),你可以选择进行如下操作:选择字符串 s中满足 1 <= j <= s.length且之前未被选过的任意下标 j(下标从 1 开始),并将此位置的字符切换 i次。不进行任何操作。切换 1 次字符的意思是用字母表中该字母的下一个字母替换它(字母表环状接起来,...原创 2020-08-17 15:50:45 · 562 阅读 · 0 评论 -
LeetCode 829 连续整数求和
题目链接:829连续整数求和题意: 给定一个正整数N,试求有多少组连续正整数满足所有数字之和为N?例如: 15 1+2+3+4+5 = 4 + 5 + 6 = 7 + 8 = 15 = 15 有4组解题思路 我能想到的方法就是循环,显然会超时,就是从1开始,往后加,直到 大于或等于N,然后下一次循环。看到大神的解法,震惊!认真理解: (1)N一定有一个是自己本身。 (毫无疑问) (2)两个数要构成 N , 那么...原创 2020-08-15 17:14:53 · 232 阅读 · 0 评论 -
LeetCode 1546.和为目标值的最大数目不重叠非空子数组数目
题目链接:和为目标值的最大数目不重叠非空子数组数目题意: 给你一个数组nums和一个整数target。请你返回非空不重叠子数组的最大数目,且每个子数组中数字和都为target。解题思路: 使用前缀和,将其放入数组中 ,然后依次判断sum-target是否在数组中,如果有,那么ans++,清空数组。 代码:class Solution { /** * @param Integer[] $nums * @param In...原创 2020-08-15 16:12:13 · 261 阅读 · 0 评论 -
LeetCode 1545.找出第N个二进制字符串的第K位
题目链接:1545.找出第N个二进制字符串的第K位题意: 给定一个规则:S1= "0" 当i > 1时,Si=Si-1+ "1" + reverse(invert(Si-1))所以当n = 1 时, S = "0"当n = 2 时,S = "011"当n = 3 时,S = "0111001"当n = 4 时, S ="011100110110001"依次类推解题思路 我们会发现字符串长度会随着n的次方增长,所以存储字符串是不明智的...原创 2020-08-15 16:01:15 · 303 阅读 · 0 评论 -
codeforces 1293 A. ConneR and the A.R.C. Markland-N(思维)
A. ConneR and the A.R.C. Markland-N(思维)题目链接:codeforces 1293A题意: T组样例,每组样例给出一个 n, s, k ,表示 n 层楼,当前ConneR在 s 层,有 k 层餐馆关闭了,第二行输入 k 个数,表示没有开门的餐馆在哪层。问ConneR最少走多少层可以吃到午饭。举例:2 2组5 2...原创 2020-04-30 19:20:45 · 254 阅读 · 0 评论 -
codeforces 1324 D. Pair of Topics(思维)
D. Pair of Topics(思维)题意: 给两个大小为 n 的数组A, B, 判断数组中有多少对 满足 Ai + Aj > Bi + Bj。解题思路: 由于 n 的大小限制,两个for循环必然超时。调整不等式 为 (Ai - Bi) + (Aj - Bj) > 0 ,那么此时就可将两个数组转换为一个数组然后从小到大排序,小的 + 大的如果 ...原创 2020-03-13 12:33:30 · 855 阅读 · 2 评论 -
codeforces 1281 B. Azamon Web Services(思维)
B. Azamon Web Services题目链接:codeforces 1281 B题意: T组测试样例,每组样例给出两个字符串,一个字符串 s ,一个字符串 c ,如果将字符串 s 中的两个字符交换位置(只能交换两个字符或者不交换),如果交换后的字符串 s 小于 c ,输出交换后的字符串 s , 否则输出 --- 解题思路: 将字符串 s 排序,得到最小字...原创 2020-03-10 19:34:55 · 265 阅读 · 0 评论 -
2019牛客多校第三场 B.Crazy Binary String
题意 给n个0或1,求0和1个数相等的字串 和子序列 最长的长度。字串:连续子序列:不连续也行题解 字串:用前缀和,0代表-1, 1代表1, 用map存第一次出现前缀和的位置,如果出现和相等,则说明中间的0,1个数相等子序列:0和1的个数最小值 * 2;#include <bits/stdc++.h>using namespace st...原创 2019-08-10 10:12:41 · 146 阅读 · 0 评论 -
2019牛客暑期第三场 H.Magic Line(思维,几何)
题意 给出n个点的坐标,画出一条直线将这些点分开,每边各占一半题解 将这些点的横坐标排序,如果相等,则排纵坐标的大小,然后在极远处稍微倾斜这条直线,就可以将这些点分开当两个y相同时,一定过中心点(a[n/2].x, 0),然后向上平移a[n/2].y, 就一定经过点 (a[n/2].x , a[n/2].y), 只需将直线右端点向上平移一点距离,直线就不会过点 (a[n/2...原创 2019-08-09 21:18:14 · 203 阅读 · 0 评论 -
2019牛客暑期第一场 J Fraction Comparision(大数转换)
题意 给出4个超大数,比较x/a 和 y/b大小题解 刚开始过的是用Python写的,不用任何处理 c++:大数会超出范围,假分数的思想,先比较整数部分大小,在比较分数部分大小#include<bits/stdc++.h>using namespace std;typedef long long ll;int main(){ ll x, a, ...原创 2019-08-07 17:24:23 · 141 阅读 · 0 评论 -
2019牛客多校第五场 A.digits 2
A.digits 2题意: t组样例,给你一个数 n (1 <= n <= 100) ,让你输出一个数 x ,x 满足两个条件 : 1 . x 是 n 的倍数. 2 . x 的每一位数字加起来的和也是 n 的倍数。题解: 直接输出 n 个 n#include <bits/stdc++.h>using namespace...原创 2019-08-13 19:58:48 · 148 阅读 · 0 评论 -
codeforces 940 B - Our Tanya is Crying Out Loud (数学,思维)
题目链接codeforces 940 B题意:给出 n , k , a, b, 每次减一花费 a , 如果n能整除k,可以除k,花费b,问n变为1的最小花费题解:当n%k == 0时,如果除k的花费小,那么除以 k,否则直接减到1,退出循环(此时如果除以 k,那么下一步还有可能除 k, 如果不除k,那么下一步必定不可能除 k,因为 n 越变越小,后面除 k,已经保证不了最优【举例...原创 2019-08-05 15:09:50 · 199 阅读 · 0 评论 -
2019牛客多校第四场 K.number
K.number题意: 给出一个字符串,判断能整除的字符串个数 600 输出4 600 0 0 00题解: 根据前缀和对3取余,答案加上00前面的前缀和对3取余的个数578162000 00 前面的2%3 == 2 , 2出现了3次 (表示前一个2到这一个2之间有两个3的倍数)上面的数前...原创 2019-08-12 20:01:20 · 148 阅读 · 0 评论 -
2019牛客多校第四场D. triples I
题意 给你一个n,问至少有几个数或运算起来可以等于n,并且输出数量和这个几个数(且这几个数是 3 的倍数)。题目说明给的n一定符合条件(不会输出n=1 之类不存在情况)。题解 题目说 n 一定符合条件,所以不考虑n==1 或 n == 4之类的数,此类数不符合条件分类讨论 当 n % 3 == 0 时,直接输出 n ,不用和其他数异或否则将n转换为二进制...原创 2019-08-13 09:12:04 · 169 阅读 · 0 评论 -
codeforces 996B.World Cup(思维)
codeforces 996B. World Cup题意: 开始Allen站在第一个门,如果当前门前面有人Allen会花费单位时间走到下一个门,如果没人Allen从这个门就进去了。球场的每个门,每单位时间可以进去一个人。问Allen最终是从哪个门进入球场的?题解:判断何时从这个门进,如果从第 i 个门进,第 i 个门有 k 个人,那么 x * n+ i > k ...原创 2019-08-22 10:23:16 · 195 阅读 · 0 评论 -
codeforces 1030C. Vasya and Golden Ticket
题目链接:codeforces 1030C题意: 给 n 个数字, 问能否将其分为多段,使每一段的和相等题解: 模拟:将每一段都列出来,判断是否可能AC代码:c++#include <bits/stdc++.h>using namespace std;int main(){ int n, a[105]; memset(a, 0, sizeof(...原创 2019-08-28 18:25:47 · 210 阅读 · 0 评论 -
codeforces 235A. LCM Challenge
题目连接:codeforces 235A 题意: 求小于等于 n 的三个数的最大的公倍数题解: 分析 : 相邻的奇数互质,相邻的整数互质 当 n 小于等于 2时,ans = n 当n为奇数,最大的公倍数即为 ans = n * (n - 1) * (n - 2) 当n 为偶数: 当 n %3 != 0 意味着n和n-3没有约数 an...原创 2019-08-28 19:17:05 · 261 阅读 · 0 评论 -
2018 南京赛区网络预赛 An Olympian Math Problem
题目链接:An Olympian Math Problem题意 给出计算公式 S( n ) = 1×1! + 2×2! + ⋯+(n−1)×(n−1)!给定一个 n 求 S( n ) % n题解:1 + S(n) = 1 + 1×1! + 2×2! + ⋯+(n−1)×(n−1)! = 2×1! + 2×2!+⋯+(n−1)×(n−...原创 2019-08-29 15:00:45 · 159 阅读 · 0 评论 -
codeforces 1082A. Vasya and Book(思维)
题目链接:codeforces 1082A题意: 一本书总共有 n 页,初始在 x 页, 最终要翻到 y 页,每次只能往前或往后翻 d 页,问最少翻多少次可以翻到,如果不能输出-1。往前或往后都是有边界的,即假设 n = 20, d = 10现在在第15页, 往后翻一次就到了 20页题解: 分类讨论,①能直接从 x 页翻到 y 页 ...原创 2019-08-30 12:57:40 · 152 阅读 · 0 评论 -
codeforces 950D - A Leapfrog in the Array(思维)
题目链接codeforces 950D题意:给出一个n,每个数i 在2*i-1 的位置,每次把最后一个往前面的空格处移动,直到没有空格 ,q次查询,问第x位置的数是多少题解:当查询的位置为奇数时, 数字没有移动过,为 (x+1)/ 2当查询的位置为偶数时,意味着当前位置的前 有 x / 2 个数字没有移动过,然后往后加,直到位置为奇数,最后为(x+1)/ 2以 n = ...原创 2019-08-05 11:28:52 · 169 阅读 · 0 评论