- 博客(18)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 北大ACM2785——4 Values whose Sum is 0~~双向搜索
题目的意思很明确,ABCD四个集合,从各个集合中抽取一个数,求将四个数相加等于0的组合数。由于N最大达到4000,所以,暴力的方法过不了,就是时间限制为15000MS也是不行。不过我们可以双向搜索,也就是折半搜索。先求出CD这两个集合的两两配对的新的集合CD,然后在从CD集合中找AB集合两两配对的和k的负数有多少个。用upper_bound和lower_bound函数可以很快的求解出来
2015-06-30 15:56:55 741
原创 北大ACM3624——Charm Bracelet
这题,简单的01背包问题。下面的是AC的代码:#include #include using namespace std;int dp[13500];int n, m;class data{public: int w, d;};data Data[3500];int max(int x, int y){ return x > y ? x : y;}int
2015-06-30 15:24:03 786
原创 北大ACM3684——Physics Experiment
这题,题目的意思是,有N个球从高度为H的地方落下,每一秒落下一个球,球与球之间和球与地板直接都是弹性碰撞,求T秒后的每个球的位置,也就是高度。这题,跟Ants那题类似,也就是球与球碰撞可以当作不转换方向,继续按照原来的方向。也就是R = 0的时候,忽略半径,算出每一个球的位置,每一个球与地板碰撞后,会上升到原来的高度。先算出一次掉落需要t = sqrt(2 * H / g);每个球总共的时间T
2015-06-30 14:51:57 525
原创 杭电ACM1098——Ignatius's puzzle
这题,简单的数学题。对于函数,f(x)=5*x^13+13*x^5+k*a*x,输入k,对于任意的x,是否存在一个数a,使得f(x)被65整除。对于任意的x。所以当x = 1时,f(x) = 18 + a* k,满足被65整除。也就是(18 + a * k)% 65 = 0。所以,一切都很简单了。下面的是AC的代码:#include using namespace s
2015-06-28 23:26:21 819
原创 杭电ACM1297——Children’s Queue~~大数相加的应用
题目的意思很明确,不能单独有一个女生站一起。假设有N个人。1.最后一个人是男生,则有F(N - 1)。2.最后一个人是女生,则第N - 1也是女生,则有F(N - 1)。但还有一种就是,第N - 2个是女生,(是男生的话,包含在F(N - 1)中),但是第N - 3 个是男生,则不包含在上面的情况中,但是也是符合的。也就是最后三个是女生,倒数第四个是男生。也就是还有F(N - 4)
2015-06-28 16:07:48 1171
原创 杭电ACM1197——Specialized Four-Digit Numbers
题目的意思是从2992开始的四位数,每一个四位数的10,12,16进制的数的每一位加起来都相等,就输出该数。很简单的一道题目。下面的是AC的代码:#include using namespace std;int main(){ int i, j, k, n, m; for(i = 2992; i < 10000; i++) { n = 0
2015-06-27 10:08:06 713
原创 杭电ACM1129——Do the Untwist~~解密 密文
如题目的意思:"_"对应的是0,"a"对应的是1,以此类推,"."对应的是27。给你k,ciphercode[i] = (plaincode[ki mod n] - i) mod 28. ciphercode是密文,plaincode是明文。ki为k * i。k * i mod n为明文的第几个。n为字符串的长度给你密文,求出明文是什么。可以用枚举来求明文。简单暴力就可以过了。
2015-06-17 17:55:45 1385
原创 杭电ACM1130——How Many Tree?~~Catalan数
Catalan数的递推公式为:F(n)= F(n - 1) * (4*n - 2)/ (n + 1);由于n最大为100;所以需要用数组来存放每一个Catalan数。需要运用大数的运算。下面的是AC 的代码:# include struct catalan{ int length; int len[100];};struct catalan a[101];int ma
2015-06-17 16:31:00 799
原创 杭电ACM1220——Cube~~简单的数学题
题目的意思是给你一个立方体的棱长 n ,将这个立方体分解成单位长度为1的小立方体。问这个大立方体分解之后的n * n * n个小立方体中有多少对小立方体的公共点不超过2个。立方体分解之后,只会出现 0, 1, 2, 4个公共点的情况,所以算出所以的对数,然后减去4个公共点的情况就可以解决了。关键是4个公共点的情况有多少对?首先是有3个面没有露出来,总共只有8个,也就是那8个顶点
2015-06-17 16:00:42 1183
原创 杭电ACM1216——Assistance Required~~筛选法的应用
这题,一开始以为是第几个素数,后来打表之后查了一下,发现不是。再看看题目,才知道是简单的筛选法。每一个筛选留下来的数n,n往后的所以数,能被n整除的除去,不能的留下,筛选出3000个数出来就OK了。下面的是AC的代码:#include #include using namespace std;int num[50000];int a[3005];int main()
2015-06-16 23:23:39 970
原创 杭电ACM1211——RSA
这题,类似密文解密的题目。题目的意思讲的很清楚。给你p q e l,l为第二行的数字的个数。先算出n和fn,在算出d。n = p * q;fn = (p - 1)* (q - 1)。再根据d * e % fn = 1,算出d。最关键的是求c。给你的数num 要等于c ^ d % n。c 对应的ASCLL码就是解密之后的字符。下面的是AC的代码:#include usi
2015-06-16 15:04:27 1308
原创 杭电ACM1240——Asteroids!~~简单的BFS
这道题目,三维空间上的BFS,给你起点和终点,看能否找到一条路,O表示可以走,X表示不可以走!~理解了题目,就可以用队列来实现BFS来求解。下面的是AC 的代码:#include #include #include #include using namespace std;class data{public: int xyz; int count;};cha
2015-06-15 23:46:03 823
原创 北大ACM1007——DNA Sorting
简单的题目,如题:找出字符串中的反转次数。按反转次数从小到大输出。反转次数,就是字符串中的每一个跟它后面的每一个字符比较,比后面的大的,次数+1.下面的是AC的代码:#include #include #include #include using namespace std;class data{public: char str[55]; int count;}
2015-06-14 10:28:19 1324
原创 北大ACM1006——Biorhythms~~中国剩余定理
中国剩余定理,百度一下,就有它的定义与证明。这里我就讲一个例子就好了。题目的意思就是给你p,e,i,d。(n + d)% 23 = p,(n + d) % 28 = e,(n + d) % 33 = i。求最小n。将n+d看成一个整体,m =n + d。要求m:先使 28 * 33 * a % 23 = 1,求出a,x = 28 * 33 * a;使 23 * 33 * b
2015-06-14 09:39:44 1296
原创 杭电ACM1301——Jungle Roads~~最小生成树
这题,简单的最小生成树问题。只是输入的时候比较麻烦,一开始的N,是村庄的个数,下面N - 1 条信息,一开始的大写字母S和数K,是S村庄有K条路连接,后面是K个村庄以及权值。处理好了输入的数据,就很简单了。下面的是AC的代码:#include #include #include #include using namespace std;class data{publ
2015-06-11 23:33:02 832
原创 杭电ACM1407——测试你是否和LTC水平一样高
简单的题目,暴力过。下面的是AC的代码:#include using namespace std;int main(){ int i, j, k, num; int flag; while(cin >> num) { flag = 0; for(i = 1; i < 100; i++) {
2015-06-10 15:16:22 766
原创 杭电ACM1408——盐水的故事
简单的题目,RT,就可以写出代码.需要注意的是类型的应用,应该用浮点型。下面的是AC的代码:#include using namespace std;int main(){ double VUL, D; int time, i, flag; while(cin >> VUL >> D) { time = 0; i = 1;
2015-06-10 15:14:58 2113 1
原创 杭电ACM1412——{A} + {B}
简单的set容器的应用。用set容器可以过。下面是AC的代码:#include #include using namespace std;int main(){ set S; int m, n, a; set::iterator ite; while(cin >> m >> n) { S.clear(); f
2015-06-10 15:12:47 701
vs2013 fstream 无法打开文件
2015-03-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人