自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

XD

为了将来,拼了!~

  • 博客(47)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 杭电ACM1395——2^x mod n = 1~~水题

题目的意思很清楚。求最小的x使2^x mod n = 1。n是输入的。直接暴力过,用快速幂运算。一开始忘记了n = 1的情况,导致TLE。下面的是AC的代码:#include using namespace std;int main(){ int n, x, i; while(cin >> n) { if(n % 2 == 0 || n == 1)

2015-05-31 22:24:07 701

原创 杭电ACM1398——Square Coins~~母函数

这一题,简单的母函数的应用,好久没有写过母函数了,有点生疏了。题目的硬币有17种,分别是1到17的平方的硬币。下面的是AC的代码:#include #include #include using namespace std;int dp[305], temp[305];int main(){ int i, j, k, l; for(i = 0; i < 305; i

2015-05-31 22:08:06 620

原创 北大ACM1328——Radar Installation~~贪心

题目的大概意思是:给你N个坐标,雷达的半径为d,求至少安装多少个雷达才能将所有点覆盖。雷达都在 x 轴上,不能全部覆盖的就输出 -1.思路大概是,先算出雷达覆盖每一个点的横坐标的范围。然后再来贪心求解有几个。下面的是AC的代码:#include #include #include using namespace std;class data{public: double

2015-05-27 15:32:24 2236

原创 杭电ACM1203——I NEED A OFFER!~~01背包

这题,简单的01背包问题。只是一开始没有想到,觉得这题莫名其妙的。还是太水。下面的是AC的代码:#include #include using namespace std;class data{public: int cost; double pre;};data Da[10005];double dp[10005]; //拿到offer的

2015-05-23 10:50:07 1097

原创 杭电ACM1200——To and Fro

这一题,简单的字符串处理。例如:将输入的字符串“toioynnkpheleaigshareconhtomesnlewx”,变成:t o i o yh p k n ne l e a ir a h s ge c o n hs e m o tn l e w x然后输出每一列就OK了。下面的是AC的代码:#include #include #in

2015-05-23 10:20:42 1121

原创 杭电ACM1303——Doubles

这一题,水题。题目的意思是输入一个数组,判断数组中有多少对是 a * 2 = b的,a和b都是数组中的数。只是输入时比较麻烦,注意一下就好了。下面的是AC的代码:#include using namespace std;int main(){ int num[20]; int i, j = 0; while(cin >> i) { if(i == 0) {

2015-05-23 09:52:59 1080

原创 杭电ACM1391——Number Steps

这题,简单的找规律。上面坐标位置有数的,输出该数,没有的输出No Number按照下面一行来找规律,(x >= 2)上面一行的是下面一行 + 2,下面一行的规律为横坐标为偶数x时,横坐标x上的两个数为 x / 4 * 4 - 2,x / 4 * 4 - 2 + 2。 为奇数时,两个数为x / 4 * 4 - 2 + 1, x / 4 * 4 - 2 + 1 + 2。然后条件

2015-05-22 16:14:55 783

原创 杭电ACM1390——Binary Numbers

这一题,输入的数转换成二进制,输出二进制位为1的位置。下面的AC代码:#include using namespace std;int main(){ int count, a[100]; int i, j, n; scanf("%d", &n); while(n--) { cin >> i; j = 0; count = 0; while(1) {

2015-05-22 15:50:35 924

原创 杭电ACM1321——Reverse Text~~逆序输出字符串

简单的字符串逆序输出。AC代码:#include #include using namespace std;int main(){ char str[100000]; int n; while(cin >> n) { getchar(); for(int i = 0; i < n; i++) { gets(str); int length = st

2015-05-22 15:29:55 1132

原创 杭电ACM1287——破译密码

这题,简单的异或运算。a ^ b = c  => a ^ b ^ a = c ^ a = b。而这个b就是我们要求解的。下面的是AC的代码:#include #include using namespace std;int a[10010];char b[10010];int main(){ int n; int i, j, k; while(cin >> n

2015-05-21 23:22:27 1110

原创 杭电ACM2187——悼念512汶川大地震遇难同胞——老人是真饿了~~贪心

这一题,简单的贪心就OK了。下面是AC的代码:#include #include #include using namespace std;class data{public: int price, height;};int M, N;data Date[1005];int cmp(const data &a, const data &b){ re

2015-05-21 22:52:06 783

原创 杭电ACM1312——Red and Black~~广搜

