QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#384194#3701. NecklaceNYOJ-3AC ✓53ms5996kbC++171.8kb2024-04-09 20:56:242024-04-09 20:56:25

Judging History

你现在查看的是最新测评结果

  • [2024-04-09 20:56:25]
  • 评测
  • 测评结果:AC
  • 用时:53ms
  • 内存:5996kb
  • [2024-04-09 20:56:24]
  • 提交

answer

#include<cstdio>
#include<cstdio>
#include<cmath>
#include<queue>
#include<stack>
#include<string>
#include<cstring>
#include<iostream>
#include<map>
#include<vector>
#include<algorithm>
#include<set>
#include<cmath>
using namespace std;
const int nn = 110000;
const int inf = 0x3fffffff;
int n;
int a[nn];
int c[nn*2];
int f1[nn],f2[nn];
int tree[11000];
inline int lowbit(int x)
{
    return x&(-x);
}
int getmax(int id)
{
    int re=0;
    while(id>0)
    {
        re=max(re,tree[id]);
        id-=lowbit(id);
    }
    return re;
}
void add(int id,int val)
{
    if(id==0)
        return ;
    for(int i=id;i<=10000;i+=lowbit(i))
    {
        tree[i]=max(tree[i],val);
    }
}
int solve(int id)
{
    int i;
    f1[0]=0;
    for(i=1;i<=10000;i++)
        tree[i]=0;
    int tem;
    for(i=id+1;i<id+n;i++)
    {
        if(c[i]==10000)
        {
            f1[i-id]=f1[i-id-1];
            continue;
        }
        tem=getmax(10000-c[i]+1)+c[i];
        f1[i-id]=max(f1[i-id-1],tem);
        add(10000-c[i]+1,tem);
    }
    f2[n]=0;
    for(i=1;i<=10000;i++)
        tree[i]=0;
    for(i=id+n-1;i>=id+1;i--)
    {
        if(c[i]==10000)
        {
            f2[i-id]=f2[i-id+1];
            continue;
        }
        tem=getmax(10000-c[i]+1)+c[i];
        f2[i-id]=max(f2[i-id+1],tem);
        add(10000-c[i]+1,tem);
    }
    int re=0;
    for(i=0;i<=n-1;i++)
        re=max(re,f1[i]+f2[i+1]);
    return re;
}
int ve[20],lv;
int main()
{
    int i;
    while(scanf("%d",&n)!=EOF)
    {
        lv=0;
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
            c[i]=a[i];
            c[i+n]=a[i];
            if(a[i]==10000)
                ve[lv++]=i;
        }
        int ans=0;
        for(i=0;i<lv;i++)
        {
            ans=max(ans,solve(ve[i]));
        }
        printf("%d\n",ans+10000);
    }
    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 4008kb

input:

6
10000 3 2 4 2 3

output:

10010

result:

ok 1 number(s): "10010"

Test #2:

score: 0
Accepted
time: 0ms
memory: 3896kb

input:

2
10000 10000

output:

10000

result:

ok 1 number(s): "10000"

Test #3:

score: 0
Accepted
time: 0ms
memory: 3940kb

input:

1
10000

output:

10000

result:

ok 1 number(s): "10000"

Test #4:

score: 0
Accepted
time: 0ms
memory: 3960kb

input:

100
5 2 7 8 4 2 4 6 2 3 3 3 6 9 0 7 5 5 8 8 1 8 5 1 9 5 0 0 5 9 5 9 4 7 8 6 9 5 10000 3 0 5 3 9 3 7 7 5 7 5 0 0 8 6 1 7 1 0 4 4 4 6 2 6 8 7 2 0 1 9 8 3 6 4 5 0 0 2 5 1 0 1 5 5 3 4 3 1 6 7 0 5 7 5 3 1 4 0 6 9

output:

10182

result:

ok 1 number(s): "10182"

Test #5:

score: 0
Accepted
time: 0ms
memory: 3904kb

