摘要:
题意:输入一个数,输出一个比接近它的比他大的二进制数(通过一直乘2得到的数)。 题解:直接暴力,跑循环得到。 accode: int main() { int t; cin >> t; while (t--) { int n; cin >> n; int s = 2; while (s < n) { 阅读全文
摘要:
题意:输入n,m,再输入长度为n的字符串s和长度为m的字符串t,从字符串s里找出子序列p,要求spi和ti相同(最终达到子序列和t相同)。求pi+1−pi的最大值。(上一个字符和下一个字符的最大间隔) 题解:要最大间隔,就去找上一个字符最先出现的位置,和后一个字符最后出现的位置,即得最大值,再在众多 阅读全文
摘要:
题意:给出n个数,问分成3组数且每组数和相等,(不改变原数列顺序)有几种分法。 题解:先求数列总和,判断这个数列是否能分成大小相等的3份。能的话,可以从后往前找,把遇到的和满足条件的标记一下。再从后往前,用前缀和的方式,把分法个数加起来,(说明在这个数之后,能够找到的分法和)然后再从前往后,找到满足 阅读全文
摘要:
题意:输入n个数,分为两组,要求两组数的和相等,给定一个数t,要求t比一组的全部数大,比另一组的全部数小,找出最小的t。tip:当t和n个数中的数有相同时,如果个数为偶数,就把他们分别分到两组,如果个数为奇数,就剔除一个,变成偶数,按偶数处理。 题解:先排序,然后用前缀和记录对应区间的和。如果遍历到 阅读全文
摘要:
题意:给出一串有正有负的整数,要求找到最大的符合+-+-+-(或者-+-+-+)的最大子序列。注意:该序列可以跳着选,但是顺序不能变。 题解:从头开始加,如果两个数符号相同,就比较大小,选出最大的数加入子序列(最大的数加最大的数当然最大啦)。 ACcode: int n,a[200010],b[20 阅读全文
摘要:
题意:输入n,k两个数,输出第k个不能被n整除的数。 题解: 假如我们输入的3,5,这表示我们需要找到第5个不被3整除的数,我们把数列出来,找到能被3整除的数,发现数列被分成了一段一段的且长度相等, 段数等于(5-1)/(3-1)=2,2也是能被3整除的数的个数。 我们可以通过(k-1)/(n-1) 阅读全文
摘要:
题意:有一个n*n的方格图,每个格子可以向周围8个方向移动,一次只能移动一步,最后要让所有的格子都移动到中间格子,问要多少步才能实现目标。 题解: 自己画的图: 当n=1时,只有中间一个小格,所以不需要移动,答案为0。 当n=3时,就要让橙色那一圈方格都移到中间,八个方格移动的步数就是8。 当n=5 阅读全文
摘要:
题意:输入一个数n(篱笆),再输入一个k(指的一个区间,从i到i+k-1),再输入n个数 ai(在题中指的篱笆的高度),题中要求找到和最小的区间,并输出该区间的左端点。 题解:这道题是用前缀和,暴力是不可能暴力了。首先,要想找到和最小的区间,最好是能够直接得到对应区间的和,这时候就要想到前缀和了。将 阅读全文
摘要:
题意:输入一个数n,判断是否能通过乘以2,除以6,把该数变成1。如果不能,输出-1;如果可以变成1,请输出从n变成1的次数。 题解:可以乘以2,也可以除以6。除以6可以看作除以2和除以3,于是我们也可以通过乘以2,把除以6变成除以3。那么我们可以求该数是否能够通过除以2和除以3得到1,如果不能得到1 阅读全文
摘要:
头文件:#include<iomanip> 代码: cout << setiosflags(ios::right)<<setw(向右对齐的位数) << 需要对齐的数;//向右对齐 cout << setiosflags(ios::right) << setw(向左对齐的位数) << 需要对齐的数 ; 阅读全文