这一题,简单的广搜或者深搜都可以搞定,时间复杂度都差不多。我用的是广搜。题目的意思是:@是一个人的起始位置,#不可以走,. 可以走,求出可以走的位置的个数。一开始没有用结构体来存储坐标,直接用的是z = x * 10 + y;将z入队,结果错了,原因是在取余整除的时候会出错。改用结构体就OK了。下面是AC的代码:#include #include #include using

2015-05-21 22:44:13 634

原创 杭电ACM1166——敌兵布阵~~线段树

这一题,暴力的方法超时。只能用线段树来求解。对于线段树,只是初学,还不是很懂,看了大神的博客,慢慢敲出来的。关键还是那些递归的过程。递归的过程,也是理解了大概,也很难讲清楚递归的过程。下面的是AC的代码:# include # include # include using namespace std;const int N = 50005;class Node{p

2015-05-20 20:41:30 787

原创 北大ACM2991——Crane~~线段树

最近看到了线段树,对于线段树也是有了初步的了解,还是需要时间继续研究,加深理解。感觉线段树,个人觉得最主要的是递归过程的理解。这一题,给定一段绳子,“ 分成 ”N段,起初,每段绳子都是垂直的。然后有C个命令,每个命令包含两个数 i  ,  j,i  是第几段绳子,j 是 i 段绳子旋转到  i + 1 段绳子多经过的角度。也就是  i  和 i + 1 之间的角度是  j。可以理解成向

2015-05-20 14:45:22 611

原创 杭电ACM1210——Eddy's 洗牌问题~~找规律。

例如:n = 3一开始,序列为1 2 3 | 4 5 6然后序列为        4 1 5 | 2 6 3接着为                2 4 6 | 1 3 5最后为                1 2 3 | 4 5 6所以m = 3.找出规律就可以解决了,只需要第一个数,也就是1的位置重新回到位置1,那整个数列就变回开始的序列了。1的位置 i 小于等于

2015-05-16 21:17:36 882

原创 杭电ACM1269——迷宫城堡~~并查集

这题,可以用并查集来解决。需要用到两个数组来判断从i到j以及j到i的是否属于同一个并查集。下面的是AC的代码:#include #include using namespace std;int par[2][10005];int n, m;int finds(int x, int i){ if(x == par[i][x]) return x; else ret

2015-05-16 20:44:30 1030

原创 北大ACM1742——Coins~~多重背包

题目的意思是,输入n个硬币的面值和数量,求不超过m的组合方法的数目。今天学习了多重背包,但是还是不是很懂,继续努力。下面的是AC的代码:#include #include #include #include using namespace std;class data{public: int value, count;};data Da[101];int d

2015-05-13 23:13:16 687

原创 北大ACM2229——Sunsets~~简单DP

题目的意思是输入N,有多少种由2的整数幂相加的情况。下面的是AC 的代码:#include #include using namespace std;int dp[1000002];int a[21];const int mod = 1000000000;int main(){ int i; memset(dp, 0, sizeof(dp)); dp[0] = 0;

2015-05-13 21:22:58 692

原创 杭电ACM1242——Rescue~~BFS+优先队列

这题,简单的BFS就可以搞定。题目的大概意思是最短时间从地图的r到达a。一开始,用普通的队列来做,结果内存超了,原因是N和M最大200;普通的队列会浪费一大堆内存,所以应该改用优先队列来做。下面是AC的代码:#include #include #include using namespace std;class data{public: int x, y, cost;

2015-05-09 15:12:50 749

原创 北大ACM2376——Cleaning Shifts

这一题,简单的贪心,可是WR了好多次,坑,原因是输入3 10 1 5 6 10 10 10,这样的1到5,6到10,也算连续的!~~坑了。下面是AC的代码:#include #include #include using namespace std;class data{public: int first, second;};data Da[25005];int N

2015-05-07 23:29:36 567

原创 杭电ACM1180——诡异的楼梯~~广度优先搜索

这一题,简单的广搜就可以搞定,只是在搜索的时候判断比较麻烦,遇到楼梯的时候,有多种情况,停下来等,或者走其他路,来到楼梯,楼梯是否可以直接上等等的判断。一开始WR,就是在楼梯可以直接上的时候,没有判断走出楼梯的那一个是否可以走,所以WR了3次。下面AC的代码:#include #include using namespace std;class Node{public:

2015-05-07 21:58:21 816

原创 杭电ACM1237——简单计算器

简单的表达式求值,A了好久,坑。AC的代码:#include #include #include #include using namespace std;int main(){ char str, c; double a, b; stack num; while(scanf("%lf", &a) != EOF) { while(!num.empty())

2015-05-06 22:49:45 2515

原创 北大ACM1703——Find them, Catch them~~并查集

