ACM算法
qq_36950065
这个作者很懒,什么都没留下…
展开
-
整数划分
描述将正整数n 表示成一系列正整数之和,n=n1+n2+…+nk, 其中n1>=n2>=…>=nk>=1 ,k>=1 。正整数n 的这种表示称为正整数n 的划分。正整数n 的不同的划分个数称为正整数n 的划分数。输入标准的输入包含若干组测试数据。每组测试数据是一个整数N(0 输出对于每组测试数据,输出N的划分数。样例输入5样例输出7原创 2017-02-14 08:33:04 · 343 阅读 · 0 评论 -
C++map实现
map最基本的构造函数mapmapstring; mapmapint;mapmapstring; mapmapchar;mapmapchar; mapmapint;//这几个是最基本的,当然还有其它的构造函数的12345671234567向map中添加数据使用insert方法来添加数据mapmaplive;1. maplive.insert(pai原创 2017-03-15 19:51:28 · 4241 阅读 · 0 评论 -
深度优先与广度优先
BFS与DFS的讨论:BFS:这是一种基于队列这种数据结构的搜索方式,它的特点是由每一个状态可以扩展出许多状态,然后再以此扩展,直到找到目标状态或者队列中头尾指针相遇,即队列中所有状态都已处理完毕。DFS:基于递归的搜索方式,它的特点是由一个状态拓展一个状态,然后不停拓展,直到找到目标或者无法继续拓展结束一个状态的递归。 优缺点:BFS:对于解决最短或最少问题特别有效,而且寻原创 2017-03-15 21:03:19 · 283 阅读 · 0 评论 -
全排列递归算法
2 *算法思想:简单地说:就是第一个数分别以后面的数进行交换 3 *E.g:E = (a , b , c),则 prem(E)= a.perm(b,c)+ b.perm(a,c)+ c.perm(a,b) 4 *然后a.perm(b,c)= ab.perm(c)+ ac.perm(b)= abc + acb.依次递归进行。 5 *去掉重复符号的全排列:在交换之前可以先判断两个符号是否相同,原创 2017-01-30 18:56:35 · 351 阅读 · 0 评论 -
天梯赛n个数求和
#include long long gcd(long long a,long long b){ if(a == 0) return 0; else return (b == 0) ? a : gcd(b, a % b);}int main(){ int N; long long lcp; long long a,b,c,d; int i = 1;原创 2017-03-16 15:24:49 · 279 阅读 · 0 评论 -
万能头文件
最近在打cf时赛后翻阅别人的代码总是会发现一个陌生而奇怪的头文件#include奇怪之处就在于基本上所有的代码只要用了这个头文件就不再写其他头文件了。百度过后仿佛打开了新世界的大门,头文件居然还可以这样用!!!#include包含了目前c++所包含的所有头文件!!!!从此开启开挂般的人生啊!! 现在再看下面这一堆乱七八糟的头文件显得莫名的冗杂: 1 #inclu原创 2017-03-16 15:43:23 · 1154 阅读 · 0 评论 -
栈的应用
Given a stack which can keep MMM numbers at most. Push NNN numbers in the order of 1, 2, 3, ..., NNN and pop randomly. You are supposed to tell if a given sequence of numbers is a possible pop s原创 2017-03-16 21:50:42 · 247 阅读 · 0 评论 -
ACM动态规划训练
题目描述尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成。尼克的一个工作日为N分钟,从第一分钟开始到第N分钟结束。当尼克到达单位后他就开始干活。如果在同一时刻有多个任务需要完成,尼克可以任选其中的一个来做,而其余的则由他的同事完成,反之如果只有一个任务,则该任务必需由尼克去完成,假如某些任务开始时原创 2017-05-13 13:38:52 · 434 阅读 · 0 评论 -
pta试题训练
11-散列1 电话聊天狂人 (25分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。输入格式:输入首先给出正整数NNN(≤105\le 10^5≤105),为通话记录条数。随后NNN行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。输出格式:在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这原创 2017-05-15 20:38:05 · 1482 阅读 · 0 评论 -
天梯赛抢红包与PAT judge
#include#include#includeusing namespace std;struct Person{ int name;//编号 int num;// 抢到的红包数 int sum;//抢到的红包个数 }p[10001]; bool cmp(Person p1,Person p2){ if(p1.sum!=p2.sum){ return p1.sum>原创 2017-03-13 19:39:43 · 326 阅读 · 0 评论 -
兰州大学程序设计比赛反思
题目描述 ACM大家庭有n个同学。对于每个同学,都有对应的ACM能力值a[i](1<=i<=n)。当有两个同学的ACM能力值相差不超过k时,他们互为对方的ACM互助伙伴。请问一下ACM大家庭里有多少对ACM互助伙伴((A,B),(B,A)被视为同一对)。输入描述:第1行输入两个整数n,k(n<=100000)。本题限制k<=1。提示,k可以为0。...原创 2018-06-10 19:27:15 · 660 阅读 · 0 评论 -
二叉树问题综合求解
6 玩转二叉树 (25分)给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(\le≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。输出格式:在一行原创 2017-03-24 13:24:12 · 849 阅读 · 0 评论 -
红黑
1:红与黑查看提交统计提问总时间限制: 1000ms 内存限制: 65536kB 描述有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。输入包括多个数据集合。每个数据集合的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。W和H都原创 2017-03-15 15:30:41 · 365 阅读 · 0 评论 -
天梯赛决赛题目
题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。输入格式:输入在一行给出A和B,其间以空格分开。问题是A和B不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。注意:我们把输入中出现的第1个空格认为是A和B的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。输出原创 2017-03-18 19:12:19 · 982 阅读 · 0 评论 -
ACMzipper
Given three strings, you are to determine whether the third string can be formed by combining the characters in the first two strings. The first two strings can be mixed arbitrarily, but each must sta原创 2017-02-22 22:54:00 · 232 阅读 · 0 评论 -
2的幂次方表示题解
任何一个正整数都可以用2的幂次方表示。例如: 137=27+23+20 同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为: 2(7)+2(3)+2(0) 进一步:7=22+2+20(21用2表示) 3=2+20 所以最后137可表示为: 2(2(2)+2+2(0))+2(2+2(0))+2(0) 又如: 13原创 2017-01-31 13:15:48 · 1950 阅读 · 2 评论 -
时钟问题
有9个时钟,排成一个3*3的矩阵。|-------| |-------| |-------|| | | | | | ||---O | |---O | | O || | | | | ||-------| |-------| |------原创 2017-01-27 12:35:45 · 479 阅读 · 0 评论 -
密码锁问题
描述有一种特殊的二进制密码锁,由n个相连的按钮组成(n然而让人头疼的是,当你按一个按钮时,跟它相邻的两个按钮状态也会反转。当然,如果你按的是最左或者最右边的按钮,该按钮只会影响到跟它相邻的一个按钮。当前密码锁状态已知,需要解决的问题是,你至少需要按多少次按钮,才能将密码锁转变为所期望的目标状态。输入两行,给出两个由0、1组成的等长字符串,表示当前/目标密码锁状态,其中0代表凹,1代原创 2017-01-23 21:03:56 · 898 阅读 · 0 评论 -
复杂的整数划分
描述将正整数n 表示成一系列正整数之和,n=n1+n2+…+nk, 其中n1>=n2>=…>=nk>=1 ,k>=1 。正整数n 的这种表示称为正整数n 的划分。输入标准的输入包含若干组测试数据。每组测试数据是一行输入数据,包括两个整数N 和 K。 (0 输出对于每组测试数据,输出以下三行数据:第一行: N划分成K个正整数之和的划分数目第二行: N划分成若干个不同正整数之和原创 2017-03-09 22:35:40 · 330 阅读 · 0 评论 -
C语言天梯赛储备函数
C与C++:char *strchr(const char* _Str,char _Val)char *strchr(char* _Str,char _Ch)头文件:#include 功能:查找字符串_Str中首次出现字符_Val的位置说明:返回首次出现_Val的位置的指针,返回的地址是被查找字符串指针开始的第一个与Val相同字符的指针,如果Str中不存在Val则返回NULL。原创 2017-03-13 16:57:40 · 633 阅读 · 0 评论 -
并查集算法
并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判转载 2017-03-12 21:38:05 · 229 阅读 · 0 评论 -
搜索问题综合
喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤。呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的。原来它是彝族先民用来求援呼救的“讯号”,慢慢地人们在生活实践中发现了它的实用价值,便把它作为一种交流工具世代传袭使用。(图文摘自:http://news.xrxxw.com/newsshow-8018.html)原创 2017-03-23 17:34:45 · 371 阅读 · 0 评论 -
程序设计预算法二期末考试
1:大盗阿福查看提交统计提问总时间限制: 1000ms 内存限制: 65536kB 描述阿福是一名经验丰富的大盗。趁着月黑风高,阿福打算今晚洗劫一条街上的店铺。这条街上一共有 N 家店铺,每家店中都有一些现金。阿福事先调查得知,只有当他同时洗劫了两家相邻的店铺时,街上的报警系统才会启动,然后警察就会蜂拥而至。作为一向谨慎作案的大盗,阿福不原创 2017-04-09 15:03:44 · 491 阅读 · 0 评论 -
fill函数与编程无穷大
编程中无穷大的设定很多人可能设为0x7fffffff,这个数的确是32-bit int的最大值,符号位为0,其他的都是1但在很多情况下,0x7fffffff会出现错误,比如溢出,这样两个无穷大数相加会变成负数,还有如在做dijkstra求最短路时,当做松弛操作,判断if (d[u]+w[u][v]为了尽量避免以上的错误,我们可以改变无穷大的设定,可以将0x3f3f3f3f设为无穷大,0原创 2017-03-24 09:21:53 · 352 阅读 · 0 评论 -
一些路径问题
#include #include using namespace std;int maze[7][7], pre[30], vis[30];int dir[4][2] = {{1,0},{-1,0},{0,1},{0,-1}};bool isLeagal ( int r, int c ){ if ( r 4 || c > 4 ) return false; if ( m原创 2017-03-23 14:45:07 · 453 阅读 · 0 评论 -
ACM-ICPC2018北京站游记
作为计科弱校的acm小白,居然能在大学生涯中有一次acm经历,也要非常感谢学校以及这次机会,这段时间也算收获了一些知识和编程能力。周五中午从学校出发,辗转校车,公交,火车,在火车上还在讨论最近的试题,然后发现很多不会不熟的东西,然后就在担心比赛暴零,周六上午到达帝都,进北大转了一圈,方方面面都能感觉的到巨大的差距,从教学楼到未名湖,安检以及他们的国际化和勤奋的学生,然后热身赛正好撞了...原创 2018-11-12 23:15:41 · 391 阅读 · 0 评论