2011年5月6日

Nimm Game

摘要:尼姆博弈(Nimm Game):有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。对于任何奇异局势(a,b,c),都有a^b^c=0.非奇异局势(a,b,c)(a<b<c)转换为奇异局势,只需将c变为a^b,即从c中减去 c-(a^b)即可。 阅读全文

posted @ 2011-05-06 19:26 _Clarence 阅读(84) 评论(0) 推荐(0) 编辑

ACM PKU 3318 Matrix Multiplication http://acm.pku.edu.cn/JudgeOnline/problem?id=3318

摘要:#include <iostream>using namespace std;int main (){ int n;int a[500][500],b[500][500],c[500][500];cin>>n;for (int j1=0;j1<n;j1++) for (int k1=0;k1<n;k1++) scanf("%d",&a[j1][k1]);for (int j2=0;j2<n;j2++) for (int k2=0;k2<n;k2++) scanf("%d",&b[j2][k2 阅读全文

posted @ 2011-05-06 19:26 _Clarence 阅读(117) 评论(0) 推荐(0) 编辑

PKU ACM Subsequence http://acm.pku.edu.cn/JudgeOnline/problem?id=3302

摘要:这道题郁闷了我这么久,这么就这样过了呢?是在费解感觉以前做的没有什么不妥啊!现在加的条件好像也是可有可无啊!是在想不通,还是展示一下我的水代码吧!#include <iostream>using namespace std;bool yn(char a[],int n,char b[],int m){ int si=0,pi=0; if (n>m) return false; while (pi<m&&si<n) { if (a[si]==b[pi]) { si++; pi++; } else pi++; } if(si==n) return tr 阅读全文

posted @ 2011-05-06 19:23 _Clarence 阅读(93) 评论(0) 推荐(0) 编辑

ACM PKU 3318 Matrix Multiplication http://acm.pku.edu.cn/JudgeOnline/problem?id=3318

摘要:矩阵乘法的计算这应该是一个比较节省时间的算法了吧,用一个n维数组左乘每个等式两边。改进后时间从O(n^3)变成了O(3*n^2)再加上改成了用C语言的输入函数scanf(),大大减少了输入时间。我的代码:#include<iostream>using namespace std;const int Max=501;int A[Max][Max]={0},B[Max][Max]={0},C[Max][Max]={0},AA[Max]={0},BB[Max]={0},DD[Max]={0},CC[Max]={0};int main (){int n;scanf("%d&quo 阅读全文

posted @ 2011-05-06 19:22 _Clarence 阅读(84) 评论(0) 推荐(0) 编辑

PKU ACM 1604 Just the Facts http://acm.pku.edu.cn/JudgeOnline/problem?id=1604

摘要:题目很水,代码也写得很面,没有什么好说的,基础题!#include <iostream>#include <iomanip>using namespace std;int main (){int aa,bb;while (scanf("%d",&bb)!=EOF){ aa=bb; long sum=0; long temp=1; while (aa!=1) { temp=aa*temp; if(temp%10==0) { temp=temp/10; } temp=temp%100; aa--; } while (temp%10==0) { t 阅读全文

posted @ 2011-05-06 19:22 _Clarence 阅读(104) 评论(0) 推荐(0) 编辑

pku acm 2140 Herd Sums http://acm.pku.edu.cn/JudgeOnline/problem?id=2140

摘要:2140代码短小精悍:#include<stdio.h>int main(){int cnt=0,i; long s;scanf("%ld",&s);for(i=1;(i+1)*i/2<=s;i++) if((s-(i-1)*i/2)%i==0) cnt++;printf("%d\n",cnt); return 0;} 阅读全文

posted @ 2011-05-06 19:21 _Clarence 阅读(74) 评论(0) 推荐(0) 编辑

PKU ACM Babelfish http://acm.pku.edu.cn/JudgeOnline/problem?id=2503

摘要:这道题是用map容器解决的,对于map容器我一点都不熟悉,在队友的帮助下通过了n遍的修改才被ac,虽然代码很短,但是要解决实际问题确实要注意很多问题,特别是细节问题往往让我们在某一点上卡壳;通过这道题感觉学到了不少,希望与我同级别的菜鸟选手去做一做。下面我展示我的long long time(惭愧惭愧啊!)代码,并对它作注:#include <iostream>#include <map>#include <string> //用字符串整体输入using namespace std;int main(){map<string,string> my 阅读全文

posted @ 2011-05-06 19:20 _Clarence 阅读(153) 评论(0) 推荐(0) 编辑

PKU ACM 2485 Highways http://acm.pku.edu.cn/JudgeOnline/problem?id=2485

摘要:一次性ac,算法-----prim,书中的讲解不太详细而且有错误,希望有困难的acmer看看我的文章prim;我的代码虽然说不是很精湛但也能勉强ac,有兴趣的可以看一下:#include <iostream>using namespace std;const int Max=65536;int min_edge (int a[],int n){int min=Max;int index;for (int i=0;i<n;i++){ if (a[i]!=0&&a[i]<min){min =a[i]; index=i;}}return index;}int 阅读全文

posted @ 2011-05-06 19:19 _Clarence 阅读(76) 评论(0) 推荐(0) 编辑

prim 算法

摘要:最小生成树是数据结构中图的一种重要应用,它的要求是从一个带权无向完全图中选择n-1条边并使这个图仍然连通(也即得到了一棵生成树),同时还要考虑使树的权最小。为了得到最小生成树,人们设计了很多算法,最著名的有prim算法和kruskal算法。教材中介绍了prim算法,但是讲得不够详细,理解起来比较困难,为了帮助大家更好的理解这一算法,本文对书中的内容作了进一步的细化,希望能对大家有所帮助。假设V是图中顶点的集合,E是图中边的集合,TE为最小生成树中的边的集合,则prim算法通过以下步骤可以得到最小生成树:1:初始化:U={u 0},TE={ }。此步骤设立一个只有结点u 0的结点集U和一个空的边 阅读全文

posted @ 2011-05-06 19:18 _Clarence 阅读(208) 评论(0) 推荐(0) 编辑

PKU ACM 2418 Hardwood Species http://acm.pku.edu.cn/JudgeOnline/problem?id=2418

摘要:这道题过的贼诡异,我依旧用map容器做的,在自己的电脑上根本运行不了,但是交上去就ac了,太神奇了,map容器的主要特点就是代码少但是所需的运行时间长,如果能很好的掌握map类的所有成员函数而利用它,对于很多问题的解决都会事半功倍,很多函数不懂,还得继续努力啊#include <iostream>#include <map>#include <string>using namespace std;int main(){map<string,int> mymap; //创建map类对象string str;map<string,int> 阅读全文

posted @ 2011-05-06 19:17 _Clarence 阅读(99) 评论(0) 推荐(0) 编辑

导航

统计