QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#418344#3746. 千万别用树套树ZayinCTT#WA 195ms3496kbC++112.2kb2024-05-23 12:56:012024-05-23 12:56:03

Judging History

This is the latest submission verdict.

  • [2024-05-23 12:56:03]
  • Judged
  • Verdict: WA
  • Time: 195ms
  • Memory: 3496kb
  • [2024-05-23 12:56:01]
  • Submitted

answer

// 那就是希望。
// 即便需要取模,也是光明。

#include <algorithm>
#include <stdio.h>
#include <vector>
typedef long long llt;
typedef unsigned uint;typedef unsigned long long ullt;
typedef bool bol;typedef char chr;typedef void voi;
typedef double dbl;
template<typename T>bol _max(T&a,T b){return(a<b)?a=b,true:false;}
template<typename T>bol _min(T&a,T b){return(b<a)?a=b,true:false;}
template<typename T>T lowbit(T n){return n&-n;}
template<typename T>T gcd(T a,T b){return b?gcd(b,a%b):a;}
template<typename T>T lcm(T a,T b){return(a!=0||b!=0)?a/gcd(a,b)*b:(T)0;}
template<typename T>T exgcd(T a,T b,T&x,T&y){if(b!=0){T ans=exgcd(b,a%b,y,x);y-=a/b*x;return ans;}else return y=0,x=1,a;}
template<typename T>T power(T base,T index,T mod)
{
    T ans=1%mod;
    while(index)
    {
        if(index&1)ans=ans*base%mod;
        base=base*base%mod,index>>=1;
    }
    return ans;
}
// Your shadow Gets in the way of my light
uint B[2][100005],Cnt[3][100005],n,q;
voi clear(uint*C)
{
    for(uint i=0;i<=n;i++)C[i]=0;
}
voi add(uint*C,uint p)
{
    p++;
    while(p<=n)C[p]++,p+=lowbit(p);
}
uint find(uint*C,uint r)
{
    uint ans=0;
    while(r)ans+=C[r],r-=lowbit(r);
    return ans;
}
uint find(uint*C,uint l,uint r)
{
    return find(C,r)-find(C,l);
}
int main()
{
#ifdef MYEE
    freopen("QAQ.in","r",stdin);
    freopen("QAQ.out","w",stdout);
#endif
    while(scanf("%u%u",&n,&q)==2&&n&&q)
    {
        while(q--)
        {
            uint o,l,r;scanf("%u%u%u",&o,&l,&r),l--,r--;
            if(o==1)
            {
                add(B[0],l),add(B[1],r);
                if(r-l<=2)Cnt[r-l][l]++;
            }
            else
            {
                uint ans=0;
                ans+=find(B[0],l+1);
                ans-=find(B[1],r);
                for(uint i=l;i<r;i++)
                    for(uint j=i;j<r;j++)
                        ans+=Cnt[j-i][i];
                printf("%u\n",ans);
            }
        }
        clear(B[0]);
        clear(B[1]);
        clear(Cnt[0]);
        clear(Cnt[1]);
        clear(Cnt[2]);
    }
    return 0;
}

// 那就是希望。
// 即便需要取模,也是光明。

详细

Test #1:

score: 0
Wrong Answer
time: 195ms
memory: 3496kb

input:

100000 100000
1 48500 63742
1 43673 89780
1 6471 44388
1 68054 71541
1 30056 91431
1 49687 70537
2 46899 46900
1 5165 57954
1 85892 88481
2 18060 18062
2 45289 45289
1 18927 67848
1 17389 96139
1 63451 92197
1 15473 87341
1 15162 15744
1 76728 99645
2 48730 48731
2 20886 20888
1 9756 67424
1 23175 4...

output:

2
2
3
7
5
8
9
4
6
2
11
13
13
10
13
15
9
10
14
16
17
16
16
15
2
4
11
6
11
12
23
9
26
3
28
20
12
12
22
30
5
27
6
29
10
14
27
6
17
15
9
30
20
34
7
36
15
8
32
16
21
40
19
2
1
12
12
39
37
13
19
20
1
9
37
1
41
40
20
34
45
43
27
30
47
29
13
50
41
44
29
35
38
53
2
46
54
36
56
58
45
32
42
26
52
42
60
1
4
25
...

result:

wrong answer 289457th numbers differ - expected: '19139', found: '19140'