排序
Little_Flower_0
一只小花
展开
-
冒泡排序
#include<iostream>using namespace std;const int maxn=10000;int n,a[maxn];int main(){ cin>>n; for (int i=1;i<=n;++i) cin>>a[i]; for (int j=1;j<=n-1;++j) for (int i=1;i<=n-j;原创 2015-05-02 11:33:48 · 514 阅读 · 0 评论 -
选择排序
#include<iostream>#include<iomanip>#include<cstdlib>using namespace std;int a[101];int main(){ int n; cout<<"Input n"<<endl; cin>>n; cout<<"Input "<<n<<" integers:"<<endl;原创 2015-05-02 11:31:43 · 522 阅读 · 0 评论 -
Codevs3286 火柴排队
题目大意:给定两个长度为n的序列,序列中相邻的数可以相互交换。求至少交换多少次才能使火柴之间的距离和最小。思路:可以用排序不等式证明,当每一根火柴与在各自排完序的序列中的序号相同者配对时,才有最小距离和。对于一个序列a,先确定其中元素相对于整个序列的位置,再用编号1、2、3进行定位,再对序列b中元素按已经在a中标好的标号与排名的对应关系对b进行标号,最后就是求逆序对个数了。代码如下:#incl原创 2015-10-25 20:51:47 · 597 阅读 · 0 评论 -
BestCoder Round #59 (div.2)
前言: 受水平限制,仅能在比赛及其结束后写出前三题。题目:SDOI思路:就是纯模拟,只不过略为恶心。代码如下:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=105;struct node{ string原创 2015-10-13 07:34:17 · 368 阅读 · 0 评论 -
Codevs3324 新斯诺克
题目大意:给定一个具有n个数的数列和一个数m,求有多少个连续子序列的和的平均数大于m。思路:平均数是不用管的,数列中每个数直接减去即可,这样条件转化为连续子序列的和大于0。再由此联想到数组的前缀和,则某一段序列和a[i]+…+a[j]=s[j]-s[i-1],符合条件的话,则有s[j]-s[i-1]>0,即s[j]>s[i-1],由此转化为求逆序对数。代码如下:#include<iostrea原创 2015-10-15 18:51:00 · 773 阅读 · 0 评论