1537:见前几篇。

1627:题意:给定n,m的网格(10^5),初始状态为(1,1),你每次可以瞬移到右下方(不可以同行同列逗留)任何一个方格里,求移动到n,m的方案数。

一句话题解:首先很容易想到n^2的DP,不过实际上没必要,我们枚举走了几步,然后插板法看n和m分别分解为i个数的方案数,乘起来就好,也就是求这个式子(默认n小于m)

$ \sum\limits_{i = 1}^n {\left( \begin{array}{l}n - 1\\i - 1\end{array} \right)} \left( \begin{array}{l}m - 1\\i - 1\end{array} \right) $
1678:题意:给定一个序列(10^5),给定两个操作:单点修改和查询。查询时给定一个i,求出所有与i互质的下标对应的值的总和。

题解:正难则反,我们可以考虑求出不互质的总和,然后取补集,把每个数的值统计到自己的因子上,修改的时候改就可以了,查询的时候容斥一下,考虑到最多只有6 个不同的质因子,2^6完全可以接受。

1711:题意:给定序列(10^5),求出所有区间平均数中第k大的平均数。

题解:二分答案,然后统计有多少个区间满足,统计方法是:我们知道一个区间的平均数可以表示为  $ \frac{{sum[i] - sum[j]}}{{i - j}} $

我们要统计多少个i,j(j<i)满足  $ \frac{{sum[i] - sum[j]}}{{i - j}} \ge mid $

变形一下  $ sum[i] - mid * i \ge sum[j] - mid * j $

也就是每个位置都有一个值sum[i]-i*mid,把这个东西离散化之后我们实际上要求的就是逆序对个数,这个可以树状数组。

总复杂度O(nlognlogn)

1836:题意:m天n个东西,每天等概率选一个东西,求m天后个数期望。

题解:不知道说什么了。。简单dp

1766:传送门

1616:题意:给定n个数,他们属于一个集合,集合的性质为:若X,Y属于集合,那么gcd(X,Y)也属于这个集合。求集合最小个数。值域范围1e6

题解:对于每一个数我们求出对应的fi,fi定义为有多少个该数的倍数存在于集合当中。那么对于一个数,如果它的倍数中没有fi与自己的fi相等,说明这个数一定存在于集合中。统计出来即可。复杂度O(nln n)。

1476:题意:给定一个括号序列,其中有“?“”作为通配符,但是重定位会付出相应的代价,求最小代价使得序列合法。

题解:首先n^2dp很好想。但是可以更优。先强行把所有通配符定位成右括弧,然后左括弧为+1,右括弧为-1,算前缀和记为S,当前缀和为负数时,我们在前面的通配符中找一个代价最小的变为左括弧,同时S+=2。找最小可以用优先队列来实现。复杂度O(nlogn)。

1586:题意:有3个数组,a,b,c,a给定,b由a计算,c由b计算,计算规则为:某个下标的值为所有下标为其因数的数相加。有修改操作和查询操作,修改随机。范围1e5。

题解:既然是数据随机那么完全就可以乱搞了。。不赘述了

1463:题意:给定两个长度为n的数列A 、B,一个有m个元素的集合K,询问Q次,每次询问[l,r],输出区间内满足|Bi-Bj|∈K 的最大Ai+Aj

