Algorithm
文章平均质量分 57
Anglewing_nwpu
这个作者很懒,什么都没留下…
展开
-
c++格式化输入输出
cin与cout 一:标准输入函数cin 不知道说它是个函数对还是不对,它是代表标准的输入设备--键盘。他是属于流的,他的用法和流的用法是一样的。也就是:cin>>变量; 小小的说明一下,输入多个变量可以写在一行,如:cin>>x>>y>>z;这样写不是不允许,而是不好看,如果是不同的变量类型,那就更是没头没脑了。除了你,人家是不知道该输入什么的,所以,一般在输入语句的前面,我们一转载 2007-08-07 09:16:00 · 3280 阅读 · 1 评论 -
pku3224
读懂题目的意思,题目中的5场比赛都要进行,并不是5局3胜,并且a与b进行5次比赛,b与a还要进行5次比赛,这两种并不是一回事!剩下的就很简单了。源代码如下:#includeiostream>using namespace std;int score[110];int main()...{ int n,i,j,t,ind,max; cin>>n; memset(sco原创 2007-05-12 01:28:00 · 854 阅读 · 0 评论 -
pku3187
初看题目感觉一定不好做,看了别人的提示,原来这个题目数据很简单,不过想想也是N最大为10,所以采用最基本的方法,蛮力搜索就可以了。不过由于中间没细心,把一个循环的上限写错导致还是出错了,最后又仔细看了看代码才发现。对于这些题目如果不知道数据简单,还真不敢做,不过,遇到这么多次这种题目,那以后就学者大胆的尝试,不管是否成功,现试试再说。不行我们再用更好的算法。源代码: #incl原创 2007-05-12 02:22:00 · 917 阅读 · 0 评论 -
pku3117
比赛胜者得3分,败者得0分;若平局双方各的1分,给出比赛次数和每队的得分,计算至今一共平了几局.初看,感觉挺麻烦,怎么去拆分每队的得分?仔细想想,一局比赛如果分出胜负,所有队的总分加3分,否则加2分,这样只要计算所有队的总分,于比赛次数的3倍差几就是平了几次.Source:#includeusing namespace std; int main(){ char原创 2007-08-10 22:53:00 · 819 阅读 · 0 评论 -
pku1781
约瑟夫环问题,将人数循环左移一位即得结果.Source:#include#includeusing namespace std; char str[10];int t,i; int main(){ while(1) { cin>>str; if(strcmp(str,"00e0")==0)break;原创 2007-08-16 21:08:00 · 737 阅读 · 0 评论 -
pku2121
模拟题,提交时,要支持iostream同时使用long long则应选g++.Source:#include#includeusing namespace std; char word[220]="negative,zero,one,two,three,four,five,six,seven,eight,nine,ten,eleven,twelve,thirteen,f原创 2007-08-17 22:20:00 · 945 阅读 · 0 评论 -
pku2159
替换加密和移位加密不改变字符的出现频率,只要字符出现频率相同就可以确定.Source:#includeusing namespace std; char enc[150],str[150];int pe[30],ps[30],pp[150]; int main(){ int l,i; cin>>enc>>str; l=strlen(原创 2007-08-17 23:00:00 · 782 阅读 · 0 评论 -
STL-map
#include map>#include string>using namespace std;...mapstring, string> namemap;//增加。。。namemap["岳不群"]="华山派掌门人,人称君子剑";namemap["张三丰"]="武当掌门人,太极拳创始人";namemap["东方不败"]="第一高手,葵花宝典";...//查找。。if(namemap.f原创 2007-08-20 21:39:00 · 730 阅读 · 0 评论 -
2007Baidu AStar 4
4.百度的高级搜索方法你尝试过在百度上使用site inurl语法查询吗? 如果还没有的话可以试一下:) 如输入 site:www.baidu.com inurl:news 则会搜出所有在www.baidu.com站点上的包含"news"子串的url。 现在我们有一个inurl查询列表和一个url列表,你能找出所有至少被查询过一次的url吗? 输入格式 输入第一行是一个整数n,表示一共有原创 2007-05-27 17:26:00 · 1093 阅读 · 3 评论 -
经典字符串Hash函数测试
经典字符串Hash函数测试1 概述链表查找的时间效率为O(N),二分法为log2N,B+ Tree为log2N,但Hash链表查找的时间效率为O(1)。 设计高效算法往往需要使用Hash链表,常数级的查找速度是任何别的算法无法比拟的,Hash链表的构造和冲突的不同实现方法对效率当然有一定的影响,然而Hash函数是Hash链表最核心的部分,本文尝试分析一些经典软件中使用到的字符串Hash函数在执行效转载 2007-08-20 21:36:00 · 837 阅读 · 0 评论 -
pku2524
一道采用并查集的题目,长时间没练习,忘记了权重数组,直接查找更新路径,TLE了几次,发现不对,查查帮助,才明白。除了记录父节点的数组外还有有各节点权值的记录,来优化路径压缩。看来真的生疏了很多,赶快复习复习吧。Source: #includeiostream>using namespace std;int pers[50010],wei[50010];int i,j,total,m原创 2007-08-28 11:11:00 · 774 阅读 · 0 评论 -
pku3359
对于给定的一个字符串,计算其按字典序排列的全排列中以改字符串为中心的21个字符串中,每个字符串中相邻两个字符直接距离绝对值的最小值,在这21个字符串中这个最小值最大的那个。唉,不管怎么说都是这么绕,还是用原文吧:which has the largest minimum absolute distance between consecutive letters (and the first am原创 2007-08-27 21:36:00 · 833 阅读 · 0 评论 -
pku2138
给定一组单词,和一个起始单词,寻找有该单词每次添加一个字母都能构成该单词组中的某个单词,求能够成的最长的单词。采用队列实现的广搜方法,先将单词按长度排列,从起始单词的长度开始,对于每一个可能的单词放入队列,然后从长度比它大一的单词中找是否存在有它构成的,有放入序列,继续,直到队列为空。Source: #includemap>#includequeue>#includestring>原创 2007-08-27 21:54:00 · 768 阅读 · 0 评论 -
pku2526
给定平面中的若干点,判断是否存在由这些点构成的线段组中所有线段都交于一点。对于x坐标,找出最大和最小值,对应的两个点一定要构成一条线段,那么中点的x坐标就确定了,同理对于y坐标,注意这两组点不一定相同。然后对其他点,根据中点求出另一个点,查找是否在给定的点集中即可。Source: #includeiostream>#includealgorithm>#includeutility原创 2007-08-28 20:23:00 · 750 阅读 · 0 评论 -
N皇后问题
N皇后问题一、当n mod 6 != 2 且 n mod 6 != 3时,有一个解为: 2,4,6,8,...,n,1,3,5,7,...,n-1 (n为偶数) 2,4,6,8,...,n-1,1,3,5,7,...,n (n为奇数) (上面序列第i个数为ai,表示在第i行ai列放一个皇后;... 省略的序列中,相邻两数以2递增。下同)转载 2007-08-09 16:47:00 · 700 阅读 · 0 评论 -
pku3126
寻找两个四位素数的转变路径最短长度,构建一个素数表,然后采用广度优先搜索.本来害怕记录已经搜索过的数据会增加内存使用量,就没有设,结果广搜时队列容量超限,反而在添加了搜索记录表后大大减少内存使用量,看来有些是可以省的,而有些东西是不能省的!还有,在记录搜索过的数据时开始想,既然是四位数,那就将每个数-1000存储,可以省1000各存储单元,结果使用的时候忘记了,导致对出错的结果分析了N久才发现栽原创 2007-08-10 22:59:00 · 843 阅读 · 0 评论 -
pku3302
简单题,按题目要求,从前向后扫描一边,再从后向前扫描一边即可.Source:#includeusing namespace std; char s1[110],s2[110];int l1,l2; int main(){ int t,i,j; for(cin>>t;t>0;--t) { cin>>s1>>s2;原创 2007-08-07 09:17:00 · 602 阅读 · 0 评论 -
pku3299
简单的数学一元方程求解问题,分情况讨论即可.题目中给出的是3个等式,最好将其中可以直接计算的部分算出,并且将其合并为一个方程,这样不仅可以减少运行中用于相同运算的时间,还有利于更好的求解.不过,该题的一个关键点还是输入输出的处理.在使用cout.precision()时才发现它不是设定小数位数的,而是设定有效数字的位数,纠正一个错误.Source:#include#includ原创 2007-08-07 09:30:00 · 767 阅读 · 0 评论 -
pku3326
统计时间,采用栈实现.对于每一个login,直接入栈;对于logout,将栈中的对于项弹出,注意要弹出的项不一定在栈顶,这就要用一个辅助栈,将弹出项上的各项先弹出,在弹出目标后,再将他们压入栈中,同时对于弹出项用其起始时间和结束时间与当前记录中的起止时间比较,保留最长的时间段.最后查询时,根据要求的时间区间,对于要查询的人,依次检查其记录中的每一项,累计总时间即可.Source:#in原创 2007-08-07 15:59:00 · 722 阅读 · 0 评论 -
pku3327
用数组下标表示每一块的编号,对于每一次切割,只需从数组中取出对应块的长宽,然后将该块之后的所有块向前移动一个位置,即编号减1.对于取出的块,顺时针依次判断寻找切割点,然后将新生成的两块按从大到小的顺序填入数组即可.最后,统一计算各块的面积,排序后输出,OK.Source:#includeusing namespace std; int cmp(const void *a,con原创 2007-08-07 16:04:00 · 822 阅读 · 0 评论 -
pku3300
题意不难,相当于给出一组分母和一组分子,都不会为0,用他们构造出的分数按从小到大排列,对于相邻的两个数,用后一个除以前一个(即大的除以小的)的得到的数中,输出最大的即可.题意看懂了做起来不难,关键是输出要求四舍五入,输出两位小数,末尾是0也要输出(我就是栽在这里了),用C的printf相对简单,用C++的cout则复杂些,通过cout.precision(3)设置精度为两位小数,用cout.原创 2007-08-07 09:18:00 · 686 阅读 · 0 评论 -
pku3210
题目有很大的迷惑性,虽然题意不难,但是会让人感觉做起来不简单,不知从何下手,如果直接搜索判断,直觉告诉你,一定超时,怎么办,从小的数据找规律.对于偶数个硬币,如果全部相同则一定只能翻转偶数次,当只有一个与其他相反时,则必须翻转奇数次,显然两者矛盾,所以对于偶数个硬币,一定无解.对于奇数个硬币,采用逐个尝试,就会发现规律,首先,如果全部相同则一定是翻转偶数次,当只有一个不同时,又要翻转偶数次原创 2007-08-07 09:19:00 · 716 阅读 · 0 评论 -
pku3325
除去一个最大值和一个最小值,然后求和取平均.题目是这样的顺序,而我们可以先将所有数据都加起来,在加的过程中找出最大值和最小值,最后再减去即可,这样就可以通过一次输入数据的过程中完成所有操作,输入结束结果也就出来了.Source:#includeusing namespace std; int total,ma,mi,n,i,t; int main(){原创 2007-08-07 15:53:00 · 725 阅读 · 0 评论 -
pku3221
采用预处理的方法.因为结果状态只有一种,要判断某种状态到达结果状态的最少步数,如果直接做一个耗时,另一方面实现复杂.可以反向思考,我只要从结果状态搜索,每到一个状态,则该状态必然是合法状态,同时到达的步数也可以获得,并且只有一个起始状态只需搜索一边,即预处理一次即可. 接下来,就要根据题目条件分析状态的变化规则:1.若0在中心,则可以和偶数位的数字进行交换;2.若0在偶数位置,可以和前原创 2007-08-08 10:24:00 · 913 阅读 · 0 评论 -
pku3103
原来看过这道题,不知如何下手,当时也想到了对一边n等分即可,不过没敢尝试,今天看到Discuss上大家很多都是那样AC的,才动手试试,结果OK了!看来,有时候还是不用被题目本身所迷惑,题目中的两个图片的确是让人不敢小看,可是既然是解题,只要满足要求即可,每人让你作出样例的结果,不是吗?还有一点是题目中8位小数的精度要求,用cout无论怎么设置都不好统一,因为它只能直接设置精度,而不是小数位数,原创 2007-08-09 21:21:00 · 700 阅读 · 0 评论 -
pku3105
题目做的模模糊糊,是参照他人的解题报告做的,其中有些公式还是不太明白.不过,发现移位运算(>)比乘除优先级低,位运算(&)比比较运算符(==)要低. 参考的解题报告:题目意思:如果有两个随机数生成器A,B(生成数都小于输入值)例如n=3;A 000 001 010B 000 001 010两者再随机异或生成的3*3=9个数进行期望计算...计算结果:*** 000 001 010000原创 2007-08-09 22:56:00 · 712 阅读 · 0 评论 -
pku3331
统计n的阶乘中某个数字的出现次数,没有好的办法只好硬算,可是采用C++时数据溢出导致结果错误,这是想到Java,就求助于Java的BigInteger了,不错,并没有TLE.Source:import java.math.BigInteger;import java.util.Scanner; public class Main { /**原创 2007-08-10 23:07:00 · 1034 阅读 · 1 评论 -
pku3239
N皇后问题Source://一、当n mod 6 != 2 且 n mod 6 != 3时,有一个解为:////2,4,6,8,...,n,1,3,5,7,...,n-1 (n为偶数)////2,4,6,8,...,n-1,1,3,5,7,...,n (n为奇数)////(上面序列第i个数为ai,表示在第i行ai列放一个皇后;... 省略的序原创 2007-08-09 16:52:00 · 980 阅读 · 0 评论 -
pku3125
用数组循环模拟队列,将数据备份一份并排序,便于判断队列中的首元素是否是最大的,即是否可以输出.Source:#include#includeusing namespace std; int job[110],pri[110]; int main(){ int t,n,p,i,j; for(cin>>t;t>0;--t)原创 2007-08-09 23:19:00 · 1060 阅读 · 0 评论 -
pku2527
多项式除法的模拟计算。题目不难,可是载在了最后一个循环的边界条件上,对于如下数据:0 00开始没有判断最后一项输出时j的值,当用上面数据时j为-1,coe[j]显然就错了,可是在eclipse下自己测试时它的输出结果居然是0,也没有报错,我用的是(g++),唉,它的容错性也太好了吧!Source: #includeiostream>using namespace std原创 2007-08-28 21:02:00 · 827 阅读 · 1 评论