链接:https://icpcarchive.ecs.baylor.edu/index.php? option=com_onlinejudge&Itemid=8&page=show_problem&problem=4675 题目大意: 在一个平面上有 n (1<=n<=50) 个矩形.给你左上角和右下角的坐标(0<=x<=10^6, 0<=y<=10^6).问这些矩形将该平面划分为多少块. 解题思路: 因为n非常小,能够对整个图进行压缩.仅仅要不…
题意:给你n(n<=50)个矩形(左上角坐标和右下角坐标),问这些矩形总共将平面分成多少个部分.坐标值可能有1e9. 分析:看到n和坐标的范围,容易想到离散化,当时就没想到离散化以后怎么判断区域个数.后来看别人代码才知道,可以将边界上的点vis赋为1,那么枚举所有哈希后的平面上的点,遇到一个vis=0的点就从这点一直搜过去,搜到边界自动会停止了,因为边界vis=1.所以每次看到一个vis=0的点就ans++,就可以了.真是太弱.. 代码: #include <iostream> #inc…
链接:http://vjudge.net/problem/viewProblem.action?id=49408 题意:在平面内给出若干个矩形,求出它们能将整个平面分成多少份. 思路:刚開始一眼看到认为是几何题,可是发现最多仅仅有50个矩形后,灵光一闪认为直接离散化再暴力就能够了.把全部矩形的x,y坐标分别离散化,而且为了防止出现离散的太近导致矩形之前没有空隙的情况,将全部点离散化的坐标记作偶数坐标.然后DFS找到全部矩形之间的空隙. 代码: #include<iostream> #inclu…
题目链接:option=com_onlinejudge&Itemid=8&page=show_problem&problem=4675">点击打开链接 gg..== #include <cstdio> #include <cstring> #include<iostream> #include <queue> #include <set> #include <map> #include <…
怪我比赛的时候想法太过于杂乱了. 注重于区域的属性了.甚至还想用状态压缩或者是hash来描述分块的区域. 其实我们的可以宏观的角度去审视这个问题.就是求分区的问题.那么我们完全可以标记边框的值为1.即不可行走. 那么我们扫描整片区域.统计一个区域 .就用DFS把这整片区域给覆盖.然后继续扫描下去. 离散化在这里使用. 注意点:在于这是一个数区间块数的问题.假如2者数据没有相差一.也会把一块区域给覆盖掉.这是一个考虑会不会影响离散化后的相邻问题的一个问题. 比赛的时候我当时也没注意.也许以后离散化…
http://acm.hdu.edu.cn/showproblem.php?pid=5877 题意: 给出一棵树,每个顶点都有权值,现在要你找出满足要求的点对(u,v)数,u是v的祖先并且a[u]*a[v]<=k. 思路: 转化一下,a[v]<=k/a[u],k/a[u]的最大值也就是k/a[v],也就是寻找<=k/a[v]的个数,到这儿,是不是很像树状数组? 我们只需要从根开始dfs,插入到树状数组中,并且查询即可.注意这道题目需要离散化一下. #include <iostrea…
这两道题都是用简单dfs解的,主要是熟悉回溯过程就能做,据说用bfs也能做 道路修建(HYSBZ - 2435) 在 W 星球上有n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿意修建恰好n – 1条双向道路. 每条道路的修建都要付出一定的费用, 这个费用等于道路长度乘以道路两端的国家个数之差的绝对值.例如,在下图中,虚线所示道路两端分别有 2 个.4个国家,如果该道路长度为 1,则费用为1×|2 – 4|=2.图中圆…
将内部的O点变成X input X X X XX O O X X X O XX O X X output X X X XX X X XX X X XX O X X DFS的基本框架是 void dfs(int now,int d){ if(终止条件) { 做相应的操作; return; } for(遍历所有now点的相邻点next){ if(!visit[next]) { 访问每个没有访问过的点; 做相应的操作; dfs(next, d + ); } } } DFS图所有边上的点,将边上的O以及…
题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4896 We want to have a great SWERC at Porto this year and we approached this challenge in several ways.We even framed it as a word add…
Kernel Knights 题目链接: http://acm.hust.edu.cn/vjudge/contest/127407#problem/K Description Jousting is a medieval contest that involves people on horseback trying to strike each other with wooden lances while riding at high speed. A total of 2n knights…