POJ1007

数据范围很小,直接O(n2)统计一下每个字符串逆序对数目,排个序就好了,有点惊讶,用了string,cin竟然还是0ms过的

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
#define PII pair<int,int>
const int N_MAX=50+10,M_MAX=100+10;
int n,m;string str[M_MAX];PII cnt[M_MAX];
int main(){
	scanf("%d%d", &n, &m);
	for (int i=1; i<=m; ++i){
		cin>>str[i]; cnt[i].first=0; cnt[i].second=i;
		for (string::iterator it_i=str[i].begin(); it_i!=str[i].end(); ++it_i)
			for (string::iterator it_j=it_i+1; it_j!=str[i].end(); ++it_j)
				if (*it_j<*it_i)
					++cnt[i].first;
	}
	sort(cnt+1,cnt+m+1);
	for (int i=1; i<=m; ++i)
		cout<<str[cnt[i].second]<<endl;
	return 0;
}
时间: 2024-12-15 10:28:31

POJ1007的相关文章

算法:POJ1007 DNA sorting

这题比较简单,重点应该在如何减少循环次数. package practice; import java.io.BufferedInputStream; import java.util.Map; import java.util.Scanner; import java.util.TreeMap; /** * DNA sorting * * @author caiyu * @date 2014-11-5 */ public class POJ1007 { public static void m

[POJ1007]DNA Sorting

试题描述 One measure of ``unsortedness'' in a sequence is the number of pairs of entries that are out of order with respect to each other. For instance, in the letter sequence ``DAABEC'', this measure is 5, since D is greater than four letters to its rig

求字符数组逆序数(poj1007)

int InversionNumber(char* s,int len) { int ans=0;  //s逆序数 int A,C,G;  //各个字母出现次数,T是最大的,无需计算T出现次数 A=C=G=0; for(int i=len-1;i>=0;i--) { switch(s[i]) { case 'A':A++;break;  //A是最小的,无逆序数 case 'C': { C++; ans+=A;  //当前C后面出现A的次数就是这个C的逆序数 break; } case 'G':

poj1007【求逆序数】

Description One measure of ``unsortedness'' in a sequence is the number of pairs of entries that are out of order with respect to each other. For instance, in the letter sequence ``DAABEC'', this measure is 5, since D is greater than four letters to

[算法] POJ1007

网址:http://poj.org/problem?id=1007 首先定义一个字符串大小的概念:右边的字母小于前边字母的数量.给定多组字符串,按照大小顺序输出. 用到的方法: 排序算法 首先需要排序,然后对排序后得到的index进行以下的处理 index_1[index[i]]=i; 最终得到输出. Sample Input 10 6 AACATGAAGG TTTTGGCCAA TTTGGCCAAA GATCAGATTT CCCGGGGGGA ATCGATGCAT Sample Output

POJ-1007: DNA Sorting 详解1: 插入排序法

> 分析 >> 本题分两步 1. 计算序列的逆序数 2. 根据逆序数排序 >> 由于序列个数最大只有100个, 所以不需要过分追求速度,插入排序就够用 > 注意: >> 存储序列的数组长度最好是50+1, 有利于输出 > 附代码 1 #include "stdio.h" 2 3 int main(void) 4 { 5 char seqs[100][50 + 1] = {0} ; 6 int inversions[100] = {0

C#C# ACM poj1007

求逆序数,快排 public static void acm1007(int a, string[] c) { Dictionary<int, string> dic = new Dictionary<int, string>(); int[] i = new int[a]; var j = 0; foreach (var item in c) { int k = Acm1007Unit(item); if (!dic.ContainsKey(k)) { i[j] = k; j++

关于ACM与OJ

初级: 一.基本算法: (1)枚举. (poj1018,poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3295,poj3239) (6.1)模拟法.(poj1008,poj1068,poj2632,poj1573,poj2993,poj2996,poj3087) (6.2)模拟法(高精度算法)(poj1001,poj1503,poj2389,poj2602,poj3982,21位大数的水仙

【转载】POJ水题大集合

POJ水题大集合 poj1000:A+B problempoj1002:电话上按键对应着数字.现在给n个电话,求排序.相同的归一类poj1003:求最小的n让1+1/2+1/3+...+1/n大于给的一个实数poj1004:求一堆实数的平均数poj1005:由坐标 (0,0) 开始,以半圆为形状每年侵蚀50m^2,问(0,0)开始到(x,y)结束需要多长时间poj1006:三个周期是常数.现在给三个周期出现高峰的时候,问下一次出现高峰是什么时候poj1007:求字符串排序poj1008:一种日历