input:

100
1 0 3 7 6 4 7 0 2 9 5 6 2 1 2 6 7 3 8 10000 6 6 2 3 1 9 9 4 6 10000 1 8 6 2 7 2 0 10000 2 10000 10000 10000 8 1 2 8 6 0 9 3 10000 6 0 4 2 1 5 5 6 1 4 5 10000 8 6 2 6 0 5 2 4 6 2 9 2 3 9 6 10000 9 0 6 4 2 8 3 6 1 9 6 9 0 10000 1 0 3 6 2 6 0

output:

10164

result:

ok 1 number(s): "10164"

Test #6:

score: 0
Accepted
time: 0ms
memory: 3904kb

input:

100
33 25 88 5 32 40 57 46 31 52 16 72 52 49 23 4 33 59 98 71 88 8 78 91 39 20 43 80 33 9 26 56 44 95 33 96 29 29 58 13 67 38 80 64 56 89 95 2 14 25 72 28 39 38 63 96 38 10 76 70 4 33 79 72 96 57 84 67 56 71 16 60 25 10000 86 15 26 21 70 84 82 36 69 85 61 8 75 81 67 16 59 28 2 33 63 28 63 8 82 14

output:

11555

result:

ok 1 number(s): "11555"

Test #7:

score: 0
Accepted
time: 0ms
memory: 3964kb

input:

100
75 44 95 2 70 82 52 96 21 35 13 66 21 83 13 72 6 67 49 12 87 10000 27 22 78 1 66 12 38 86 52 43 43 55 31 12 13 78 24 84 10000 10000 23 57 71 83 29 10 10000 76 0 58 84 23 98 10000 48 97 63 39 57 28 87 81 69 14 10000 62 27 34 54 16 12 67 50 11 44 84 6 35 10000 61 85 5 83 69 10000 10000 80 10000 85...

output:

11406

result:

ok 1 number(s): "11406"

Test #8:

score: 0
Accepted
time: 0ms
memory: 3944kb

input:

100
5552 5681 3971 1928 2612 5691 9778 9766 570 1249 2076 7230 5966 2750 1185 8793 1073 942 4273 5431 8406 1362 1395 2780 6246 5887 7906 7422 2813 3918 8330 7481 1739 254 6048 9451 3251 6206 9480 8072 4879 6195 1356 3767 1514 5992 6316 9282 7428 4649 5512 1674 5410 2647 792 5154 9676 5783 7877 2847 ...

output:

163645

result:

ok 1 number(s): "163645"

Test #9:

score: 0
Accepted
time: 0ms
memory: 5996kb

input:

100
6431 6269 5816 4311 10000 5847 5415 1092 3837 851 10000 2775 1042 8795 964 6862 10000 815 4888 1850 10000 2289 4066 5519 8562 8058 4144 3559 78 2579 10000 9728 6651 7581 2537 10000 6240 8394 6402 7705 8821 8865 8726 5785 6298 9566 4454 8373 8912 8015 8902 10000 1406 5992 9726 8666 8301 7568 4794...

output:

159693

result:

ok 1 number(s): "159693"

Test #10:

score: 0
Accepted
time: 0ms
memory: 3964kb

input:

1000
4 1 3 7 8 8 9 7 4 4 4 6 3 5 9 6 3 8 7 4 9 1 9 4 9 0 8 5 6 0 6 8 1 3 7 7 4 3 8 1 5 6 0 8 7 0 2 6 2 9 4 2 1 7 9 0 5 2 6 5 8 3 2 5 5 6 5 3 5 2 9 6 1 6 3 2 8 1 1 7 5 9 3 5 8 4 3 2 8 9 6 4 2 5 3 8 9 8 4 8 5 7 7 2 5 5 1 0 4 6 2 5 3 5 4 4 1 3 2 6 2 7 5 2 9 0 9 3 3 9 0 2 8 1 3 0 0 7 7 4 9 5 7 4 2 4 7 9...

