cfdiv3[943]解题过程
总览
A题题意一览
样例一览
你知道的,gcd(x,y)是求x和y的最大公约数,题目要求使gcd(x,y)+y的值最大,那我们就别废话,直接写个gcd逐个比较过去,A题是这样的,你只需要莽,考虑太多反而写不对。
代码如下(感谢友人pofvvvv提供代码,我的思路复杂了)
123456789101112131415161718192021#include <iostream>using namespace std;int gcd(int a,int b){ if(a%b==0)return b; return gcd(b,a%b);}int main(){ ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); int t,num,max=0,tmp=0; cin>>t; while(t--){ cin>>num; for(int i=1;i<num;i++) if(gcd(num,i)+i>max){ tmp=i; ...
排序
简介 排序算法(英语:Sorting algorithm)是一种将一组特定的数据按某种顺序进行排列的算法。排序算法多种多样,性质也大多不同。
排序算法的种类很多,例如选择排序,冒泡排序,插入排序,基数排序,快速排序,归并排序,堆排序,桶排序……
不同种类的排序算法用途一般不同,不过最常用的无非就是快速排序和sort函数排序,后者更是基本适用所有情况,接下来我要介绍的几种排序算法中也会着重介绍他们。
选择排序和冒泡排序 选择排序是一种十分直观的排序算法,大概就是在第i次循环中选中未排序元素中最小的元素,将其放到数组第i位,并进入下一轮寻找最小元素的循环中。
大致代码如下:
12345678910111213141516171819202122#include"iostream"using namespace std;int main(){ int n=4; int a[5]={1,5,4,9,3}; //前n-1个元素排序完了,第n个元素就自动排序好了,并且这里数组下标从0开始,故循环至n-1 for(int i=1 ...
灵光一闪--对顶栈
故事开端 忆昔当年泪不干,在这么一个平凡的夜晚,我在牛客打了一发小白月赛。当时的我并不知道这场比赛将会对现在的我造成多大的影响,以至于如今我时常怀念那个无所不能的自己。**
(好像也不是很厉害)
可以看到,七道题目我过了五题,水平还算好吧,看看最后两题过的人这么少(自豪)
好了也不多bb,开始进入正题
初次相遇
我当时一看到这题,脑子里面浮现好几种做法,其中就有栈(有关栈的描述请看oi wiki 栈),但是最后我选择用数组来做,我也不知道我怎么想的,可能是因为以前在洛谷做过类似的题,比如P1739 表达式括号匹配(用栈来验证左右括号是否完全匹配),就想用没做过的办法来写,于是就用了字符数组来做。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include"bits/stdc++.h"using namespace std;#define ll long long#define NO cout<<"NO"& ...