QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#742042#5173. 染色fuqingran0 17ms4516kbC++141010b2024-11-13 15:42:092024-11-13 15:42:10

Judging History

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

  • [2024-11-13 15:42:10]
  • 评测
  • 测评结果:0
  • 用时:17ms
  • 内存:4516kb
  • [2024-11-13 15:42:09]
  • 提交

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

*/

詳細信息

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'