搜索 G题 DescriptionFarmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point
动态规划 13题 13:最大上升子序列和查看提交统计提问总时间限制: 1000ms 内存限制: 65536kB描述一个数的序列bi,当b1 你的任务,就是对于给定的序列,求出最大上升子序列和。注意,最长的上升子序列的和不一定是最大的,比如序列(100, 1, 2, 3)的最大上升子序列和为100,而最长上升子序列为(1, 2, 3)输入输入的第一行
第十五周训练总结(二) 这一周时间挺紧张的,好几门课都结课,要准备期末考试了,大部分时间都在复习,自己对专题学习又有些松懈了。题目里有一些关于数学期望的东西,了解了一点概率的知识,但还是远远不够。L题:在每包小当家方便面里面,可能有一张卡片,也可能没有。已知有总共有n张卡片,第i张的卡片出现的可能是pi。 问收集齐所有的卡片需要吃方便面数的期望是多少。概率上说,假如买第种中卡片的几率是0.1,那么
第十五周训练总结(一) 这几天还是继续刷专题,整理了几个比较重要的题目。Z题:T组 测试样例,n表示有n次询问,m表示模数。初始化X=1。每次询问有两个数x,y。当x=1时,求当前的X乘以y的结果当x=2,求当前的X除以第y次询问的y值(数据保证当x=2时,第y次询问对应的是一个1询问)每次询问输出操作完后的X。 这道题是利用线段树维护区间乘积,因为x=2时除以第y次询问的y值,此时线段
第十四周训练总结(二) 这几天重点看了一下容斥原理。容斥原理,在高中学过一点,但是用来解题的话,还是有障碍,特别是不知道怎么写代码。容斥原理的想法就是求多个集合的并集.所以要先设计好集合。组合数学问题中,正面解决会困难,常用方法是正难则反,使用容斥原理求反向在用全集减去.将对立面的限制条件分析清楚。例如求区间互质的数的个数,则用除法等计算出一个数的倍数的方法再减去。容斥原理的常见代码写法DFS法。模板:
第十四周训练总结(一) 这几天看了排列组合的相关知识,有些知识在中学时接触过,这次又学了很多新的知识。1. 圆周排列:从n个不同的数中不重复的取出取出r个沿一圆周排列,称为一个圆周排列,所有的r-圆周排列数记为 Q(n,r)。但是圆周排列与排列的不同之处在于圆周排列首尾相邻,如a、b、c、d的4种不同排列abcd, dabc, cdab, bcda,在圆周排列中都是一个排列。2. 多重集:多重集—元素可以多次
第十三周训练总结(二) 专题二结束了这两天主要还是刷专题,今天把数论部分又重新看了一下,感觉做了题之后再回头看那些知识点,理解的更深刻。又把之前做过的题目重新梳理了一下,有几个题目感觉收获挺大的,之前没有好好总结。G题:给出A,B,找出A^B,所有自然因数之和。A=(p1^a1)(p2^a2)(p3^a3)...(pn^an)。A^B=(p1^(a1*B))(p2^(a2*b))...(pn^(an*B)),当只
第十三周训练总结(一) 这几天主要还是刷专题,又看了几篇博客。数论主要是用几个重要的公式来解决相关问题,如中国剩余定理、欧拉函数、最大公约数、快速幂算法、求被除数相对于的模的逆元等。虽然主干的原理算法并不是很多,但是相关的小性质及小原理很琐碎,题目主要是靠各种数论相关的知识点进行推导,推导出公式来,题目就迎然而解了。昨天去图书馆借了书,接下来也要抓紧看,把知识系统化。昨天的练习赛难度还是挺大的,只出了D题。题意:
第十二周训练总结(二) 这几天做题有题目和欧拉函数有关,又看了一下欧拉函数相关内容还有几个在题目中遇到的新概念。 原根和指数 设h为一整数,n为正整数,(h,n)=1,适合h^l=1(mod n)的最小正整数l叫做h对模n的次数。如果l=φ(n),此时h称为模n的原根欧拉函数:在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。费马小定理:是数论中的一个重要定理,其内容为:假如p是质数,且
第十二周训练总结(一) 这周进行了期中总结,听了其他人的总结后,回来又反思了自己这段时间的表现,想了挺多的...... 昨天练习赛第一题,是个找规律的题目。求出能把2.3.5.7整除的数,前提是输出该数的位数,并且是最小的。 这个题主要是找到他的周期,n==1||n==输出-1,至少210.n==3 210.后面以六个数为周期。这两天又重新看了一下中国剩余定理,因为做题时遇到这块内容,感觉很吃力。
第十一周训练总结(一) 昨天训练赛比起前两场难度低了一些,算法涉及到的少了。出了三道题。A题:任意选择起点和终点,要求遍历标号为 1 ~ n 的学校,从学校 i 到达学校 j 的花费为 (i+j)%(n+1)。求遍历所有学校的最小费用。根据 (i+j) % (n+1) 可以得出:1→n 费用为 0,2→n−1 费用为 0,3→n−2 费用为 0,因此,遵循下列路径的走法将是最小费用 1→n→2→n−1→.
第十周训练总结(二) 这几天主要看了中国剩余定理:代码表述:1. int CRT(int a[],int m[],int n) 2. { 3. int M = 1; 4. int ans = 0; 5. for(int i=1; i6. M *= m[i]; 7. for(int i=1; i8. { 9.
第十周训练总结(一) 这几天看的数论内容有大整数分解问题、大数k次方前x位数据高精度问题。还解了几个VJ上的题目。X题:题意:对给定的n,输出1~n的所有的不同数字的数对的gcd的和。思路:以10为例,与之互素的有φ(10)=4个(1,3,7,9),与之gcd=2的有φ(10/2)=4个(2,4,6,8),与之gcd=5的有φ(10/5)=1个(5)这样,10提供的G值就是5*φ(2)+2*φ(5)
第九周训练总结(二) 数论的题目,连着看了好几个都没有思路,感觉题目和看的课件没多大联系。后来有同学建了个专门讨论数论题目的群,哪个题比较容易,有思路就会一起分享,才勉强做了两个。 W题:题意: 给出a,b两个数的最大公约数gcd 和 最小共倍数lcm, 现在要你求出a,b, 并且a是最小的. (a解题思路:1. 求最小共倍数的时候是: lcm(a,b) = (a*b)/gcd(a,b) ==>
第九周训练总结(一) 昨天晚上打的比赛,出了两道题。A题:题目大意,有三个房子,一开始你在第一个房子里,第一个房子与第二个房子的距离为a,和第三个的距离为b,第二个房子和第三个的距离是c。现在有t个单位的时间,第一时刻你在第一个房子吃饭,每个时刻你要到另一个房子里去吃东西,想当然,作为一个单纯的吃货,当然是多吃少走咯,所以他每次走最短的路径。问要走的最小距离。这个题直接暴力解决,因为第一题打卡感觉不需要用算
第八周训练总结(二) 因为这次的课件我是从后往前看的,之前先看了最后的模线性方程,现在又回头看了前面的内容。先看了一些常用的对数据处理的相关库函数。int abs(int i) 返回整型参数i的绝对值 double cabs(struct complex znum) 返回复数znum的绝对值 double fabs(double x) 返回双精度参数x的绝对值 long labs(long n)
第八周训练总结(一) 这周开始新的内容了,我选的是数论的内容。 数论的部分内容在专业课学习过,原以为理解起来会比较容易,还是自己想的太简单,学的知识还是太浅。比如整除的规律这部分,之前只学习过被0、1、2、3、5整除的情况,这次的课件上扩展到了两位数甚至三位数,看完之后一时还接受不了,然后经常打开手机看看,才记了差不多。到后面的模线性方程,也被卡住了,慢慢地了解了它的解题步骤:(1)求 d=g
第七周训练总结(二) 这周末时间比较充裕,有时间复习专业课,也有时间昨ACM。这几天主要还是做题,因为马上要截止,所以比较积极。I题:题意:给你一个序列,有两个操作,1是将区间[a,b]内满足 (i - a) % k == 0的位置加上c,2是查询a位置的数。解题思路:因为k比较小,所以可以对于每一个k建立一个树状数组,这样还不够,无法确定应该向哪个位置加数,再加一维表示模k的余数,这样建立就行了。对于更新
第七周训练总结(一) 这两天时间比较多,做了几道树状数组的题目。P题:题意:一群牛参加完牛的节日后都有了不同程度的耳聋,第i头牛听见别人的讲话,别人的音量必须大于v[i],当两头牛i,j交流的时候,交流的最小声音为max{v[i],v[j]}*他们之间的距离。现在有n头牛,求他们之间两两交流最少要的音量和。解题思路:首先将这n头牛按照v值从小到大排序(后面说的排在谁的前面,都是基于这个排序)。这样,排在后面