P2911 [USACO08OCT]Bovine Bones G
将三个骰子由小到大排序,以(3,4,6)为例
模拟一下循环过程
第(2、3)个骰子再循环内测,先模拟出来
其实最后的结果是从(1,2,3,…,s_2-1,s_2,s_2,…,s_2,s_2,s_2-1,…,3,2,1)
而后再引入第(1)个骰子,也就是最外层循环
设(len=s_3-s_2+1)
观察上图可以,若(s_1≤len) 那么则会有(s_1)个(s_2)重合的情况,只要找到最靠左的位置(即为(2+s_1+s_2-1)
若是(s_1>len),如第一个骰子数字若为(4)
那么因为数列左边递增,右边递减,要尽量让无法满足取到最大值部分取得居中,找到第一行最后一个(s_2)的位置,然后加上多余部分((s_1-len))的一半
结果为(2+s_2+len-1+(s_1-len)/2)