摘要:
显示任务栏:void ShowTaskBar(){ HWND hWnd = ::FindWindow(L"HHTaskBar", NULL); if (NULL != hWnd) { ::ShowWindow(hWnd, SW_SHOW); }}隐藏任务栏void HideTaskBar(){ HWND hWnd = ::FindWindow(L"HHTaskBar", NULL); // 找到工具栏的句柄 if (NULL == hWnd) return; ::ShowWindow(hWnd, SW_HIDE); int screenx = Getsy 阅读全文
摘要:
工厂模式的目的是为了在想要创建的A类的子类B类, 想要用C类来创建, 但是只有C类的子类D类有。 咱们就可以通过工厂类来解决。 把C类当做factory类。factory 模式的两个最重要的功能1. 定义创建对象的接口, 封装了对象的创建;2. 是的具体化类的工作延迟到了子类中。factory模式, 通过factory类的子类来创建product类的子类。因为只有factory的子类才能知道自己要创建的是哪个product的子类。View Code // Factory.h: interface for the Factory class./////////////////////////// 阅读全文
摘要:
这题只是最大流的一个模板题目。题目要求怎样修改道路才会增加最大流。思路就是在残余的网络流里面在某一个零边增加一个单位的网络流。查看是否有到首都的道路。View Code #include<stdio.h>#include<string.h>#include<math.h>#define inf 0x7ffffff#define maxn 505int map[maxn][maxn], visit[maxn], e[maxn][maxn];int f[maxn][maxn] , pre[maxn], prev[maxn];int queue[maxn * 2] 阅读全文
摘要:
哇, 先感慨下, 无限长的代码。这题只是一个模板的伸展树。 但是要想理解好这个伸展树, 还得要努力写的。这里设了一个空指针null 当然咯, 这不是真正的空指针。初始化的时候, 添加连个队列的头和队列的尾。建伸展树的时候, 用堆建树。下面的几个函数都用到了线段树的思想。select 函数, 是kth移动到point 的下方。要注意的一个细节就是count = p->ch[0]->size; 这个是指向p 的左孩子.在区间加某个数值。应该说是 把该区间移到某个节点的树叶下。reverse 函数, 这个函数, 只要把要旋转的区间进行旋转就可以了。 当然咯, 也是把要旋转的区间置于某个节 阅读全文
摘要:
这题的意思是,给你一些长方形, 要你求出他们覆盖的总面积。 给你的点只有200个, 所以, 一般的运行速度都是足够的。 不要被下面的数字所影响。我这题是用到了 映射的方法, 其实更简单的应该是二分查找就够了。通过对y轴进行建线段树。 当然要先进行排序,和去重。 然后对X 轴进行排序。 每次当前的X轴点和前一个X轴点相减再乘以当前Y轴的所有区间的和。对了, 要用C++ 提交, 我用G++ 提交无限wa。 不知道为什么。View Code #include<stdio.h>#include<algorithm>#include<string.h>#include 阅读全文
摘要:
这题目的解决方案关键是怎样制造连续的区域来判断是否符合要求。 你查找最大的区域时, 可以分为三个部分, 一个是左子树的最大连续区域, 一个是右子树最大区域, 一个 是左子树从右向左最大的连续区域加上右子树从左向右的最大区域View Code #include<stdio.h>#include<string.h>#include<math.h>#define maxn 200008struct node{ int lval, rval, val; int left, right; int count; void init(int x) { lval =... 阅读全文
摘要:
这题用的是dp, 他要求的是计算在这一排书中, 每个抄写员都要抄写这些书中得一部分连续的书。这题的状态转移时:dist[i][j] = min(max(dist[i - 1][t], p[k](j>=k >=1+t)) ( i<= t < j); 其中i是第几个抄写员,j是抄写员从第t本书抄到第j本书。dist[i][j], 是前i个抄写员共抄J本书,所用的最多时间。所以最少本书,应该是dist[n][m];View Code #include<stdio.h>#include<string.h>#define maxn 502int dist[ 阅读全文
摘要:
这题时间太卡了,我不知为什么竟然跑了9000+ms 。这题刚看时很容易想到二分图,但是仔细一看,他已经给你完备匹配了,所以思路应该往别的方面去想。他要解决的是最多可能与哪几个人中的一个结婚。有的虽然你有意向,但是她已经是别人的了,就不能纳入你想结婚的人选行列。他给了你完备匹配,也就是说,不管怎样这个人肯定是你的喜欢人选。如果把这个姑娘和你连边,那么就在你和这个姑娘之间存在回路(是联通的)了。既然存在回路可以是想结婚中的人选。那么推广到整个图,也是一样的道理。所以这题要你解决的是联通性问题。View Code 1 #include"stdio.h" 2 #include&qu 阅读全文
摘要:
这题考察的是最大独立集问题, 算是裸的二分匹配, 只要在计算上添加一个n - count/2 就可以直接得出结果了。不管是男的还是女的都一样,因为你男的算一边,女的再算一遍,这样算两遍, 不管你这个学号是男的还是女的,一点影响都没有。View Code #include"stdio.h"#include"string.h"#define maxn 505int e[maxn][maxn], n, m, dist[maxn], visit[maxn];void Init(){ int i, j, u, v, num; char chr; memset(e, 阅读全文
摘要:
图论拓扑排序有向无环图与动态规划的关系二分图匹配问题一般图问题与二分图问题的转换思路最大匹配有向图的最小路径覆盖0/1矩阵的最小覆盖完备匹配最优匹配稳定婚姻网络流问题网络流模型的简单特征和与线性规划的关系最大流最小割定理最大流问题有上下界的最大流问题循环流最小费用最大流/最大费用最大流弦图的性质和判定组合数学解决组合数学问题时常用的思想逼近递推/动态规划概率问题Polya定理计算几何/解析几何计算几何的核心:叉积/面积解析几何的主力:复数基本形点直线,线段多边形凸多边形/凸包凸包算法的引进,卷包裹法Graham扫描法水平序的引进,共线凸包的补丁完美凸包算法相关判定两直线相交两线段相交点在任意多 阅读全文