题目的意思是:在一个城市,有两个犯罪团伙。输入N(人的个数)和M(信息的个数)。后面M条信息是一个字母加上两个数字i和j,如果字母为D,则说明i和j属于不同的犯罪团伙,如果字母是A,则要你判断i和j的关系,属于同一个还是属于不同的还是不确定。一开始,觉得这个题目计较棘手,属于D的情况下,是属于不同的犯罪团伙,不知道如何来解决。后来想到了之前看到的一题,POJ1182食物链,判断有多少条信息

2015-05-06 21:18:09 676 1

原创 北大ACM2236——Wireless Network~~并查集

这一题,题目的大概意思是:有N台电脑,彼此直接能通信的最大距离为T,这些电脑因为地震损坏了,需要修理。修理之后,就可以跟其他的修理过的距离小于等于T的电脑通信,你需要回答的是某两台电脑是否能够通信。简单的并查集的应用,只是加了一个限制条件。输入N和T,下面N行为N个电脑的坐标。再下面的是一直到文件结尾,输入O k,表示k电脑进行修理。输入S i j ,表示问你这两台电脑是否能够通信。

2015-05-06 16:58:10 615

原创 北大ACM2387——Til the Cows Come Home

题目的意思是求解从路标N到路标1的最短路径,简单的最短路径题目,Dijkstra或者Bellman_Ford算法都可以过。题目有一个坑:输入有重边,所以要选择最小的长度。下面是AC的代码:#include #include using namespace std;int cost[1005][1005];bool vis[1005];int dis[1005];c

2015-05-06 15:58:06 605

原创 北大ACM2395——Out of Hay~~最小生成树

题目求解的是最小生成树中的最大边:一次AC代码:#include #include #include using namespace std;class data{public: int from, to, cost;};data Edge[10005];int par[2005];int N, M, num;int cmp(const data& a, co

2015-05-06 14:06:31 565

原创 北大ACM2377——Bad Cowtractors~~最小生成树

这题,也是简单的最小生成树。只是求解的是费用最大,而且可能出现不能形成一棵树的情况就输出 -1.水题,直接附代码:#include #include #include using namespace std;class data{public: int from, to, cost;};data Edge[20005];int par[10005];int N,

2015-05-06 13:46:47 781

原创 北大ACM1258——Agri-Net~~最小生成树

比较简单的题目.直接附AC的代码:#include #include #include using namespace std;class data{public: int form, to, height;};data Edge[10005];int N, num, par[105];int cmp(const data& a, const data& b)

2015-05-06 12:02:58 577

原创 北大ACM3268——Silver Cow Party~~最短路径

这一题的大概题意是:在N个农场中,指定一个农场X,剩余的农场要有牛来到农场X参加Party,每只牛来到农场X会走最短的路径,返回的路径不一定按原路返回,因为每一条路都是单向的。返回也走最短路径。求N - 1 只牛去参加Party到返回自己农场的最短路径和中的最大值。简单的最短路径,一开始用了Floyd算法,超时了,N最大达到了1000,N^3的复杂度,绝对的超时。只能换另外的一种算法来求解

2015-05-06 10:23:00 1569 1

原创 北大ACM3259——Wormholes

题目大概的意思是:输入的N,M,W。N代表有多少块田,M代表有多少条路(双向的),W代表有多少个虫洞(单向的)。然后下面的M行,表示田i与田j之间的路需要走多少秒,再下面W行,就是田i与田j之间的虫洞能返回多少秒(也就是穿越到之前的时间)。求解是否存在一条路径使一个人回到起始田时,那人可以看到之前的自己。解题的思路,用bellman_fory算法找出图中的负权环。判断图中是否有负圈

2015-05-05 21:10:35 639

原创 北大ACM2139——Six Degrees of Cowvin Bacon

题目的意思是:输入牛的头数和电影的个数N和M,接下来M + 1 行为每一部电影涉及到的牛的个数已经哪一头牛。在同一部电影里面的牛与其他的牛(也在这部电影中)的度为1.求解的是每一头牛到其他的牛的度之和最小。(题目的是求平均的,将度之和除以N - 1 再乘以100就行了)典型的最短路径问题,只是这里求解的是任意两头牛直接的,用Floyd算法可以搞定,N最大为300,时间复杂度为N^3,完全可

2015-05-05 19:45:22 536

原创 北大ACM3176——Cow Bowling~~数塔

这一题,简单的动态规划。状态转移方程:dp[i][j]  + = max(dp[i + 1][j], dp[i + 1][j + 1]);(i = n - 2 to 0; j = 0 to i); 最后输出dp【0】【0】就OK了。下面是AC的代码:#include #include using namespace std;int max(int x, int y){

