ACM Steps
文章平均质量分 85
屎宝宝
这个作者很懒,什么都没留下…
展开
-
ACM Steps_Chapter Two_Section3
A + B Problem II/*分析:对于此题做法有两种:其一,使2字符串的中的字符数字减去'0',逐个相加大于等于10的可以使本位减10,下一位自增1,后面的处理就非常简单了;其二,便是读入字符串后先让各个字符减'0',一一对应存入整形数组中;之后再相加。对于2种方法大致是相同的,都要从后面向前加,逢十进位,以及数组初始化均要初始为0,一边方便运算。*/#include原创 2013-04-21 20:29:22 · 492 阅读 · 0 评论 -
ACM Steps_Chapter Five_Section2
统计难题/*即每个结点有多个儿子结点。。。然后单词的前缀会在树中重合,而结点的数据域随题目而变,例如这题,数据域prefixNum表示含以该结点结尾的前缀的单词的个数。那么如果你想知道树中某单词是否存在,则数据域isWord == 1表示存在以该结点结尾的单词 字典树效率高在于他只需要遍历该单词*/#include using namespace std;struct No原创 2013-05-03 09:07:56 · 428 阅读 · 0 评论 -
ACM Steps_Chapter Six_Section1
Constructing Roads/*题意:建立n个村庄,实现所有村庄可通,给出村庄两两的距离和已经连通了的村庄,求连通剩下村庄的最小的总距离思路:就是求剩下的未连通的村庄的最小生成树,把已经连通了的村庄之间的距离设为0,这样在最小生成树构建过程中就不参与考虑了。*/#include#include#define INF 0xffffffint map[105][105原创 2013-05-04 09:20:57 · 497 阅读 · 0 评论 -
ACM Steps_Chapter Six_Section3
Strategic Game/*做该题要掌握以下两点:1、二分图最小顶点覆盖 = 双向二分图最大匹配 / 2 。2、利用STL中的vector的可以很方便的建立图的邻接表存储。主要用到push_back()、clear()操作。3、scanf()和printf()函数可以很方便的实现题中的输入和输出。详见代码。*/#include#includeusing namespa原创 2013-05-07 09:14:44 · 979 阅读 · 0 评论 -
ACM Steps_Chapter Six_Section2
最短路/*思路:(Dijkstra 算法)从单源点st开始,在外集合当中寻找离最短路集合最近的在外集合当中的点 i 。逐层往外延伸,延伸的同时需要不断更新从st到外集合 j 点距离dis[j].如果从最短集合里面经过 i 点再到 j 点的距离比原来的dis[j]还要近的话,那就更新dis[ j ]。该算法的时间复杂度是(n^2),空间复杂度为(n^2)*/#includeusi原创 2013-05-07 09:12:43 · 441 阅读 · 0 评论 -
ACM Steps_Chapter Seven_Section1
Shape of HDU#include#includestruct xy{ int x; int y;}d[1000];int g(int a,int b,int c){ int t; //公式:s=(x1-x3)*(y2-y3)-(x2-x3)*(y1-y3) //当s>0时,p1,p2,p3三个点呈逆时针 //当s<0时,p原创 2013-05-07 20:18:56 · 382 阅读 · 0 评论 -
ACM Steps_Chapter Eight_Section1
ACboy needs your help again!#include #include #include #include using namespace std;int main(){ int t,n,temp,i; scanf("%d",&t); while(t--) { char str[原创 2013-05-07 20:32:02 · 486 阅读 · 0 评论 -
ACM Steps_Chapter Seven_Section2
The Euler function/*定义: 对于正整数n,φ(n)是小于或等于n的正整数中,与n互质的数的数目; 例如: φ(8) = 4, 因为1,3,5,7均和8互质。性质: 1. 若p是质数,φ(p)= p-1. 2. 若n是质数p的k次幂,φ(n)= (p-1)p^(k-1)原创 2013-05-07 20:27:17 · 562 阅读 · 0 评论 -
ACM Steps_Chapter Seven_Section3
Holding Bin-Laden Captive!#include #include int value[4] = {0,1,2,5} , c1[10000] , c2[10000]; int num[4] , sum ; int main () { while ( scanf ( "%d%d%d" , &num[1] , &num[2] , &num[3] ) , nu原创 2013-05-07 20:29:26 · 441 阅读 · 0 评论 -
ACM Steps_Chapter Eight_Section2
Brave Game#includeint main(){ int c,n,m; scanf("%d",&c); while(c--) { scanf("%d%d",&n,&m); if(n%(m+1)==0) printf("second\n"); else printf("first\n"); } return 0;}Goo原创 2013-05-07 20:35:06 · 425 阅读 · 0 评论 -
ACM Steps_Chapter Eight_Section3
Tr A/*矩阵乘法模板题给定矩阵A,请快速计算出A^n(n个A相乘)的结果,输出的每个数都mod p。 由于矩阵乘法具有结合律,因此A^4 = A * A * A * A = (A*A) * (A*A) = A^2 * A^2。我们可以得到这样的结论:当n为偶数时,A^n = A^(n/2) * A^(n/2);当n为奇数时,A^n = A^(n/2) * A^(n/2) * A (原创 2013-05-08 21:33:18 · 471 阅读 · 0 评论 -
ACM Steps_Chapter Nine_Section1
A == B ?/*测试数据: 0 -0 0 +0 123.123 +00123.12300 100.00 100 .1 0.1 000.000 0 123456789123456789 12345原创 2013-05-09 08:42:05 · 571 阅读 · 0 评论 -
ACM Steps_Chapter Nine_Section2
Picture#include #include #include #include using namespace std;int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF) { cout<<"+"; for(int i=0;i<n;++i) {原创 2013-05-09 08:44:36 · 500 阅读 · 0 评论 -
ACM Steps_Chapter Two_Section1
最小公倍数#include#includeusing namespace std;int gcd(int a,int b){ int r; if(a<b) swap(a,b); r=a%b; while(r) { a=b; b=r; r=a%b; } return b;} int lcm(int a,int b){ return a*b/gc原创 2013-04-21 10:30:09 · 600 阅读 · 0 评论 -
ACM Steps_Chapter One_Section2
Elevator#includeusing namespace std;int main(){ int n,temp,last=0,sum,N; while(cin>>n,n!=0) { sum=0; last=0; N=n; while(n--) { cin>>temp; if(temp>last) { sum+=(temp-last原创 2013-04-20 21:07:29 · 434 阅读 · 0 评论 -
ACM Steps_Chapter Three_Section3
Bone Collector/*标准的01背包问题。状态转移方程f[i][v] = max{f[i-1][v-c[i]]+v[i],f[i-1][v]}*/#include#include#includeusing namespace std;int main(){ int T,N,V,f[1001],vol[1001],val[1001],tem; cin>>T;原创 2013-04-22 15:56:32 · 493 阅读 · 0 评论 -
ACM Steps_Chapter Three_Section1
超级楼梯#includeusing namespace std;int main(){ int n; int T; int a[41]; a[1]=0; a[2]=1; a[3]=2; for(int i=4;i<=40;i++) { a[i]=a[i-1]+a[i-2]; } cin>>T; while(T--) { cin>>n; cout<<a[原创 2013-04-22 15:50:10 · 519 阅读 · 0 评论 -
ACM Steps_Chapter Three_Section2
Max Sum#includeusing namespace std;int a[100001];int main(){ int T; int i,n,position1,end,thissum,maxsum,begin; cin>>T; for(int tt=1;tt<=T;tt++) { cin>>n; for(i=0;i<n;i++) scanf("%d"原创 2013-04-22 15:52:58 · 423 阅读 · 0 评论 -
ACM Steps_Chapter Four_Section1
Can you solve this equation?#include #include #include using namespace std;double comp(double x){ return ( 8*pow(x,4) + 7*pow(x,3) + 2*pow(x,2) + 3*x + 6 );}int main(){ int t; double Y;原创 2013-04-23 14:18:29 · 465 阅读 · 0 评论 -
ACM Steps_Chapter Two_Section2
Fibonacci/*用到了斐波那契数列的通项公式。先看对数的性质,loga(b^c)=c*loga(b),loga(b*c)=loga(b)+loga(c);假设给出一个数10234432,那么log10(10234432)=log10(1.0234432*10^7)=log10(1.0234432)+7;log10(1.0234432)就是log10(10234432)的小数部分原创 2013-04-21 20:26:59 · 510 阅读 · 0 评论 -
ACM Steps_Chapter One_Section1
A+B for Input-Output Practice (I)#includeusing namespace std;int main(){ int a,b; while(cin>>a>>b) cout<<a+b<<endl; return 0;}A+B for Input-Output Practice (II)#includeusing namespa原创 2013-04-20 21:03:29 · 459 阅读 · 0 评论 -
ACM Steps_Chapter One_Section3
Moving Tables/*解题思路:这道题最少花多少时间,实际上我们只要考虑哪一段重合度最高,重合度最高的地方,也就是我们至少要移动的次数了。因为有400间房间,1-2对应一段走廊,3-4对应一段走廊,如此我们可以把走廊分成200段,标记为a[1]-a[200],之后我们根据输进的房间序号,就可以算出要用到哪几段的走廊,之后给对应的a[n]值加1就好,最后求出a[n]最大值就是移原创 2013-04-20 21:10:39 · 483 阅读 · 0 评论 -
ACM Steps_Chapter Four_Section2
Collect More Jewels/*HDU 1044 Collect More Jewels走迷宫,问在规定时间内从起点到终点最多可以收集到宝物的价值是多少。先bfs找出所有宝物及起点和终点这些位置之间的最短距离,再起点dfs最大。加个剪枝,如果已经拿到所有宝物了,就不再搜索。AC G+ 31MS 560K*//*在一个迷宫中,从起点走到终点,还有几个宝物,问在给定原创 2013-05-02 08:52:50 · 463 阅读 · 0 评论 -
ACM Steps_Chapter Four_Section3
Tempter of the Bone/*题意:这个题目的意思是给定你起点S,和终点D,问你是否能在 T 时刻恰好到达终点D。分析:这样一看很明显是DFS,不过里面涉及到很多剪枝。 奇偶剪枝:是数据结构的搜索中,剪枝的一种特殊小技巧。现假设起点为(sx,sy),终点为(ex,ey),给定t步恰好走到终点, s | | |原创 2013-05-02 08:56:11 · 570 阅读 · 0 评论 -
ACM Steps_Chapter Five_Section3
KiKi's K-Number/*树状数组这道题的操作有三种,插入和删除并到一个函数里完成 ,查询的操作要用到二分的方法。*/#include #include #include #include using namespace std;const int M = 100005;int num[M];int lowbit( int x ){ return x&(原创 2013-05-03 09:10:18 · 460 阅读 · 0 评论 -
ACM Steps_Chapter Five_Section1
A Bug's Life/*在维护并查集的同时维护一个sex数组,记录任一小虫的异性的编号。例如输入a,b如果小虫a的异性为空,那么sex[a]=b;若不为空,那么就将b和小虫的异性并起来,union(b,sex[a])因为b虫必然和小虫a的异性在一个集合里。在每次输入两个虫的编号的时候,只用查是否在同一集合即可。*/#include #include#includeu原创 2013-05-02 16:21:47 · 535 阅读 · 0 评论 -
ACM Steps_Chapter Nine_Section3
Snail’s trouble#include"stdio.h"#include"string.h"#include"stdlib.h"#include"math.h"#define N 111int ans[N];void init(){ ans[5]=272400600; ans[6]=9717617; ans[7]=898515; int k,q; double原创 2013-05-11 20:59:25 · 442 阅读 · 0 评论