![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
51nod
漫漫人生路^_^
这个作者很懒,什么都没留下…
展开
-
2021-08-14
题目链接给你 n个正整数,请你将其重排,使得后一个数是前一个数的三分之一(整除)或二倍。你只需判断是否有解,若有解,输出 Possible ,否则输出 Impossible 。n<=10^6,所有数字 ≤10^18 。输入第一行一个数字 n 。第二行 n 个数字。输出一行一个字符串。若有解,输出 Possible ,否则输出 Impossible 。输入样例33 1 2输出样例Possible思路:将每一个正整数n表示成3^x2y*z的形式,按照x从大到小的顺序排列,如果原创 2021-08-14 12:40:30 · 68 阅读 · 0 评论 -
51nod1296 有限制的排列
题目链接计算整数集合{1,2,3,4, … N }满足下列条件的的排列个数:在位置a1, a2, …, aK小于其邻居(编号从0开始,所以 a1到 ak 的值最小为 0)。在位置b1, b2, …, bL大于其邻居。输出符合条件的排列数量Mod 1000000007的结果。例如:N = 4,a = {1}, b = {2},符合条件的排列为:2 1 4 33 2 4 14 2 3 13 1 4 24 1 3 2输入第1行:3个数N, K, L,分别表示数组的长度,限制a的长度,限制b的原创 2021-08-10 12:24:56 · 90 阅读 · 0 评论 -
小明填坑
题目链接最近小明在学组合数,这一天他的老师给他这样一个问题,问题描述如下:给定一个n和一个m,一共有n个坑,你被要求去填坑,对于每一个坑,你可以选择填也可以选择不填,不能有连续m个坑被填,否则视为失败,现在问你一共多少种填法?输入输入一行n和m,代表坑的个数以及限制连续填坑数目。输出输出一个数,表示填坑方法的数目。由于答案数目很大,最后答案对1000000007取模数。数据范围对于10%的数据,1<= n<= 4;对于50%的数据,1<= n<= 1024;对于1原创 2021-08-06 12:21:45 · 359 阅读 · 3 评论 -
2021-08-031179 最大的最大公约数
题目链接给出N个正整数,找出N个数两两之间最大公约数的最大值。例如:N = 4,4个数为:9 15 25 16,两两之间最大公约数的最大值是15同25的最大公约数5。输入第1行:一个数N,表示输入正整数的数量。(2 <= N <= 50000)第2 - N + 1行:每行1个数,对应输入的正整数.(1 <= S[i] <= 1000000)输出输出两两之间最大公约数的最大值。输入样例49152516输出样例5#include<bits/stdc++原创 2021-08-03 19:59:10 · 147 阅读 · 0 评论 -
1419 最小公倍数挑战
题目链接几天以前,我学习了最小公倍数。玩得挺久了,想换换口味。我不想用太多的数字,我想从1到n中选三个数字(可以相同)。使得他们的最小公倍数最大。输入单组测试数据。第一行有一个整数n (1≤n≤1,000,000)。输出输出一个整数表示选三个数字的最大的最小公倍数。输入样例97输出样例504210数据弱,错误版本,虽然能AC#include<bits/stdc++.h>using namespace std;int main(){ long long n;原创 2021-08-03 13:13:55 · 67 阅读 · 0 评论 -
选择子序列
题目链接长度为N的整数数组A,所有的数均不相同,假设下标从0开始。找到一个最长的数组B,B数组的长度为K,数值范围是0 - N - 1,记录的是A数组的下标。满足A[B[0]] > A[B[1]] > A[B[2]] >…A[B[K]],并且对任意连续的两项B[i]及B[i + 1],满足min(B[i],B[i + 1]) < j < max(B[i],B[i + 1]) 均有A[j] < A[B[i + 1]] ,求最大的K。例如:9, 10, 2, -1, 3,原创 2021-08-03 12:27:17 · 226 阅读 · 0 评论 -
N的倍数
题目链接一个长度为N的数组A,从A中选出若干个数,使得这些数的和是N的倍数。例如:N = 8,数组A包括:2 5 6 3 18 7 11 19,可以选2 6,因为2 + 6 = 8,是8的倍数。输入第1行:1个数N,N为数组的长度,同时也是要求的倍数。(2 <= N <= 50000)第2 - N + 1行:数组A的元素。(0 < A[i] <= 10^9)输出如果没有符合条件的组合,输出No Solution。第1行:1个数S表示你所选择的数的数量。第2 - S原创 2021-08-03 12:21:03 · 242 阅读 · 0 评论 -
小b浇花
题目链接小b养了n盆花,第i盆花高度为A[i]。小b每天可以给某一盆花浇水,这样这盆花就会长高一单位。小b希望每盆花都是独一无二的,也就是不存在两盆花高度相等。求小b最少要浇几天水。输入第一行输入一个非负整数n;第二行输入n个非负整数,表示A[i];其中0≤n≤40000,0≤A[i]<40000输出输出一个非负整数,表示答案。输入样例63 2 1 2 1 7输出样例6#include<bits/stdc++.h>using namespace std;int原创 2021-08-03 12:17:37 · 183 阅读 · 0 评论 -
51nod2528 贪心
题目链接n 个小朋友身高分别为h1…hn,请你将他们围成一圈,使得相邻的两个小朋友的身高差的最大值最小。样例说明:将所有小朋友按 1,2,3,2,1 的顺序围成一圈,则相邻的两个小朋友的身高差的最大值为 1 。这显然是最小值。思路:贪心即可。#include<bits/stdc++.h>using namespace std;int n,a[110];int main(){ cin>>n; for(int i=1;i<=n;i++){原创 2021-08-03 12:13:15 · 138 阅读 · 0 评论 -
51 nod 1065 最大正子段和 前缀和+排序
题目链接51 nod 1065 最大正子段和N个整数组成的序列a[1],a[2],a[3],…,a[n],从中选出一个子段(a[i],a[i+1],…a[j]),使这个子段的和>0,并且这个和是所有和>0的子段中最小的。例如:4,-1,5,-2,-1,2,6,-2。-1,5,-2,-1,序列和为1,是最小的。输入第1行:整数序列的长度N(2 <= N <= 50000)第2 - N+1行:N个整数输出输出最小正子段和。输入样例84-15-2-126原创 2021-03-26 23:37:07 · 90 阅读 · 0 评论