10 2007 档案
PKU2036
摘要:对线段排序 对于K不存在的线段的放在一起,对x1进行排序 对于x1相同的对于y1排序对于K存在的直线 对b进行排序 b相同的对于x1进行排序排序复杂度Nlogn 在对于在一条直线上的线段O(n)的计算线段数目总时间复杂度NLOGN这应该是这题最基本的算法 #include #include #include #include struct line{ double x1, y1, x2, ...
阅读全文
ACM/ICPC要求的知识点(转)
摘要:ACM/ICPC要求的知识点 时间复杂度(渐近时间复杂度的严格定义,NP问题,时间复杂度的分析方法,主定理)排序算法(平方排序算法的应用,Shell排序,快速排序,归并排序,时间复杂度下界,三种线性时间排序,外部排序)数论(整除,集合论,关系,素数,进位制,辗转相除,扩展的辗转相除,同余运算,解线性同余方程,中国剩余定理)指针(链表,搜索判重,邻接表,开散列,二叉树的表示,多叉树的表示)按...
阅读全文
PKU1151线段树解法
摘要:模仿别人的代码写的这题不用线段树也可以过 #include #include #include struct line{ double x, y1, y2; int in;};struct node{ node * pl, * pr; int iL, iR; double left, right; double y_len; int in;}mem[404...
阅读全文
PKU2074
摘要:#include #include struct line{ double x1, x2, y; bool ex;};line l1, l;int n;double len;int lineCnt;line l2[30];void CNT(){ int i; for(i = 0; i l2[i].x1) l2[i].x1=l1.x2; i...
阅读全文
PKU3264线段树解法
摘要:#include #include struct node { node * pl, * pr; int left, right; int mxa, min; }mem[100000]; int memCount; int n, q; int mxa, min; node * newNode() { node * pt=&mem[memCount++]; ...
阅读全文
PKU2029
摘要:#include #include int n, W, H, w, h; int m[101][101]; int cnt; void DP() { int i, j; int c=0; for(i=w;i<=W;i++) for(j=h;j<=H;j++) { if(j==h) { ...
阅读全文
PKU1940
摘要:#include #include int n; __int64 x1, y1; __int64 x[1024], y[1024]; __int64 sum_x, sum_y; int main() { while(scanf("%d", &n)==1) { printf("%d", n); int i; sum_x = sum...
阅读全文
线段树521
摘要:最近线段树狂写中 争取以后啥都不看就能写出来 #include #include struct node { node * pl, * pr; int left, right; int color; int colCount; int cl, cr; }mem[200020]; int memCount; int Col[31]; int ColCnt;...
阅读全文
今天农夫布置的DP题
摘要:水了三道水DP题 最大M字段和的O(n)算法想了恩久没想出来..... hit1760 #include #include int main() { int n; while(scanf("%d", &n)==1 && n) { int hold=0, mxa=0; int i, Num; for(i=0; ihold+N...
阅读全文
今天的比赛
摘要:XH的OJ烂的我不说大家也都明白 至于今天的题目 有几题是废的 交了1000+人也无一人过 不知道数据是啥样的 比较郁闷的是那道几何题 可能很多人在求切线与X轴交线段的长度时采用了三角函数方法 感觉用三角比较省事 而且写几何题的人一般不喜欢去用K去表示直线方程 免得K出现问题(即使这题K是一定存在的) 用MATH.H里的三角函数这就导致了大数据结果(在角度接近90时 cos改变是及其微小的 )这时...
阅读全文
PKU3277离散化+线段树
摘要:对于x坐标先进行一个排序 用一个数组记录它们是第几大 这样就把非常大的数压缩得很小 线段树中叶子节点记录的就是相邻x的区间 对于每个节点记录最高的h hcount代表这个区间有多少个高度 最后用每个区间宽度×h 在树中即可计算area #include #include #include #include struct node { node * pl, * pr; int iL,...
阅读全文
NUAA上次热身赛的题目
摘要:自己用线段树写了一遍 还需... #include #include #include struct node { int left, right; node * pl, * pr; int height; int hCount; int Lheight, Rheight; }line[80002]; int n; int lineCount; ...
阅读全文
写啥
摘要:由于线段树的重要性,不学好不行,今晚把《线段树在程序设计中的应用.pdf》又看了一遍,讲的都是基础,自己写起来还是要看着模板写,还是很生...
阅读全文
2005NOIP 采药简单DP
摘要:#include #include int t, n; int time[101], v[101]; int f[101][1001]; void DP() { int i, j; for(i=n-1;i>=0;i--) for(j=0;j=time[i])f[i][j] = f[i+1][j] > f[i+1][j-time[i]]+v[i] ? f[i+1...
阅读全文
PKU2486所谓树型DP
摘要:讲一下我想的算法吧... 刚开始就是搜 加了几个剪枝、记忆搜索,还是超时最后想想用类似上次客户端-服务器的那个树型DP/* f[i][j][0]保存对于节点i向其子树走j步(可能有点重复)摘到的最多苹果数f[i][j][1]保存对于节点i向其子树走j步 并且返回到i节点 摘到的最多苹果数 对于叶节点 f[i][0][0/1]=apNum[i];对于其它节点f[i][j][0]=max{j-2*p-...
阅读全文
今天JLU的比赛
摘要:很不爽 开始一个多小时了 还都没思路 我先看的D 一道谁看了都知道MS是二分图的题目 但是由于最后那个条件 没有思路 最后想交给NIC用最大流 点太多不可能 接着又看了F这题 开始没有思路 后来想DP应该可以实现 但是课程时间有2^(5*500)种情况 无法保存下来 这题一直到比赛结束也没有队伍AC 然后又看了过得最多的H H这道积分题 怎么想都很复杂 觉得合力仅延切线方向 船是无法按圆弧行驶...
阅读全文
PKU3316
摘要:这题陷阱很多....很多种不合法的贪食蛇...要仔细排除每种情况.. #include #include struct P { int i, j; }; int n, m; bool graph[201][201]; bool v[201][201]; int cnt; bool is; P head, tail; bool ishead(int i, int j) { in...
阅读全文
PKU3321
摘要:开始写的是用线段树的模型 由于结构的差异 线段较烦 节点中只能记录父节点 然后在维护节点中COUNT值的时候 需要不断地从叶节点开始从下到上对count进行更新 正好和线段树相反 结果超时了 这是因为 如果数据中的树是一棵很高的树的话 维护COUNT值会耗时很大 下面是上面思想的超时代码 (用邻接表也许更省时一点,不过想想如果用精简的树状数组会更美观一些) #include #include s...
阅读全文
JLU1205
摘要:垃圾几何题 JLU的题目不是叙述奇怪就是数据奇怪 WA估计是精度问题 #include #include #include struct Point { float x, y; }; float t; float aB; float moveA; Point center; float y; float distan(Point p1, Point p2) { float d...
阅读全文
pku3338
摘要:坐标系转换一下 求联通子图个数 内存时间都比较小 #include #include int w, d, n, cnt; bool e[21][21][2];//0 right || 1 up bool v[21][21]; int x1, y1, x2, y2; bool link(int i1, int j1, int i2, int j2) { if(i2==i1-1) ...
阅读全文
今天的一个哈密顿图 写了一个恶心的死搜
摘要:#include #include int m, n; bool link[22][22]; bool v[22][22]; bool ll; bool lll; int bi,bj,ei,ej; int c1; void dfs(int i,int j) { v[i][j]=1; if(i-1>=0 && v[i-1][j]==0 && link[i...
阅读全文
PKU3331
摘要:#include #include struct Num { int dig; char n[1024]; }; int n, m, cnt; Num num[367]; Num mul(Num r, int x) { Num numx=r; int a, b, i; int c=0; for(i=0;i=10) { ...
阅读全文
PKU3327
摘要:WA了N次... #include #include struct Rect { int w, d; }; int c, w, d, cnt, p, s; Rect rect[110]; int area[110]; void cut() { int hw=rect[p].w, hd=rect[p].d ; s%=(2*(hw+hd)); rect[cnt]...
阅读全文
PKU2411
摘要:#include #include int m, n; __int64 f[12][2048]; __int64 g[12][12]; void DFS(int i, int j, int j2, int m2) { if(m2 == m) f[i+1][j2]+=f[i][j]; else if((j2&(1<<m2))==0) { ...
阅读全文
之前一道求逆序的线段树模板
摘要:struct node { int l,r; node * pl, * pr; int count; }mem[200]; int mem_pos; int anti, n, ans[200], num[200]; node * root; node * new_node() { node * pt = &mem[mem_pos ++]; memset(p...
阅读全文
NUSS1017
摘要:#include #include int n, i, j, k, mxa; bool f[2001][2001]; int r[2001][2001]; int uu[2001][2001]; int main() { while(scanf("%d",&n)==1) { mxa=0; for(i=0;i=0;j--) ...
阅读全文
|
|
|