12 2012 档案

摘要:邓姐推荐做这道题,果然是一道不错的题目,据说是插头dp,不过我不会哦,咋办呢,这种题只好暴力乱搞了一开始用3进制来存储状态 0代表横放 1代表竖着放朝上 2代表竖着放朝下 然后暴力搜了一下 复杂度3^22 果断超时了后来想了一下,其实上一行的每个格子状态都搜完了之后,只要不是朝下 那么就对下一行没有影响了 于是更改了一下状态存储方式0代表这个格子放的方式不会影响下一行 1代表会影响下一行容易证明 不冲突的两行 下一行有且只有一种合法的方式所以复杂度就从 3^22缩减到了2^22 并且二进制存储与位运算 速度飞快 就过了具体的就看代码咯View Code Source CodeProblem: 阅读全文
posted @ 2012-12-05 11:47 goagain 阅读(769) 评论(0) 推荐(0)
摘要:递归解法,把比标准数小的放左边, 比标准数大的放右边,然后就把问题缩减到更小的规模了,不过就我的渣渣代码来看,貌似还达不到o(2n)的下界,写完了才发现自己连快排都写不熟,长期用STL偷懒的副作用啊,不过其实我记得STL是有nth_element的函数的,不过会写总比不会强,哈哈template<typename T>void Kth(vector<T> & v,int k,int l,int r){ if(l>=r)return; T t = v[l]; int left = l ,right = r; T key = v [left]; while(l 阅读全文
posted @ 2012-12-03 12:01 goagain 阅读(226) 评论(0) 推荐(0)