题目大意: 给出n个数a[1..n],n<=262144,a[i]<=40,相邻且相同的数可以合并成一个并将值加1,问能获得的最大数是多少 用一个双向链表维护原数列,每个节点记录此节点对应的数值和数的个数,合并相邻且对应数值相同的节点 每次选一个数值最小的点处理,此时两侧的数都更大 若这个点只有一个数则直接删去并断开两侧,此时两侧的数不可能再互相合并 若这个点有偶数个数则数值+1,个数/2,检测能否和两侧合并 若这个点有奇数个数,两侧的数也不可能再互相合并了,因此将这个点分裂成两个互不相连的点…