CF1600 E. Array Game 博弈论 双指针
思路:首先预处理出左右两端升序列的长度。考虑拿了i位置上的数后,当前数列左端和右端的数大小情况,如果两端的数都小于等于a[i]那么当前状态为毕败状态,如果只有一端的数大于a[i]a[i]a[i]跟据这一端升序列的长度,可以直接判断当前状态为比胜还是必败状态。如果两端的数都大于a[i]a[i]a[i],如果取较大的数,那么下次取数开始只能一直取那一端的数,如果取较小的数,重复以上过程可以O(n)O(n)O(n)判断所有状态。#include <bits/stdc++.h>using names
原创
2022-01-07 03:52:45 ·
192 阅读 ·
0 评论