2012年5月23日
摘要: 省赛被虐了,最近就搞搞数论和组合数学的题目。这题主要运用了组合数学中的置换群概念,其他也没什么好说的了。 1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 #include<vector> 5 #include<algorithm> 6 #define MAXN 10005 7 using namespace std; 8 int data[MAXN],note[MAXN]; 9 bool vis[MAXN];10 11 int search(int n, int 阅读全文
posted @ 2012-05-23 13:17 Dev-T 阅读(252) 评论(0) 推荐(0) 编辑
  2012年5月16日
摘要: 一开始的时候分析对了,不过老是WA。。。。。。唉,后来找了点测试数据,照我原来的想法应该是可以的装水的,不过输出却是0.00.。。。。呃,好吧,慢慢找错。。我就大致总结下,哪些地方有可能犯错:1.2个线段共线的情况。2.计算积水面积的时候不能只选择y小的那个,要考虑y如果相等的话呢。(我就是被这卡了)3.在考虑一块木板是否被另一块挡住的时候,我是这样考虑的:如果2个线段y较大的点组成的线段,如果不严格跨立y轴,则肯定可以积水。。(排除2个线段中存在一个平行X轴,2线段共线,及其中一个线段的点在另一个线段上,也就是2个线段严格相交的情况,这里的线段是指题目开始给出的线段)。反之,选择在另一个线段 阅读全文
posted @ 2012-05-16 16:25 Dev-T 阅读(846) 评论(1) 推荐(0) 编辑
  2012年5月12日
摘要: 这题算是给自己敲了个警钟,模板必须高度可靠,原来我在各个OJ都能过题的模板,在现场塞被卡的很惨。。。算法导论上的模板才是王道啊。。。(就差那么一点,就就,唉~~~~~~~~~~~~~~~~~)从此以后再不相信网上各种模板了。还是贴代码吧。#include<iostream>#include<cstdio>#include<algorithm>#define max(a,b) ((a)>(b)?(a):(b))#define min(a,b) ((a)<(b)?(a):(b))#define MAXN 1504typedef double data 阅读全文
posted @ 2012-05-12 23:36 Dev-T 阅读(309) 评论(3) 推荐(0) 编辑
  2012年5月11日
摘要: 这题当时比赛的时候,题目看了好久,没看懂(英语6级没过的压力很大啊),当时想先敲E题(后来事实证明这个选择是错误的。。E题到现在都不知道哪出错了)其实题目就是给出N个字符串,如果S2包含S1,如果S2在文章中的话,就只计算S2,而不计算S1.反之亦然。比赛时苦苦纠结于到底什么是text finger print。看懂题目后这题就是一个AC自动机的水题。直接上代码#include<iostream>#include<cstdio>#include<queue>#include<string>#include<vector>#includ 阅读全文
posted @ 2012-05-11 22:23 Dev-T 阅读(524) 评论(0) 推荐(0) 编辑
  2012年3月3日
摘要: 唉~~~~~这题实在是坑爹,数据范围1<=N<=50000,很明显O(N^2)的算法过不了,但是居然过了-_-!!!!!!!!!!!!跪求神牛高效算法。。。先来分析下这题,给出N个点,从中选出3个点,使其面积达到最大。先用凸包进行初步优化:因为最大面积三角形的顶点一定在凸包上。然后直接在凸包上暴力枚举是肯定不行的。。O(N^3)所以这要用到一种思想,旋转卡壳。能够将其中一个点的枚举次数平摊为O(1).所以总的时间复杂度为O(N^2).旋转卡壳枚举思路:先固定i,j这2个邻接的顶点。然后找出triangle_area(i,j,k)最大的那个K点。然后再固定i,枚举j点,由于k点是随着 阅读全文
posted @ 2012-03-03 14:58 Dev-T 阅读(655) 评论(0) 推荐(0) 编辑
  2012年2月4日
摘要: 这道题很水很水,由于数据范围很小,所以根本不用搜索。直接位运算枚举就行了。不过要注意一点:凸包点数小于3的情况需特判。好了,贴代码....View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<queue> 5 #include<vector> 6 #include<map> 7 #include<set> 8 #include<cmath> 9 #include<complex> 阅读全文
posted @ 2012-02-04 20:41 Dev-T 阅读(477) 评论(0) 推荐(0) 编辑
  2012年2月2日
摘要: 这题主要注意几点:1.共线的处理,我会在代码中注释。2.PI的精度。3.极角排序。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<queue> 5 #include<vector> 6 #include<map> 7 #include<set> 8 #include<cmath> 9 #include<complex>10 #include<algorithm>1 阅读全文
posted @ 2012-02-02 17:26 Dev-T 阅读(303) 评论(0) 推荐(0) 编辑
  2012年2月1日
摘要: 先介绍几种极角排序:1.利用叉积的正负来作cmp.(即是按逆时针排序).此题就是用这种方法1 bool cmp(const point &a, const point &b)//逆时针排序 2 {3 point origin;4 origin.x = origin.y = 0;5 return cross(origin,b,origin,a) < 0;6 }2.利用complex的内建函数。 1 #include<complex> 2 #define x real() 3 #define y imag() 4 #include<algorithm> 阅读全文
posted @ 2012-02-01 18:08 Dev-T 阅读(6131) 评论(3) 推荐(0) 编辑
摘要: 此题让我WA了N次。。。坑呐。。。需要注意几点(血淋淋的教训):1.有可能出现一种情况,它给出的是5个点,但这个有可能是三角形,因为有4个点在同一边上.2.R == 0的情况(如果点在边上时返回正确)。。3.给出的点的顺序可能为顺时针或者逆时针。View Code 1 #include<iostream> 2 #include<cmath> 3 #define EPS 1e-8 4 using namespace std; 5 struct point { 6 double x, y; 7 }pol[2000]; 8 9 int nver; 10 poin... 阅读全文
posted @ 2012-02-01 14:55 Dev-T 阅读(1144) 评论(0) 推荐(1) 编辑
  2012年1月28日
摘要: 这题初看就想到用BFS+计算几何,不过WA了几次后。把题目看了一遍。。。尼玛啊,题目理解错了。。。。。。唉~~~~很水的题被我想复杂了。只要枚举每个边界上的点与终点的线段,最少相交的点数。View Code 1 #include<iostream> 2 #include<queue> 3 #define EPS 1e-8 4 using namespace std; 5 6 struct point { 7 double x, y; 8 }wall[30][2]; 9 10 point tag;11 12 double cross(double x1, double y 阅读全文
posted @ 2012-01-28 22:25 Dev-T 阅读(215) 评论(0) 推荐(0) 编辑