随笔分类 -  POJ

摘要:题意: 有一个连通器,由两个漏斗组成(关于漏斗的描述见描述)。 现向漏斗中注入一定量的水,问最终水的绝对位置(即y轴坐标)思路: 总体来说分为3种情况。 1.两个漏斗可能同时装有水。 2.只可能a漏斗有水。 3.只可能b漏斗有水。 于是可以二分枚举y的坐标。 关键在于对于某个y坐标来... 阅读全文
posted @ 2014-05-31 19:04 xxx0624 阅读(447) 评论(0) 推荐(0) 编辑
摘要:题意:给定一个N*N的矩阵, 然后在这个矩阵的每个格子在任意时间会出现一个鼹鼠,这个出现 出现鼹鼠的时间是输出信息所确定的. 现在你手里有一把锤子能够去锤这些鼹鼠. 你能 够移动锤子,移动的两点之间的距离不能超过d,且中心在这条路径上的鼹鼠到都要受到 打击. 每个鼹鼠出现的时间值维持一秒钟. 现在问在一次游戏中最多打到多少鼹鼠 1 /* 2 dp 3 题意:给定一个N*N的矩阵, 然后在这个矩阵的每个格子在任意时间会出现一个鼹鼠,这个出现 4 出现鼹鼠的时间是输出信息所确定的. 现在你手里有一把锤子能够去锤这些鼹鼠. 你能 5 够移动锤子,移动的两点之间的距离不... 阅读全文
posted @ 2013-10-06 14:48 xxx0624 阅读(391) 评论(0) 推荐(0) 编辑
摘要:简单的字符串处理题。要注意细节!附数据两组:ABCCabcaeAAAabcAAAAabcAaBaCa 1 /* 2 3 */ 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 #include13 #include14 using namespace std;15 typedef long long int64;16 //typedef __int64 int64;17 typedef pair PII;18 #define MP(a,b) make_pair((. 阅读全文
posted @ 2013-09-08 19:21 xxx0624 阅读(181) 评论(0) 推荐(0) 编辑
摘要:Dinic+maxflow题意:找这样一种边的个数,就是增加该边的容量,可以使得最大流变大思路:求maxflow,再枚举流量为0的边,增加容量,看是否能找到增广路径。 1 /* 2 Dinic+maxflow 3 题意:找这样一种边的个数,就是增加该边的容量,可以使得最大流变大 4 思路:求maxflow,再枚举流量为0的边,增加容量,看是否能找到增广路径。 5 */ 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 1... 阅读全文
posted @ 2013-09-07 15:17 xxx0624 阅读(351) 评论(0) 推荐(0) 编辑
摘要:模拟一遍即可。注意一些特殊情况,见代码。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 const int maxn = 10005; 9 10 struct Ploy{ 11 int cnt;//项的数目 12 int coe[ maxn ];//各项系数 13 int exp[ maxn ];//各项指数 14 }a; 15 struct Ploy2{ 16 int coe1,coe2; 17 int exp1,... 阅读全文
posted @ 2013-08-24 20:23 xxx0624 阅读(299) 评论(0) 推荐(0) 编辑
摘要:题意:给定的这些点是否有一个对称中心。PS:我写得有点啰嗦。。就是把小的x和大的x进行匹配。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const double eps = 1e-8; 7 const int maxn = 10005; 8 9 struct Point{ 10 double x,y; 11 }; 12 Point pnt1[ maxn ],pnt2[ maxn ]; 13 Point cc; 14 15 int cmp1( Point a,Point b ){ 16 ... 阅读全文
posted @ 2013-08-23 23:00 xxx0624 阅读(188) 评论(0) 推荐(0) 编辑
摘要:题意简单。询问n个人的宗教关系。 1 #include 2 3 const int maxn = 50005; 4 5 int fa[ maxn ]; 6 int vis[ maxn ]; 7 8 void init( int n ){ 9 for( int i=1;i<=n;i++ )10 {fa[i] = i;vis[i] = 0;}11 }12 int find( int x ){13 if( x==fa[x] )14 return x;15 return fa[x] = find( fa[x] );16 }17 void u... 阅读全文
posted @ 2013-08-23 21:54 xxx0624 阅读(224) 评论(0) 推荐(0) 编辑
摘要:1 /* 2 疾速优化+hash存边 3 题意:给定一个包含N(1 ≤ N ≤ 10,000)个顶点的无向完全图,图中的顶点从1到N依次标号。从这个图中去掉M(0 ≤ M ≤ 1,000,000)条边,求最后与顶点1联通的顶点的数目 4 思路(BFS):从顶点1开始不断扩展,广度优先搜索所有的与当前扩展点联通的顶点。开始每次都要判断所有的顶点是否与cur相连, 5 若相连则push,反之跳过。 6 */ 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 ... 阅读全文
posted @ 2013-08-22 17:06 xxx0624 阅读(335) 评论(0) 推荐(0) 编辑
摘要:1 /* 2 线段树+扫描线+离散化 3 求多个矩形的面积 4 */ 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 using namespace std; 15 const int maxn = 105; 16 const int maxm = 210; 17 struct SegTree{ 18 int l,r; 19 int cover; 20 double L_val,R_val... 阅读全文
posted @ 2013-08-22 15:45 xxx0624 阅读(291) 评论(0) 推荐(0) 编辑
摘要:见代码。 1 /* 2 线段树+Lazy 3 题意:有一面墙,被等分为1QW份,一份的宽度为一个单位宽度。 4 现在往墙上贴N张海报,每张海报的宽度是任意的,但是必定是单位宽度的整数倍,且 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 using namespace std; 20 typedef long long int64; 21 //typedef __int64 int64; 22 typedef pa... 阅读全文
posted @ 2013-08-22 15:44 xxx0624 阅读(415) 评论(0) 推荐(0) 编辑
摘要:题意:给定一个01矩阵。T个询问,每次询问大矩阵中是否存在这个特定的小矩阵。 1 /* 2 64位的位运算!!! 3 题意: 4 给定一个01矩阵。T个询问,每次询问大矩阵中是否存在这个特定的小矩阵。 5 (64位记录状态!!!) 6 */ 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 using namespace std; 18 typedef long long int64; 1... 阅读全文
posted @ 2013-08-21 15:32 xxx0624 阅读(353) 评论(0) 推荐(0) 编辑
摘要:简单的字典树 1 /* 2 字典树 3 构造字典树。注意初始化! 4 */ 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 using namespace std; 16 typedef long long int64; 17 //typedef __int64 int64; 18 typedef pair PII; 19 #define MP(a,b) make_pair((a),(b))... 阅读全文
posted @ 2013-08-19 19:13 xxx0624 阅读(165) 评论(0) 推荐(0) 编辑
摘要:模拟题 1 /* 2 模拟 3 注意:相同一边的车有先后顺序! 4 */ 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 #include13 #include14 #include15 using namespace std;16 typedef long long int64;17 //typedef __int64 int64;18 typedef pair PII;19 #define MP(a,b) make_pair((a),(b)) 20 const int maxn = 阅读全文
posted @ 2013-08-19 17:44 xxx0624 阅读(202) 评论(0) 推荐(0) 编辑
摘要:最小生成树 1 /* 2 prim 3 题意:给定一些点,一些卫星,一个卫星能连接两个点,点和点之间通信有一定的距离限制。 4 问能使得所有的点联通的最小距离。 5 */ 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 #include13 #include14 #include15 #include16 using namespace std;17 typedef long long int64;18 //typedef __int64 int64;19 typedef pair PII;20 #defi 阅读全文
posted @ 2013-08-19 16:37 xxx0624 阅读(341) 评论(0) 推荐(0) 编辑
摘要:1 /* 2 博弈 3 关键态:较大数是较小数的2倍以上。 4 */ 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 #include13 #include14 #include15 using namespace std;16 typedef long long int64;17 //typedef __int64 int64;18 typedef pair PII;19 #define MP(a,b) make_pair((a),(b)) 20 const int maxn = . 阅读全文
posted @ 2013-08-19 15:44 xxx0624 阅读(210) 评论(0) 推荐(0) 编辑
摘要:1 /* 2 2-sat 3 题意:给定一个圆,圆上一些点。两点一线。现给出一些线,这些线可以在圆内连起来,也可以在圆外。 4 问有没有可能所有的线画完 且 不出现相交。 5 思路:把线画在圆内或圆外 看成一个组合。其它的则建边。 6 */ 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 using namespace std; 19 20 typed... 阅读全文
posted @ 2013-08-17 15:27 xxx0624 阅读(301) 评论(0) 推荐(0) 编辑
摘要:思路:以y的值进行离散化根据x的值 对每一条y轴边进行处理,如果是"左边"则插入,是"右边"则删除。 1 /* 2 扫描线+线段树+离散化 3 求多个矩形的周长 4 */ 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 using namespace std; 15 const int maxn = 5005; 16 const int maxm = 10010; 17 struct SegT 阅读全文
posted @ 2013-08-02 22:35 xxx0624 阅读(323) 评论(0) 推荐(0) 编辑
摘要:特判标记即可 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 const double eps = 1e-8; 8 const double inf = 9999999999.0; 9 const int maxn = 100005;10 struct Point{11 double x,y;12 int flag;13 };14 Point pnt[ maxnres ) break;54 if( pnt[i].flag==pnt[j].fl... 阅读全文
posted @ 2013-07-26 22:31 xxx0624 阅读(312) 评论(0) 推荐(0) 编辑
摘要:题意:找出第index 个回文数。这题是有规律的,即list[]数组。其次,对于某个 index 可以先精确到 位数 pos,然后在进行分析。1a 1 #include 2 #include 3 #include 4 typedef __int64 int64; 5 int64 list[ 24 ]; 6 int ans[ 240 ]; 7 8 void init(){ 9 list[0] = 0; 10 list[1] = 9; 11 list[2] = 9; 12 list[3] = 90; 13 list[4] = 90; 14... 阅读全文
posted @ 2013-07-23 17:44 xxx0624 阅读(278) 评论(0) 推荐(0) 编辑
摘要:简单题。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int maxn = 8; 7 int mat[ maxn ][ maxn ]; 8 bool vis[ maxn ][ maxn ]; 9 bool appear[ 85 ];10 struct node{11 int x,y;12 }num[ 105 ];13 14 void init(){15 memset( appear,false,sizeof( appear ) );16 memset( vis,fa... 阅读全文
posted @ 2013-07-22 23:48 xxx0624 阅读(267) 评论(0) 推荐(0) 编辑