QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#742042 | #5173. 染色 | fuqingran | 0 | 17ms | 4516kb | C++14 | 1010b | 2024-11-13 15:42:09 | 2024-11-13 15:42:10 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+5;
const int inf=5e16L;
int n,q,a[N],f[N][2];
void work()
{
int l,r,ans=0;
cin>>l>>r;
if(l>r)swap(l,r);
f[l][0]=0,f[l][1]=inf;
for(int i=l+1;i<=r;i++)
{
int tmp=inf;
if(a[i-1]==a[i])tmp=min(tmp,f[i-1][0]);
else tmp=min(tmp,f[i-1][0]+1);
// cout<<"before: "<<tmp<<' '<<a[i]<<' '<<a[i-1]<<'\n';
if(a[i-2]==a[i]&&i-2>=l)tmp=min(tmp,f[i-1][1]);
else tmp=min(tmp,f[i-1][1]+1);
// cout<<"after: "<<tmp<<'\n';
f[i][0]=tmp;
f[i][1]=f[i-1][0]+1;
// cout<<"dp: "<<i<<' '<<f[i][0]<<' '<<f[i][1]<<'\n';
}
ans=min(f[r][0],f[r][1]);
// cout<<"??: "<<ans<<'\n';
ans+=r-l;
cout<<ans<<'\n';
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);cout.tie(NULL);
// freopen("color.in","r",stdin);
// freopen("color.out","w",stdout);
cin>>n>>q;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=q;i++)work();
return 0;
}
/*
5 4
2 2 3 1 3
1 5
2 4
5 2
3 3
*/
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 3800kb
input:
10000 100 84 85 52 2 78 53 20 21 23 76 37 44 18 5 37 8 81 65 46 58 69 1 69 37 53 46 37 35 35 89 1 77 35 6 46 59 89 46 25 55 50 38 61 67 44 23 29 24 46 4 42 15 34 77 20 34 83 79 12 50 69 26 38 14 9 66 80 72 22 26 9 68 35 38 19 84 92 30 83 62 100 71 81 60 7 37 64 50 33 60 86 75 45 78 32 53 3 48 87 60 ...
output:
3787 4725 6171 8652 750 7242 190 7559 510 1177 261 2321 13654 6463 471 7755 2229 10828 1849 2756 4956 303 6196 646 6878 6382 11784 2801 3266 8093 18365 528 5669 18419 9880 6353 5155 15052 690 478 16120 13083 9161 8085 11342 6823 6608 5194 9398 8808 2246 10637 2775 12949 5123 2213 9093 1969 6684 2926...
result:
wrong answer 1st words differ - expected: '3668', found: '3787'
Subtask #2:
score: 0
Time Limit Exceeded
Test #7:
score: 0
Time Limit Exceeded
input:
100000 100000 3 2 3 3 3 3 2 3 2 1 3 1 1 1 3 2 1 3 1 2 2 1 3 1 2 2 1 1 1 3 2 1 3 3 3 3 1 1 1 2 3 3 2 1 1 1 3 1 3 1 3 2 1 3 2 3 3 2 3 3 2 3 3 3 3 3 2 3 2 3 1 3 3 3 3 3 3 3 1 2 3 3 1 3 1 1 2 2 3 1 1 2 3 2 3 1 3 2 1 3 2 3 2 1 1 3 3 1 3 1 2 2 2 3 2 3 2 3 2 1 1 3 1 3 2 2 3 3 3 1 2 2 3 3 2 1 3 1 2 2 2 3 2 ...
output:
115472 135785 56012 6606 9385 79867 95825 29778 39704 113819 67974 7358 67339 43650 45536 50287 11311 109879 73151 10934 4820 88920 47801 77338 27840 11148 12500 60713 19006 56212 11864 8021 5634 39504 68639 59488 17289 71533 71765 54741 52895 558 18849 122292 4104 44170 63777 34674 10073 25505 3387...
result:
Subtask #3:
score: 0
Wrong Answer
Test #15:
score: 0
Wrong Answer
time: 17ms
memory: 3684kb
input:
5000 5000 256 63 197 36 75 66 33 72 27 75 66 248 29 166 209 252 141 95 84 226 147 249 116 94 192 256 199 273 182 166 116 274 27 211 154 144 283 23 53 110 215 11 164 284 161 221 251 96 43 47 18 115 12 51 156 61 116 209 93 98 47 165 174 106 83 67 184 75 12 290 183 197 112 240 67 56 215 148 104 5 141 2...
output:
1351 2755 1778 2666 4860 5103 3017 1355 899 5176 7980 4961 955 943 823 7427 7822 5441 3892 3300 4571 1608 2590 40 922 308 4447 3966 3891 5853 4710 1691 445 1445 3699 5366 577 122 2087 7772 9304 2092 3186 3759 2945 429 741 4093 183 3298 1473 1636 7274 3069 6081 8249 1575 3885 370 4570 3365 1780 836 2...
result:
wrong answer 1st words differ - expected: '1322', found: '1351'
Subtask #4:
score: 0
Wrong Answer
Test #23:
score: 0
Wrong Answer
time: 10ms
memory: 4516kb
input:
1000000 1000000 1105 3246 1880 3554 818 2331 2576 4140 149 4562 3498 3536 3400 4788 4363 4742 1216 4218 4032 1701 1489 4889 1761 3022 3145 4945 3067 4304 5016 4624 1612 13 1335 3613 1086 2210 386 3464 1156 3352 4341 5006 3465 3900 622 654 1826 2983 1250 4164 3335 4308 2995 1982 1347 4335 2535 5054 4...
output:
1393 4076 3765 4400 7117 7875 1364 2512 252 1160 1868 1948 1748 616 5857 3202 6949 5927 8391 1222 7989 3024 4146 2171 4086 6251 5235 442 7047 3995 20 3027 4233 1894 5819 284 140 6137 6495 1490 1720 4348 732 2828 3878 416 2886 635 2328 417 2859 5634 1791 3497 852 646 1005 1622 3281 5653 208 2230 5402...
result:
wrong answer 1st words differ - expected: '1263815', found: '1393'