数据约定:n,Q<=100000,m <= 10,0<=A[i]<=1000000000,1<=B[i]<=n,1<=K[i]<=n,保证B[i]互不相等。
题解:考虑离线,将区间排序后依次处理。我们每个位置维护一个fi,表示以这个位置开头,以当前处理位置结尾的这个区间内的答案。每当加入一个数后,枚举集合里的差值,去找对应的数,如果满足要求就区间更新fi,对于询问区间查询最大值就可以了。
1540:傻逼贪心,懒得写了。。
1610:传送门
1040:传送门
1020:基础dp。
1028:fft板子。
1259:插板法。
1225:传送门
1262:题意描述不是很清楚,总之就是求一个欧拉函数。
1189:传送门
1158:先预处理出每个位置往右最长能连续多少,然后对于每一列维护一个单调递增的单调栈。复杂度O(n^2)。
1500:题意:给定一棵树(10^5),点被黑白染色。要求将树划分成若干个部分使得每个部分恰好有一个黑点,求划分方案数。
题解:典型树dp,定义状态dp[i][0/1]表示以这个点为根的子树目前没有被切掉的部分是否有黑色,然后转移就好了。时间复杂度O(n)。
1622:傻逼快速幂,不知道这题为什么会在5级算法里。。、
1530:题意:给定m个方块,现在A和B要拆方块,满足的条件为不能破坏稳定结构。每个方块有编号,按照拆的顺序将编号排序形成一个m进制数,A和B轮流拆,但A要最大化最后的数,B要最小化,求输出这个最终的数。
题解:拆卸关系其实是个拓扑图,按着关系贪心拆就好了,随便拿个集合搞搞就可以了。
1533:传送门
1593:题意:给定一个环,每个点之间有距离,每个点有权值,给定询问,每次给定一个区间,求出区间中最大子段和,最大子段和定义为2(hi+hj)+dis(i,j)最大,其中h为点权,dis为距离。
题解:断环成链,搞一棵线段树,维护最大区间子段和,最大前缀和,最大后缀和即可。
1140:题意:给定3个N*N的矩阵A,B,C,判断A*B==C?
题解:老实做的话会超时。我们多构建几个1*N的随机矩阵,然后拿去乘,再看是否相等就好了。这样复杂度降为O(N^2)。
1492:题意:给定一个数轴区间,从里面你可以选择不多于k个不同的数,求出一种方案使得取出来的异或和最小。
题解:这题就是个讨论题。其他情况都很简单,只剩下k=3能不能凑出0的情况了。首先,最高位肯定要有两个1,然后我们看第二位。
情况1:11|10|01 这说明只要区间里有形如[01....,11....]的就可以。情况2:11|11|00 这说明要[00....,11....]。所以我们只要满足情况一就好了。
其他情况不再赘述。
1128:二分板子。。
1120:一个卡特兰数。。要用Lucas。
1125:贪心。要么拿所有不在目标位置中最小的那个机器依次换,要么找所有机器最小的那个依次换最后换回去。
1513:传送门
1668:简单dp加矩阵快速幂优化。。
1495:双指针搞搞就好了。。还以为时间卡这么紧是要干嘛呢。。
1525:传送门
1196:传送门
1613:传送门
1451:题意:给定2000个点,求有多少个组点可以围成面积不为0的三角形。
题解:枚举每个点作为原点,其他点按照斜率排序就可把共线的问题解决了。统计答案后/3就是最终答案了。
1394:离散化加树状数组。
1403:差分一下就好了。
1681:传送门
1452:贪心,所以括号只会在*旁边,而*只有15个,随便瞎搞就好了。
1437:单调队列,其实就是滑动窗口。
1354:简单背包。用map优化下状态。
1429:首先,长宽独立,所以分别考虑,问题等价于给两个数,可以分别操作,求最小操作次数使得两者相等。
然后,我们约掉gcd后质因数分解。此时一定只能有2、3,不然无解。然后就加加减减就好了。
1425:记忆化搜索。对于一个数,我们分成两次搜索:?0000...和0????...。
1376:树dp+贪心。从叶子往上走,能不放就不放,实在不行放一个。具体的就是dp[i]表示i节点能向上管辖的范围。如果为负并且子树里的最大值也救不了就说明需要额外派人来管。root为负需要多加一个。
1424:简单树dp。
1421:感觉自己智商被压制了。。
首先暴力n^2肯定T。我一直想的值大的那个去找小的。为什么思路不能反过来。。。
考虑小的找大的。那大的肯定是越靠近小的倍数越好了。所以这么枚举复杂度就是O(nlognlogn)。
1346:被坑了。。也怪自己不喜欢动笔。。
a[i][j]=a[i-1][j]^a[i][j-1]=a[i-2][j]^a[i-1][j-1]^a[i-1][j-1]^a[i][j-2]=a[i-2][j-2]
那么a[i][j]=a[i-131072][j-131072]。然后就是记忆化搜索。
我好傻逼啊!!!
1431:可以,这很有规律。最近几道题我感觉我想疯狂骂自己,你个傻逼!
考虑下标加上权值不变。所以排序之后检验就好了。
1349:离线+单调栈。

