上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 38 下一页
摘要: 分析可知,最优的x应该在区间中的数排列后最中间的地方选择。由于区间的数个数有奇偶之分,于是当奇数个时,就是中位数了。偶数个时,就是排列后中间两数区间的任意一个。可以应用划分树求得前半部分,树状数组统计。#include #include #include #include #define LL __... 阅读全文
posted @ 2015-04-09 20:46 chenjunjie1994 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 划分树。具体划分树算法可以参考下面总结:划分树算法总结但上面的算法代码有点错误,可以看我的代码下面指出#include #include #include #include using namespace std;const int N=100050;int sorted[N];struct nod... 阅读全文
posted @ 2015-04-06 21:31 chenjunjie1994 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 威左夫博弈。使用黄金分割公式。k=[k(1+√5)/2],bk=ak+k(k=0,1,2,…,n方括号表示取整函数)奇妙的是其中出现了黄金分割数(1+√5)/2=1。618…,因此,由ak,bk组成的矩形近似为黄金矩形,由于2/(1+√5)=(√5-1)/2,可以先求出j=[a(√5-1)/2],若... 阅读全文
posted @ 2015-04-06 20:21 chenjunjie1994 阅读(162) 评论(0) 推荐(0) 编辑
摘要: DFS+博弈。假设存在两数(x,y),且x=2,只能转移向两种状态(x+y,y),或者(x,y)。而对于(x+y,y)只能向(x,y)转移,那么,可知,无论(x,y)为败点还是胜点,(x+ky,y)只能为胜点。于是,DFS搜索一下,就可以知道了。#include #include #include ... 阅读全文
posted @ 2015-04-06 19:55 chenjunjie1994 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 博弈题。初始时p=1,可以从2-9中任选一个数与之相乘,给定一个数n,当最先令p>=n的为获胜。可以知道,当ceil(n/9)时为必胜状态,那么,必败状态只能转往必胜状态,所以,(ceil(n/9)/2)的只能是必败状态。倒推回去,就能知道先手处在必胜还是必败状态了。#include #includ... 阅读全文
posted @ 2015-04-06 19:45 chenjunjie1994 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 也算难题,难在如何处理有些点可以无限次经过 问题。 这道题,其实很容易想到二分+TSP的状态压缩,但在处理上述问题时,确实没想到。题解是处理每一个Y或G或F点到其他YGF点的距离,BFS,这样就出现一个点只访问一次,而且即便在原图上重复经过某点,在重建的图也不会体现出来了。绝!#include #i... 阅读全文
posted @ 2015-04-02 22:13 chenjunjie1994 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 题目中说明每个城市至少要走一次,至多走2次,因此要用到三进制压缩,然后就是状态转移方程了。这道题就处理三进制的地方麻烦一点。同时注意,在选择最小长度时,一定是要每一个点都经过至少一次的,即是状态的每一个三进制位均 >=1.#include #include #include #include usi... 阅读全文
posted @ 2015-03-31 22:00 chenjunjie1994 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 设dp状态为dp[i][j]为当前访问过的结点状态为i且当前停留点为j时的最短路径。用二进制存存储访问过的状态,访问过为1,否则为0。#include #include #include #include using namespace std;const int inf=(1dp[tmp.i][t... 阅读全文
posted @ 2015-03-31 20:29 chenjunjie1994 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 经典的状态压缩DP题了。做了前面两题,就不感觉难了。#include #include #include #include using namespace std;int stack[1>1,r2=st>>2; if(l1&i){flag=false; break;} if(l2&i){... 阅读全文
posted @ 2015-03-31 19:55 chenjunjie1994 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 简单的状态压缩。#include #include #include #include using namespace std;const int Status=1>=1;// coutm-1){ // coutinfer) continue; if((stack[p]&G[i+1])... 阅读全文
posted @ 2015-03-31 11:10 chenjunjie1994 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 好题。果然好题,经典了。列一个计划,清明前做好状压DP。之后就刷剩下的MULTI。#include #include #include #include using namespace std;const int Status=(1>2))||(i&(j>>2))) crashpo[i][j]=tr... 阅读全文
posted @ 2015-03-30 21:58 chenjunjie1994 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 简单题,先从右边消起,注意结束时a[1]==0才能是yes#include #include #include #include using namespace std;const int N=1000050;int a[N],n;int main(){ int T; scanf("%d",&T);... 阅读全文
posted @ 2015-03-30 10:20 chenjunjie1994 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 实现简单,但不得不说是一道好题。当员工数少于医生数时,直接输出K,因为此时N个员工同时检查,必定是最少的时间了。当员工数大于医生数时,可以把员工的项目看成一段一段的,每个医生对其进行切割,总能得到时间不冲突的情情况。#include #include using namespace std;int ... 阅读全文
posted @ 2015-03-30 09:47 chenjunjie1994 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 一道好题。想了好久没想出来,只是觉得总要二分独立处理矩形。感觉自己在把问题转化为数学公式以及分解问题的方面的能力很不足。http://blog.csdn.net/wh2124335/article/details/8739097解题思路:考虑每次询问t,对于单一矩形的面积的计算方法~对于询问t。计算... 阅读全文
posted @ 2015-03-30 09:00 chenjunjie1994 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 很简单了,当m>=3&&m-1&&m.compareTo(n.add(p))<1){ System.out.println("YES"); } else System.out.println("NO"); } }} 阅读全文
posted @ 2015-03-29 21:57 chenjunjie1994 阅读(143) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 38 下一页