本以为这题n=3000,随便n方一下就能过.于是我先枚举长度len再枚举起点,不断增加新的点并删除原来的点,判断在b中的r-l+1是不是等于len即可,这个过程显然要用set维护比较方便,但是貌似卡了这个log,T了= =. 然后修改了一下思路,先枚举左端点,再不断的向有扩张,并用两个变量l和r来标记在b中的最左和最右的位置,然后如上做法即可.这样的好处在于不需要删除点的信息,因此可以直接借用变量来维护边界了.具体差别见代码吧. T的代码如下: #include <stdio.h> #incl…
题意: 就是裸的最小生成树(MST), 完全图, 边长是实数. 分析: 算是复习一下MST把 方法一: prim 复杂度(n^2) #include <bits/stdc++.h> using namespace std; ; const int inf = 0x3f3f3f3f; double G[maxn][maxn], dis[maxn]; bool vis[maxn]; int x[maxn], y[maxn]; int N; double p2pdis(int x1, int y1,…
题意: 给定一篇文章, 文章中有段落, 段落中有句子. 句子只会以'!' , '.' , '?' 结尾, 求出每段中含有与他下面同样是该段落中相同单词数最多的句子, 注意, 单词忽略大小写, 重复的单词只算一个. 题目中关键段: A topic sentence for a paragraph is the single sentence in the paragraph that best describes the paragraph’s content. For our purposes,…
虽然是xjbg的题目,但是并不很好做. 题意不难理解.读入有点麻烦.做法是先正着推每段对话的?可能是谁说的,然后反过来选择即可.正推时,其中vis数组表示谁已经被用过了,cnt表示该组当前可以选择几个,choose[i][j]表示第i段对话中,选择第j个名字作为说话者是不是可能的. 那么正推时就不难理解了,首先要这个名字没出现在他说的话中,然后1.这是第一段话,2.前一段对话中这个名字不是被选择作为说话者的,3.前一段对话选了好几个(因此我可以选择这个名字作为说话者而不重复,因为前一段对话可以选…
题意: 有n个宇航员,按照年龄划分,年龄低于平均年龄的是年轻宇航员,而年龄大于等于平均年龄的是老练的宇航员. 现在要分配他们去A,B,C三个空间站,其中A站只有老练的宇航员才能去,而B站是只有年轻的才能去,C站都可以去. 有m对宇航员相互讨厌,不能让他们在同一个空间站工作. 输出每个宇航员应分配到哪个空间站,如果没有则输出No solution. 分析: 对于每个宇航员,有两种选择,(A,B)或C.第一个选择中取A还是取B取决于年龄. 构图,2-SAT找满足题意的方案再输出即可. 代码如下: #…
我这个英语学渣又把题给翻译错了……(话说,六级差十分没有过,好心疼T T),题目中说的P和Q都是计算game的个数,我以为是出现的次数,各种wa..后来调整了以后又是各种wa,原来是double型的数据在排序的时候需要注意一下,我们需要给定一个精度,按照一定的规则来进行排序,比如当两个 rate  < eps 的时候,我们判断分母的大小,让分母大或者分子小的优先排序,这样就能尽可能地避免精度问题. 总之,题目不难,暴力枚举就可以,但是想一次AC还是挺难的. 代码如下: #include<ios…
题意:n个数,有一个起始值,按顺序从第一个开始不断循环取数,如果取完后相加小于0就变为0,最多取p个数,问你得到大于等于值g所需要的最小起始值为多少 思路:这题目爆long long爆的毫无准备,到处都有可能爆值. 显然,我们能想出,初始值越大,那么走相同步数所得到的数字就会越大(或相等),那么我们就可以用二分法每次判断是否能得到g值,大概logG * n * C的复杂度.那么现在问题就是怎么判定初始值s是否能得到g值. 我们可以求循环两次的结果差dis = tot2 - tot1,来判断每次循…
乍一看这个问题似乎是很复杂,但其实很好解决. 先处理出每个点到原点的距离和到x正半轴的角度(从x正半轴逆时针旋转的角度).然后以后者进行排序. 枚举每一个点到圆心的距离,作为半径,并找出其他到圆心距离不超过这个值的点,由于他们的角度是有序的,因此线性的找出角度差最小的满足题意的两个点即可(相当于拿一个长度为k的尺子不断地移动过去). 那么总的复杂度为O(n^2). 代码如下(注意atan2的用法): #include <stdio.h> #include <algorithm> #…
每次连线,起点和终点之间,每一个被点亮的点,这些点都能连出去两条线,因此可以增加的块数+2(1这个点除外,因为只有连出的点没有连进的点),计算起点和终点之间有几个点被点亮即可,然后1这个点特判一下.感觉,可以用线段树维护..不过这题还是有规律的,每转过一圈,两线之间的点数就会加1,然后O(n)扫一遍就行了.注意答案会爆int. 代码如下: #include <bits/stdc++.h> using namespace std; ; typedef long long ll; int n,k;…
欢迎来到"bio生物信息"的世界 有些人研究了很久的基因,都不一定知道他们研究的基因在小鼠模型上发挥什么作用--陈文燕 今天想介绍一个数据库MGI,全称Mouse Genome Informatics. 网站地址:http://www.informatics.jax.org/ 下面仔细讲一下MGI可以获得什么信息 1 基因在ENSEMBL, Havana/Vega, MGI,NCBI的可视化比较 下图是某个基因区域在几大数据库的可视化结果.可以很直接的比较小鼠和人类基因组的区别. 感兴…