51nod 80分算法题的更多相关文章

  1. 51nod 40分算法题

    1737:见前2篇随笔. 1677:题意:给定一个n节点树,一个整数k,n个节点任意选k个出来,对于每一种选择方案,ans累加上使这k个点联通的最小边数,输出ans%1e9+7. 一句话题解:考虑每一 ...

  2. 51nod图论题解(4级,5级算法题)

    51nod图论题解(4级,5级算法题) 1805 小树 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 她发现她的树的点上都有一个标号(从1到n),这些树都在空 ...

  3. 根据考试成绩输出对应的礼物,90分以上爸爸给买电脑,80分以上爸爸给买手机, 60分以上爸爸请吃一顿大餐,60分以下爸爸给买学习资料。 要求:该题使用多重if完成

    package com.Summer_0417.cn; import java.util.Scanner; /** * @author Summer * 根据考试成绩输出对应的礼物, * 90分以上爸 ...

  4. 51nod 1105 二分好题

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1105 1105 第K大的数 基准时间限制:1 秒 空间限制:131072 ...

  5. 解决一道leetcode算法题的曲折过程及引发的思考

    写在前面 本题实际解题过程是 从 40秒 --> 24秒 -->1.5秒 --> 715ms --> 320ms --> 48ms --> 36ms --> ...

  6. 经典算法题每日演练——第十七题 Dijkstra算法

    原文:经典算法题每日演练--第十七题 Dijkstra算法 或许在生活中,经常会碰到针对某一个问题,在众多的限制条件下,如何去寻找一个最优解?可能大家想到了很多诸如“线性规划”,“动态规划” 这些经典 ...

  7. 经典算法题每日演练——第十六题 Kruskal算法

    原文:经典算法题每日演练--第十六题 Kruskal算法 这篇我们看看第二种生成树的Kruskal算法,这个算法的魅力在于我们可以打一下算法和数据结构的组合拳,很有意思的. 一:思想 若存在M={0, ...

  8. 经典算法题每日演练——第十四题 Prim算法

    原文:经典算法题每日演练--第十四题 Prim算法 图论在数据结构中是非常有趣而复杂的,作为web码农的我,在实际开发中一直没有找到它的使用场景,不像树那样的频繁使用,不过还是准备 仔细的把图论全部过 ...

  9. 算法题C#

    几个大公司(IBM.MicroSoft and so on)面试经典数据结构与算法题C#解答 1.链表反转 我想到了两种比较简单的方法 第一种是需要开一个新的链表,将原链表的元素从后到前的插入到新链表 ...

随机推荐

  1. Android开发之短信验证码示例

    在说Android中的短信验证码这个知识点前,我们首先来了解下聚合数据 聚合数据介绍 聚合数据是一家国内最大的基础数据API提供商,专业从事互联网数据服务.免费提供从天气查询.空气质量.地图坐标到金融 ...

  2. 【Excle数据透视表】如何复制数据透视表

    左边创建完数据透视表,右边是复制过去的部分数据透视表---显示数值状态的内容,为什么复制过来的不是数据透视表呢? 解决办法: 全选定数据透视表再进行粘贴复制 步骤一 单击数据透视表任意单元格→分析→操 ...

  3. .NET C#生成随机颜色,可以控制亮度,生成暗色或者亮色 基于YUV模式判断颜色明亮度

    .NET C#生成随机颜色,可以控制亮度,生成暗色或者亮色 基于YUV模式判断颜色明亮度   随机颜色在日常开发中很常用到,有时候要控制颜色明亮度,比如在白色背景网页上的随机颜色,一般要求颜色稍微暗一 ...

  4. 基于mysql本身的主从复制

    mysql的主从复制在我理解而言就是一个主数据库进行增删改操作的时候会自动将数据写入与之关联的从数据库中.这个从数据库可以是一个也可以是多个.(刚开始理解的时候觉得是同一个数据库服务下的不同的data ...

  5. cocos2dx中使用iconv转码(win32,iOS,Android)

    首先贴下环境:Win7 64, NDK r8e, libiconv-1.14, cygwin 一 Win32环境配置 Cocos2D-X自带有win32上的iconv库.仅仅须要配置一下就可以使用. ...

  6. 自己定义ProgressDialog载入图片

    使用系统载入框 mDialog = new ProgressDialog(this); mDialog.setCancelable(true);//能否够被取消 mDialog.setMessage( ...

  7. 华为p20:拍美景,听讲解,旅行更智能

    华为P20轰轰烈烈地上市了,本来对手机并不感冒的我,看到身边的好友换了P20,不禁感慨:这个月的活又要白干了,全部都要上交给华为,因为这款手机完全戳中了旅游爱好者的痛点. 痛点一:丢弃笨重的单反,手机 ...

  8. 【TensorFlow-windows】(七) CNN之VGG-net的测试

    主要内容: 1.CNN之VGG-net的测试 2.该实现中的函数总结 平台: 1.windows 10 64位 2.Anaconda3-4.2.0-Windows-x86_64.exe (当时TF还不 ...

  9. ssh无密码登陆屌丝指南

    [0]写在前面 由于ssh 实现的是免密码登陆,大致步骤是: 0.1) client通过ssh登陆到server: 0.2) server检查家目录下的.ssh文件, 并发送公钥文件 authoriz ...

  10. Python 深入剖析SocketServer模块(二)(V2.7.11)

    五.Mix-In混合类 昨天介绍了BaseServer和BaseRequestHandler两个基类,它们只用与派生,所以贴了它们派生的子类代码. 今天介绍两个混合类,ForkingMix-In 和 ...