div1 :
A : 找最长的子序列,只包含两种数且每两个相邻的数都不相同,dp[i][j]代表以第i个数结尾上一个数是第j个数的最长的序列
http://codeforces.com/contest/255/submission/2787851
B: 问你一个点经过几次扩散式的染色才能够染不小于C个方格,很明显的二分答案判可行,不过在判断可行的时候还真是有点小纠结,想仔细了就ok
http://codeforces.com/contest/255/submission/2791831
D:DP : http://blog.youkuaiyun.com/haha593572013/article/details/8465510
E:题意略 用线段树自底向上递推上来,算是优化DP吧 每个节点有记录一个a[i][j]表示区间左端点为i右端点为j时的方案总数,pushup的时候注意更新,小心越界