摘要:
A link 由于它是由递减变成递增的,所以一定是中间一段连续的相同数不变,前面变,后面变,因为对于一个数来说原来这些数前面的数都大于等于它,而现在都要小于等于它,而原来后面的数都小于等于它,而现在都大于等于它了,那么它左右等于它的就可以不变,而不等于它的就一定要变。 那么一定是找个数最多的数不变, 阅读全文
摘要:
C link 我们找到第\(k-1\)个段的结尾和第\(k\)个段的开头和结尾,当输出到第\(k-1\)个段的结尾时,输出第\(k\)个段,也就是第\(k\)个段的开头到结尾个\(1\),当输出到第\(k\)个段的开头时,直接跳到第\(k\)个段的结尾。 那么怎么找第\(k-1\)个段的结尾和第\( 阅读全文
摘要:
C link 由于只能往后放,显而易见,如果可以达到要求,那么一定只有一种方式。所以重心就在判断是否可行上了。 首先,如果总数量不等于\(n\)肯定不行。 其次,如果第一堆不在\(1\)肯定不行。 最后,如果到了某个点的时候石头总和不够\(1\)到这个点的数量一定是不行的。 那么在统计答案的时候,我 阅读全文
摘要:
C link 存一下那些点不能占,用总数减去即可,注意存的时候可以用一个\(map\),存过的就不要再存了。 神奇的代码 #include<bits/stdc++.h> #define int long long using namespace std; int n,m; int ans; int 阅读全文
摘要:
A link 如果想要\(x_1+y_2=x_2+y_1\),就是\(x_1-x_2=y_1-y_2\)即可,那么我们可以存一下每一个\(i\)的\(x\)与\(y\)的差,每到一个\(i\)就看一下前面有几个的差和它相等,这一个就可以和多少个组上对。 点击查看代码 #include<bits/st 阅读全文