poj 3067 Japan
2011-07-22 16:42
337 查看
#include <iostream> //树状数组,同poj 2155 stars using namespace std; const int maxm=1005; int table[maxm],link[1000010][2],t,m,n,k,i,j; int cmp(const void* a,const void* b) { if( ((int *)a)[0] == ((int *)b)[0] ) return ((int *)a)[1] - ((int *)b)[1]; else return ((int *)a)[0]-((int *)b)[0]; } int lowbit(int x) { return x&(-x); } void modify(int x) //修改的是[1,x-1]区间 { x--; //注意这里要x-- while(x>0) { table[x]++; x-=lowbit(x); } } int sum(int x) //求的是一个节点 { int s=0; while(x<=m) { s+=table[x]; x+=lowbit(x); } return s; } int main() { scanf("%d",&t); for(i=1;i<=t;++i) { memset(table,0,sizeof(table)); scanf("%d%d%d",&n,&m,&k); for(j=0;j<k;++j) { scanf("%d%d",&link[j][0],&link[j][1]); } qsort(link,k,sizeof(link[0]),cmp); long long total=0; //如果是int的就WA了 for(j=0;j<k;++j) { total+=sum(link[j][1]); modify(link[j][1]); } printf("Test case %d: %lld\n",i,total); } return 0; }
相关文章推荐
- poj 3067 Japan(线段树 | 树状数组)
- POJ 3067 Japan
- POJ 3067 Japan(树状数组求逆序对)
- POJ 3067 Japan
- POJ_3067 Japan[ 逆序数 树状数组 or 归并排序)
- POJ 3067 Japan
- POJ 3067 Japan (树状数组)
- poj-3067-Japan(树状数组)
- POJ 3067 Japan(树状数组)
- POJ 3067 Japan(树状数组:求逆序)
- poj 3067 Japan(树状数组,注意题目向树状数组的转换)
- POJ 3067 Japan(经典树状数组)
- POJ——T 3067 Japan
- poj 3067 Japan(线段树?,神奇卡时代码,暂未完)
- POJ3067——Japan
- POJ 3067 Japan (树状数组 + 逆序数)
- ZOJ 3129 || POJ 3067 Japan
- 树状数组 - POJ 3067 Japan
- poj 3067 Japan(树状数组)
- POJ 3067 japan