2015-05-05 12:57:13 627

原创 杭电ACM3415——Max Sum of Max-K-sub-sequence

一开始,看到这题,以为是最大连续子序列和的问题,写出了代码,提交了,WR,找了一些测试数据,结果发现这个算法并不能将所以的序列的解求出,只是满足一部分序列。百度了一下,知道了要用单调队列来求解。单调队列,也就是队列中必然是单调递减的或者递增的。而这题使用的是单调递增的队列。单调队列使用的是双向队列,队尾队头都可以删除元素,只能从队尾插入元素。比如求解一个数列{1  ,2  ,5 ,

2015-05-05 11:43:45 580

原创 北大ACM3641——Pseudoprime numbers~~快速求幂法

这一题,主要是快速求幂的方法的应用。可以看看快速求幂方法的原理:http://blog.csdn.net/qq_25425023/article/details/44316463题目的大概意思是:输入两个数p,a,p为素数,则直接输出no,否则判断a^p % p == a?等于就yes,不等于就no。理解了题目的意思,就很容易了。下面的是AC代码:#include

2015-05-04 22:30:53 614

原创 北大ACM3320——Jessica's Reading Problem

这一题,是简单的取尺法的应用。题目大概的意思是:一个人复习一本书,这本书的每一页都有一个知识点ai,每一页的知识点可能会与其他页的知识点相同,问你如何读最少页,将所以知识点读完。使用STL中的 set 来判断里面有多少个不同的知识点num, 用STL中的 map 表示知识点与出现次数的映射。同样的设置知识点数sum,页数的起点和终点s和t。首先将知识点的数组a 加入map中,直到sum

2015-05-04 21:40:27 789 2

原创 北大ACM3061——Subsequence

题目大概的意思是:给你一个整数数列,从中找出最小连续子序列的和不小于整数S。数列最小为10,最大为100000,用暴力法估计会超时,我没有试过。这里,我将用两种方法来求解这一题,一个时间复杂度为nlogn,另一个时间复杂度为n,不过两个提交了,时间都是79MS。没多大的区别。1.时间复杂度为nlogn的方法:主要的思路是用一个数组 sum 算出数列的前 i+1 个数的和,(i从0到

2015-05-04 20:41:55 517

原创 杭电ACM1027——Ignatius and the Princess II

这题,找了好久,都没有找到是什么规律,百度了之后,才知道是第几个最小的排列是枚举排列的第几个。真是长知识了!!~知道了这样的规律之后,就可以很快的写出了,algorithm这个头文件中又一个枚举排列的函数next_permutation,第i个最小的排列,就是调用next_permutation  i - 1次之后的那个排列。next_permutation同样的适用与可重集,也就

2015-05-04 14:40:04 849

原创 杭电ACM1060——Leftmost Digit

这一题,主要是数学方面的知识,将ans = n^n进行化简。两边取log。得到log(ans)= n * log(n);再推出ans = 10 ^ (n * log (n));10的整数幂,只会在ans后面加上一个0,小数的幂才会影响ans的其他有效数字。所以求出n * log(n)的小数部分temp,然后(int)10^temp就是所要求的结果。数学,很重要!!~·下面的是A

2015-05-04 12:13:30 1004

原创 杭电ACM1025——Constructing Roads In JGShining's Kingdom

题目的意思是,两行城市,从左到右为1,2,3……n个城市。上面的下面的城市要与上面某个的城市相连,在不出现相交的情况下,最多可以连多少条。知道了题意,就知道了应该用DP来做。这一题,数据量比较大,用普通的DP,时间复杂度为N^2,会超时,我们应该用另一种DP方法,时间复杂度为nlogn。nlogn的DP的思路大概就是给你一个数,插到一个数组中,该位置已存在,就覆盖它。也就是可以用二分查

2015-05-03 23:14:56 994

原创 杭电ACM1087——Super Jumping! Jumping! Jumping!

这题,简单的动态规划,也就是求最大连续子序列的和,是和最大。知道了这个,就可以很容易的写出代码来了。状态转移方程:dp[i] = max{ dp[j] } + a[i] ( j >= 0 && j 有了状态转移方程,一切都是很简单了。下面的是一次AC的代码:#include using namespace std;int main(){ int dp[1005], a

2015-05-03 11:55:49 1200

SkinH_VC。rar

VC换肤库,可以让你的界面焕然一新。支持各种环境,各种开发工具

2015-04-26

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除