output:

11178

result:

ok 1 number(s): "11178"

Test #11:

score: 0
Accepted
time: 1ms
memory: 3976kb

input:

1000
1 5 4 5 3 5 0 0 3 6 1 7 3 3 5 6 6 7 0 7 4 7 6 2 8 5 9 9 6 2 8 9 2 0 7 4 1 1 9 0 7 0 2 3 6 0 5 8 4 1 1 2 4 2 9 1 2 7 1 8 1 2 6 2 8 9 1 2 7 9 2 5 1 1 0 2 6 4 6 8 3 7 8 8 8 7 6 0 6 6 6 7 6 7 0 9 0 0 8 8 9 9 2 1 4 2 8 4 5 7 6 1 1 1 3 7 0 2 8 0 0 6 2 7 4 6 6 2 7 4 5 5 6 5 5 7 7 6 7 0 4 3 9 0 5 1 7 5...

output:

11094

result:

ok 1 number(s): "11094"

Test #12:

score: 0
Accepted
time: 1ms
memory: 3968kb

input:

1000
97 46 53 30 57 66 80 50 64 38 66 17 73 52 84 54 21 12 64 51 8 76 97 7 86 0 40 87 87 78 24 32 80 75 27 86 0 16 39 16 83 82 54 98 26 75 30 54 57 87 33 39 48 44 66 54 54 70 31 11 21 3 37 36 17 8 67 87 92 35 67 43 60 23 44 55 21 23 18 86 63 51 53 76 37 48 74 48 77 57 56 44 62 77 33 37 64 58 34 52 5...

output:

15186

result:

ok 1 number(s): "15186"

Test #13:

score: 0
Accepted
time: 1ms
memory: 3900kb

input:

1000
9 7 27 96 56 75 39 92 94 75 62 89 40 23 95 34 22 97 83 76 41 33 32 64 27 26 22 74 19 39 18 93 82 31 53 49 95 78 10000 16 40 42 2 5 94 75 22 45 69 10000 76 44 69 35 96 16 58 63 97 7 13 2 97 76 86 12 94 78 4 34 14 9 96 86 0 79 38 48 37 67 5 26 15 14 31 89 62 65 28 33 98 76 54 53 54 95 28 33 52 47...

output:

16285

result:

ok 1 number(s): "16285"

Test #14:

score: 0
Accepted
time: 1ms
memory: 4028kb

input:

1000
3095 4342 5957 4532 6404 1973 5532 1387 4891 340 1281 6207 3547 6942 7715 8060 5382 8802 166 6757 7842 4547 4867 6750 9769 8248 7926 161 8634 6765 79 6298 502 9921 2274 8955 9203 7830 7863 1881 3517 3445 3674 3292 80 1447 5628 1091 8687 2444 3536 6510 576 1128 8047 8066 2126 3425 4533 1305 4742...

output:

469374

result:

ok 1 number(s): "469374"

Test #15:

score: 0
Accepted
time: 1ms
memory: 3968kb

input:

1000
1604 3406 9476 6176 6067 9094 4256 8153 9715 840 5505 8954 8548 3715 9995 2166 4734 154 1461 1105 8633 8869 1372 2788 2821 9774 1119 7741 8068 597 4532 1949 1323 5869 6306 1304 7605 5164 2805 8040 800 1215 254 1963 5661 1396 944 4784 6900 8013 1508 7022 1982 7268 5942 2974 569 3682 2181 6684 76...

output:

490053

result:

ok 1 number(s): "490053"

Test #16:

score: 0
Accepted
time: 5ms
memory: 5956kb

input:

100000
3 6 5 7 1 7 3 8 3 1 3 5 3 1 9 6 0 6 6 6 3 2 7 2 5 0 8 3 1 4 3 9 8 4 6 9 1 4 6 0 1 6 8 6 1 4 3 3 3 2 2 5 7 7 4 9 5 9 7 7 9 7 0 4 2 0 3 2 4 5 0 4 3 2 6 7 6 7 6 4 0 3 6 4 9 1 5 3 4 8 8 1 3 6 6 8 0 0 5 4 4 0 3 8 3 4 1 1 6 8 7 9 8 3 0 0 7 6 5 3 4 9 8 7 0 2 3 7 2 2 9 8 9 1 0 1 6 2 2 9 6 7 9 0 1 0 0...

output:

100569

result:

ok 1 number(s): "100569"

Test #17:

score: 0
Accepted
time: 32ms
memory: 5832kb

input:

100000
3 7 7 1 3 2 6 3 6 7 2 7 8 4 8 9 3 3 4 5 1 8 8 1 6 1 9 9 3 5 3 6 0 6 7 4 3 9 7 4 2 8 4 4 8 3 9 6 4 4 0 1 2 1 8 5 5 6 7 4 5 6 5 1 8 1 9 4 5 1 1 8 8 1 6 1 5 1 7 6 7 2 2 7 0 2 4 9 9 6 4 6 7 9 8 1 4 9 0 7 1 4 6 6 3 3 0 3 7 2 4 4 4 2 5 1 6 1 4 1 2 1 7 6 2 2 8 8 1 0 5 3 5 9 4 7 9 2 5 4 6 2 1 1 5 4 4...

output:

100385

result:

ok 1 number(s): "100385"

Test #18:

score: 0
Accepted
time: 6ms
memory: 5896kb

input:

100000
85 32 62 90 43 91 18 0 91 4 83 7 58 83 67 87 36 97 74 99 65 17 5 69 13 42 48 77 5 6 89 98 64 38 92 80 94 95 86 88 84 55 45 47 22 46 76 28 96 70 16 69 5 75 47 58 87 59 57 57 58 47 46 35 88 28 57 90 99 84 80 97 95 42 42 4 32 10 76 17 29 42 72 63 44 50 65 27 92 61 84 2 53 65 77 8 27 19 96 61 3 9...

output:

143805

result:

ok 1 number(s): "143805"

Test #19:

score: 0
Accepted
time: 42ms
memory: 5908kb

input:

100000
36 63 56 36 21 47 32 10 14 86 8 23 20 34 30 9 90 88 36 11 61 14 41 57 68 60 46 85 37 28 37 34 2 10 69 9 73 28 67 71 85 79 43 84 39 84 77 3 50 49 85 8 18 25 99 5 61 4 84 90 61 60 95 85 71 37 20 66 92 78 9 28 74 1 44 41 20 83 79 34 43 74 27 65 18 1 84 78 31 0 84 83 51 13 88 20 46 64 10 91 60 40...

output:

142557

result:

ok 1 number(s): "142557"

Test #20:

score: 0
Accepted
time: 11ms
memory: 5924kb

input:

100000
3226 3550 4859 8939 2551 6737 3107 7445 2062 2993 6445 3820 1892 4267 1879 7398 592 4414 2354 30 1598 2944 1924 6834 1933 7482 263 1766 6817 5623 3400 1759 4609 6969 7801 5305 3562 3284 1359 1218 7114 4065 2948 9516 3270 6973 9462 5183 4180 3607 4839 676 2482 5685 4715 6843 7869 4015 9821 575...

output:

5151413

result:

ok 1 number(s): "5151413"

Test #21:

score: 0
Accepted
time: 53ms
memory: 5916kb

input:

100000
4597 8732 7649 5067 565 9908 8697 2208 6636 3322 6918 2362 2782 9097 6104 1648 6162 2210 2944 3244 2533 9547 2452 2286 4373 7036 4572 6455 4327 321 8631 8334 146 9675 4903 638 8434 5791 3488 3126 5670 7189 7661 2328 6593 9210 8556 2826 9308 4814 7533 8280 5043 9943 8294 816 5860 7133 2306 744...

output:

5200777

result:

ok 1 number(s): "5200777"