随笔分类 -  HDU

上一页 1 2 3 4 5 6 ··· 12 下一页
摘要:题意:一个空平面,每次增加一个点,其坐标根据上一个点算出:(x[i-1] * Ax + Bx ) mod Cx,(y[i-1] * Ay + By ) mod Cy求出现有点集中的最近点对的距离的平方,共增加n个点,求每次求得的平方的和http://blog.csdn.net/liuledidai/article/details/9664031 1 /* 2 set+最近点对 3 每次对于一个新插入的点,找出x与之最近的,然后分别向两侧搜 4 题意:一个空平面,每次增加一个点, 5 其坐标根据上一个点算出:(x[i-1] * Ax + Bx ) mod Cx,(y[i-1] * Ay + By 阅读全文
posted @ 2013-08-12 21:27 xxx0624 阅读(385) 评论(0) 推荐(0) 编辑
摘要:1 /* 2 状态压缩DP 3 dp[ i ]:达到i状态的最小step。 4 题意:每次可以去掉一个回文串,求最少几步能取完。 5 */ 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 using namespace std; 15 typedef long long ll; 16 //typedef __int64 int64; 17 const int maxn = 18; 18 const int inf = 0x3f3f3f... 阅读全文
posted @ 2013-08-12 10:59 xxx0624 阅读(213) 评论(0) 推荐(0) 编辑
摘要:1 /* 2 找规律 3 题意:abs(i%A - i%B) 对i从0~N-1求和 4 从0~N-1一个一个算必TLE,着A,B两者差相同的部分合并起来算 5 */ 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 const int maxn = 105;18 const int inf = 0x7ffffff. 阅读全文
posted @ 2013-08-11 21:15 xxx0624 阅读(184) 评论(0) 推荐(0) 编辑
摘要:tarjan+缩点+树的直径题意:给出n个点和m条边的图,存在重边,问加一条边以后,剩下的桥的数量最少为多少。先tarjan缩点,再在这棵树上求直径。加的边即是连接这条直径的两端。 1 /* 2 tarjan+缩点+树的直径 3 题意:给出n个点和m条边的图,存在重边,问加一条边以后,剩下的桥的数量最少为多少。 4 先tarjan缩点,再在这棵树上求直径。加的边即是连接这条直径的两端。 5 */ 6 #pragma comment(linker, "/STACK:1024000000,1024000000") 7 #include 8 #include 9 #includ. 阅读全文
posted @ 2013-08-11 21:13 xxx0624 阅读(374) 评论(0) 推荐(0) 编辑
摘要:手动列出前5项可发现规律 1 /* 2 推导公式 3 a[n] = 2^(n-1) + (n-2)*2^(n-3) 4 */ 5 #include 6 #include 7 #include 8 using namespace std; 9 typedef long long int64;10 const int64 mod = 1e9+7;11 12 int64 FastPow( int64 n,int64 m ){//n^m13 int64 sum = 1;14 while( m>=1 ){15 if( m%2==1 ){16 sum... 阅读全文
posted @ 2013-08-10 16:39 xxx0624 阅读(274) 评论(0) 推荐(0) 编辑
摘要:1 /* 2 bfs+求树的直径 3 关键:if k 8 #include 9 #include10 #include11 #include12 #include13 #include14 #include15 using namespace std;16 typedef long long ll;17 //typedef __int64 int64;18 const int maxn = 100005;19 const int inf = 0x7fffffff;20 const double pi=acos(-1.0);21 const double eps = 1e-8;22 struc. 阅读全文
posted @ 2013-08-10 15:11 xxx0624 阅读(213) 评论(0) 推荐(0) 编辑
摘要:注意精度。 1 /* 2 3 */ 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 using namespace std;13 typedef long long ll;14 //typedef __int64 int64;15 const int maxn = 105;16 const int inf = 0x7fffffff;17 const double pi=acos(-1.0);18 const double eps = 1e-8;19 20 int. 阅读全文
posted @ 2013-08-09 23:03 xxx0624 阅读(210) 评论(0) 推荐(0) 编辑
摘要:最长公共子序列。 1 /* 2 LCS 最长公共子序列 3 */ 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 using namespace std;13 typedef long long ll;14 //typedef __int64 int64;15 const int maxn = 1005;16 const int inf = 0x7fffffff;17 const double pi=acos(-1.0);18 const double eps = 阅读全文
posted @ 2013-08-09 20:53 xxx0624 阅读(266) 评论(0) 推荐(0) 编辑
摘要:简单题。 1 /* 2 3 */ 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 #include13 using namespace std;14 const int maxn = 1000005;15 int IsPrime[ maxn ],IsSpecialPrime[ maxn ];16 int GetSum( int x ){17 int ans = 0;18 while( x ){19 ans += x%10;20 ... 阅读全文
posted @ 2013-08-06 10:51 xxx0624 阅读(192) 评论(0) 推荐(0) 编辑
摘要:1 /* 2 题意:n行m列的矩阵,1表示可以放东西,0表示不可以。曼哈顿距离为2的两个位置最多只能有一个位置放东西。 3 问最多放多少个东西。 4 */ 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 #include13 #include14 using namespace std;15 const int maxn = 105;16 const int maxm = 12;17 const int N = 170;18 int mat[ maxn ];19 int dp[ ma. 阅读全文
posted @ 2013-08-05 16:55 xxx0624 阅读(262) 评论(0) 推荐(0) 编辑
摘要:1 /* 2 母函数(生成函数) 3 题意: 4 有n种资产,每种资产num份,每份有val的价值 5 问取出总价值的1/3有多少种方案 6 */ 7 #include 8 #include 9 #include10 #include11 #include12 #include13 #include14 #include15 #include16 using namespace std;17 const int maxn = 10005;18 int c1[ maxn ],c2[ maxn ];19 int val[ 105 ],num[ 105 ];20 int main(){21 ... 阅读全文
posted @ 2013-08-04 21:19 xxx0624 阅读(334) 评论(0) 推荐(0) 编辑
摘要:1 /* 2 最大点权独立集=总权值-最小点权覆盖集 3 最大点权独立集=最大流 4 最小点权覆盖集=最小割 5 6 题意: 7 给你一个m*n的格子的棋盘,每个格子里面有一个非负数。 8 从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取数所在的2个格子不能相邻,并且取出的数的和最大。 9 根据奇偶建立二分图, 10 if(i+j)%2==0 源点和该点连接,权值为该点的点权, 11 if(i+j)%2==1 该点和汇点连接,权值为该点的点权, 12 之后若i+j为偶数的点和i+j为奇数的点之间相邻,那么就连一条从为偶数的点到为奇数的点的边,权值为无穷大... 阅读全文
posted @ 2013-08-04 15:52 xxx0624 阅读(231) 评论(0) 推荐(0) 编辑
摘要:简单的压缩状态dp 1 /* 2 状态压缩dp 3 同hdu2167 4 利用滚动数组!! 5 */ 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 #include13 #include14 #include15 using namespace std;16 const int maxn = 20;17 int binary[ maxn+5 ];18 int s[ 1<<(maxn) ];19 //int sum[ maxn ][ 1<<maxn ];20 //int dp[ ma 阅读全文
posted @ 2013-08-03 22:47 xxx0624 阅读(216) 评论(0) 推荐(0) 编辑
摘要:状态压缩dp详见代码 1 /* 2 状态压缩dp 3 dp[ i ][ j ]:第i行j状态的最大和 4 dp[i][j] = max( dp[i-1][k]+sum[i][j] ); 5 题意:给定一个N*N的方格,让你在里面取出一些数使其和最大,要求每一个数不能与其相邻的8个数同时取出 6 */ 7 #include 8 #include 9 #include10 #include11 #include12 #include13 #include14 #include15 #include16 using namespace std;17 const int maxn = 15;18 in 阅读全文
posted @ 2013-08-03 21:56 xxx0624 阅读(210) 评论(0) 推荐(0) 编辑
摘要:错排公式。用64位! 1 /* 2 3 */ 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 #include13 using namespace std;14 typedef __int64 int64;15 const int maxn = 1005;16 const int64 mod = 1000000007;17 int main(){18 int64 a[ 105 ];19 //printf("%d\n",mod);20 a[... 阅读全文
posted @ 2013-08-03 20:21 xxx0624 阅读(290) 评论(0) 推荐(0) 编辑
摘要:1 /* 2 3 */ 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 #include13 using namespace std;14 const int maxn = 1005;15 int main(){16 int ca,T;17 T = 1;18 scanf("%d",&ca);19 while( ca-- ){20 int x;21 scanf("%d",&x);22 ... 阅读全文
posted @ 2013-08-01 15:25 xxx0624 阅读(136) 评论(0) 推荐(0) 编辑
摘要:1 /* 2 bfs+标记状态 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 = 115; 16 const int inf = 9999999; 17 char mat[ maxn ][ maxn ]; 18 int vis[ maxn ][ maxn ][ 2 ][ 2 ]; 19 const... 阅读全文
posted @ 2013-08-01 15:22 xxx0624 阅读(307) 评论(0) 推荐(0) 编辑
摘要:三分出两个中间的位置即可。 1 /* 2 两次三分 3 */ 4 #include 5 #include 6 #include 7 #include 8 #include 9 using namespace std;10 const int maxn = 105;11 const double eps = 1e-8;12 const double pi = acos(-1.0);13 struct Point {14 double x,y;15 };16 Point a,b,c,d;17 double P,Q,R,ans1,ans2;18 19 double dis( Point aa... 阅读全文
posted @ 2013-07-28 23:12 xxx0624 阅读(256) 评论(0) 推荐(0) 编辑
摘要:模板题题意:给定两个凸多边形,求出合并后的面积,这个合并后的面积不包括重叠部分。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 const int maxn = 155; 8 const int maxm = 155; 9 const double eps = 1e-8; 10 const double pi = acos(-1.0); 11 struct Point{ 12 double x,y; 13 }; 14 struct Line{ 15 ... 阅读全文
posted @ 2013-07-25 22:15 xxx0624 阅读(219) 评论(0) 推荐(0) 编辑
摘要:题意看不懂的直接看百度百科对黑白棋的解释。。。做法:分情况讨论,一共8个方向。 1 /* 2 搜索 3 */ 4 #include 5 #include 6 const int maxn = 10; 7 char mat[ maxn ][ maxn ]; 8 const int dx[]={-1,1,-1,1}; 9 const int dy[]={1,-1,-1,1}; 10 11 int max( int a,int b ){ 12 return a>b?a:b; 13 } 14 15 bool in( int x,int y ){ 16 if( x>... 阅读全文
posted @ 2013-07-18 10:18 xxx0624 阅读(308) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 ··· 12 下一页