思路题还是不太会做哈。感觉数据不大,一开始dfs做但是发现不是最优解,一想确实是这么一回事,然后转bfs,但是测第三组数据的时候就能看出来超时了。
其实这题仔细想想,只有两种情况最小值+2,一是大、中值相等时,如果最小值+2可以达到全部相等,或者比另两个大1然后另两个各+1;二是大值比小值大超过1,最后会达到一所说的局面。
1 #include2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #define IO ios::sync_with_stdio(false);cin.tie(0);10 const int MOD=1e9+7;11 typedef long long ll;12 using namespace std;13 int a[3], cnt=0;14 int main()15 {16 for(int i = 0; i < 3; i++){17 cin >> a[i];18 }19 sort(a, a+3);20 while(a[0] != a[2]){21 cnt++;22 if(a[1] == a[2] || a[2]-a[0]>1)23 a[0] += 2;24 else a[0]++, a[1]++; 25 sort(a, a+3);26 }27 cout << cnt << endl;28 return 0;29 }