本文共 1377 字,大约阅读时间需要 4 分钟。
poj2481,一直是超时。。。
#include#include #include using namespace std;const int N = 100001;class term{public: term(int s,int e,int id):s(s),e(e),id(id){} int s; int e; int id;};class Cmp{public: bool operator()(const term & t1,const term &t2) { if(t1.e>t2.e) return true; if(t2.e == t1.e) return t1.s <= t2.s; return false; }};int c[N];int rst[N];int lowbit(int i){ return i&(-i);}int sum(int i){ int s=0; while (i>0) { s +=c[i]; i -=lowbit(i); } return s;}void update(int pos,int val){ while(pos<=N) { c[pos] +=val; pos +=lowbit(pos); }}int main(){ int num; vector cows; while (scanf("%d",&num) && num!=0) { for (int i=0;i
这是网上找的代码
#include#include #include #include #include #include #include #include #include #define MAX 100010using namespace std;typedef struct SE{ int s,e; int ind;}SE;SE se[MAX];int c[MAX];int ind[MAX];int out[MAX];bool cmp( SE a ,SE b ){ if( a.e == b.e ) return a.s < b.s; return a.e > b.e;}int Lowbit(int x){ return x & (-x);}void Updata(int x){ while( x < MAX ) { c[x]++; x += Lowbit(x); }}int Getsum(int x){ int sum = 0; while( x > 0 ) { sum += c[x]; x -= Lowbit(x); } return sum;}int main(){ int i,n; while( ~scanf("%d",&n) && n ) { memset(c,0,sizeof(c)); memset(se,0,sizeof(se)); memset(out,0,sizeof(out)); for(i=0; i
转载地址:http://vseti.baihongyu.com/