POJ 1007
2009-11-25 20:18
197 查看
题意:逆序对
总结:我私下里WA了好几次,才发现我从前的逆序对写法是有错误的。要注意统计逆序对时加的数量
统计:2WA, 1CE
总结:我私下里WA了好几次,才发现我从前的逆序对写法是有错误的。要注意统计逆序对时加的数量
统计:2WA, 1CE
#include <iostream> #include <algorithm> #include <string> #include <cstring> #define FOR(i,a,b) for (int i=a;i<=b;i++) using namespace std; class node { public: int v,o; string s; node() {} bool operator <(const node& b) const { if (v!=b.v) return (v<b.v); return (o<b.o); } friend ostream& operator << (ostream& os,const node& b) { os << b.s; return os; } }; node a[101]; string str; char c[101]; int mergesort(int l, int r) { int ret=0; if (l<r) { int mid=(l+r)/2; int a=mergesort(l, mid); int b=mergesort(mid+1, r); ret=a+b; int i=l, j=mid+1; int total=l; while(i<=mid || j<=r) { if (j>r || (i<=mid && str[i]<=str[j]) ) c[total++]=str[i++]; else { c[total++]=str[j++]; ret+=mid-i+1; } } FOR(i,l,r) str[i]=c[i]; } //cout << l << "," << r << " " << ret << " " << str<< endl; return ret; } int n, len; int main() { //freopen ("in.txt","r",stdin); //freopen ("out.txt","w",stdout); len=0; n=0; cin >> len >> n; FOR(i,1,n) { cin >> str; a[i].s=str; a[i].o=i; a[i].v=mergesort(0, len-1); } sort(&a[1], &a[n+1]); FOR(i,1,n) cout << a[i] << endl; return 0; }
相关文章推荐
- POJ 1007 DNA Sorting
- poj1007
- POJ 1007
- POJ 1007
- poj 1007,DNA序列
- poj1007 树状数组逆序对
- POJ 1007 DNA Sorting
- poj 1007实现感想
- POJ 1007 DNA Sorting 水
- POJ-1007 DNA Sorting
- poj 1007 (nyoj 160) DNA Sorting
- POJ 1007 DNA Sorting(sort函数的使用)
- POJ-1007 DNA Sorting
- POJ 1007 DNA Sorting
- POJ 1007 Java:DNA Sorting
- POJ 1007 DNA Sorting
- poj 1007
- (POJ 1007)DNA Sorting
- poj 1007
- POJ 1007 DNA Sorting