摘要: apositiveintegernumberisbeautifulifandonlyifitisdivisiblebyeachofitsnonzerodigits.问一个区间内[l,r]有多少个Beautiful数字范围9*10^18一个数字要被它的所有非零位整除,即被他们的LCM整除,可以存已有数字的Mask,但更好的方法是存它们的LCM{git[i]}intMOD=LCM{1,2,9}=5*7*8*9=252010以内的数字情况为2^3,3^2,5,7所以最小公倍数组合的情况只有4*3*2*2=48所以复杂度大概为19*2520*48*10(状态数*决策数)View Code #inclu 阅读全文
posted @ 2013-04-08 21:09 gray035 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 高斯消元是求方程组解的一般方法:它在求矩阵的逆矩阵的时候也最方便的方法View Code #include <stdio.h>#include <cstring>#include <stdlib.h>#include <math.h>#include <iostream>using namespace std;#define max(a,b) ((a) > (b) ? (a) : (b))#define min(a,b) ((a) < (b) ? (a) : (b))#define eps 1e-6const int Ma 阅读全文
posted @ 2013-04-08 16:41 gray035 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 程序设计要求设计一个Card类来表示单张扑克牌的逻辑模型。如下类图所示。设计一个Deck类用来表示一副52张的扑克牌,公有接口必须包括生成扑克牌、显示扑克牌、洗牌等这样的成员函数。如下类图所示。程序主函数如下:int main() { Deck deck; deck.MakeDeck(); deck.ShowDeck(); return 0;}运行程序能输出一副扑克牌View Code #include <cstring>#include <iostream>#include <time.h>using namespace std;char Suit[4] 阅读全文
posted @ 2013-04-07 19:44 gray035 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给出一个柱形统计图(histogram), 它的每个项目的宽度是1, 高度和具体问题有关。 现在编程求出在这个柱形图中的最大面积的长方形。例如:7 2 1 4 5 1 3 37表示柱形图有7个数据,分别是 2 1 4 5 1 3 3, 对应的柱形图如下,最后求出来的面积最大的图如右图所示。思路:求矩形面积就是要知道宽和高,我们以每一个小矩形为高向两边扩展(扩展到l 和 r),则面积就为h*(r - l);对于前面矩形比我当前扫到点要高,那么这个矩形的 l 必定是前一个矩形的 l .所以我们可以用单调栈维护;正着扫一遍可以得到所有的 l ; 倒着扫一遍得到所有的 r ;详见代码:Vie 阅读全文
posted @ 2013-04-05 22:20 gray035 阅读(222) 评论(0) 推荐(0) 编辑
摘要: View Code #include <iostream>#include <cstdio>#include <cstring>#include <cmath>using namespace std;#define P(x) (x)*(x)class Point { friend class B;public: Point(double x=0,double y=0) { X = x; Y = y; } Point(Point &a); double get_x(); double get_y(); friend doubl... 阅读全文
posted @ 2013-04-01 13:11 gray035 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 题意:输入n个营地,告诉你每个营地最多可以有多少人。再告诉你m条记录,告诉你两个营地之间至少有多少人,问你所有营地的人数总和最少是多少。当告诉你的条件有矛盾时输出:Bad Estimations做法:差分约束,因为给出的条件都是不等式,满足差分约束形式。每个营地最多x人,则有条件:s[i] - s[i-1] <= x;i 和 j营地之间至少x人,则有条件:s[j] - s[i-1] >= x; 相当于条件: s[i-1] - s[j] <= -x为了使整张图联通,不出现断层则有条件:s[i-1] - s[i] <= 0;或者设0为超级原点 s[0] - s[i] < 阅读全文
posted @ 2013-03-30 11:37 gray035 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 假设湫湫有可能经过的n个城市分别编号从1到n,湫湫要从城市A回到城市B,购票网站上列出了t辆列车行程,每辆车的行程用一个字符串表示,途径的城市间用+号相连,如1+2+3+5代表一辆从1城市分别经过2,3到达5的火车,湫湫可以从中间任意一站出发和下车(路径是单向的,即必须沿字符串从左到右来走),每个字符串对应着一个整数k,k=0表示该车只有硬座,k=1表示该车有卧铺也有硬座,在整个回家的计划中,同一辆车可以坐无限次,为了中途换车的方便,如果在起点坐的是卧铺,则后面乘坐的车必须全是卧铺,同样的,如果在起点坐的是硬座,则后面乘坐的车必须全是硬座,假设一段(一辆车行程中,两相邻城市间为一段)硬座的不舒 阅读全文
posted @ 2013-03-26 16:59 gray035 阅读(157) 评论(0) 推荐(0) 编辑
摘要: #include <iostream>#include <algorithm>#include <cstdlib>#include <cstring>#include <string>#include <vector>#include <cstdio>#include <queue>#include <cmath>using namespace std;const int Max = 13;struct Matrix{ int m[Max][Max];} ;Matrix I;Matrix 阅读全文
posted @ 2013-03-26 13:13 gray035 阅读(199) 评论(0) 推荐(1) 编辑
摘要: 3-1.文件和字符串基本操作:从文件中读取单词,统计单词的个数,单词之间以空格、标点或换行符分隔。注意判断文件是否打开成功。单词为英文单词。提示:使用系统函数getline来读取一整行到string类型的变量中去。其第一个参数是输入流,第二个参数是string类型的变量。该函数从输入流中读入字符,然后存储到string变量中,直到出现以下情况为止:3-2.类的设计:从以下两题中选一。选1. 设计一个用于人事管理的People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等。其中“出生日期”声明 阅读全文
posted @ 2013-03-26 12:37 gray035 阅读(756) 评论(0) 推荐(0) 编辑
摘要: 如HDU的4502,把题目抽象成一张图,把区间的头-1,这样就可以连接起来了。View Code #include <cstdio>#include <cstring>const int Max = 109;#define max(a,b) a>b?a:bint mat[Max][Max];int dis[Max];bool vis[Max];int n ,m;void dij(int s) { memset(vis,0,sizeof(vis)); for(int i = 1; i <= n; i++) { dis[i] = mat[s][i]; } vi. 阅读全文
posted @ 2013-03-21 17:42 gray035 阅读(861) 评论(0) 推荐(0) 编辑