題意:在東邊有n座城市,從北到南編號依次為1,2,3.n 在西邊有m座城市,從北到南編號分別為1,2,3.m 現要在南北城市之間修建k條超級高速公路,求會出現多少個十字路口
思路:找到合適的統計方法,先經過適當排序,再用RMQ解決
//2756 KB 469 ms #include#include #include #include using namespace std; typedef long long ll; const int M = 1e6+100; int n,m,k; struct Way { int u,v; }es[M]; bool cmp(const Way&a,const Way&b) { if(a.u==b.u) return a.v>b.v; return a.u>b.u; } int sum[1010]; inline int lowbit(int x) { return x&-x; } int getsum(int rt) { int s=0; for(int i=rt;i>0;i-=lowbit(i)) s+=sum[i]; return s; } void update(int rt) { for(int i=rt;i<=1000;i+=lowbit(i)) { sum[i]++; } } int main() { int T; scanf("%d",&T); for(int cas=1;cas<=T;cas++) { memset(sum,0,sizeof(sum)); scanf("%d%d%d",&n,&m,&k); for(int i=0;i