-----基础算法-----
tshoigyr
这个作者很懒,什么都没留下…
展开
-
NOIP模拟(20171031)T1 机器清洁工
没什么好说的,矩阵前缀和裸题 代码#include<bits/stdc++.h> using namespace std; inline int getint(){ int x=0,p=1; char c=getchar(); while(!isdigit(c)){ if(c=='-')p=-1; c=getchar(); }原创 2017-11-02 16:19:02 · 247 阅读 · 1 评论 -
NOIP模拟(20171030)T1 比赛
给定nn个人的能力值ai(1≤i≤n){a_i}{(1\leq i\leq n)},每轮比赛任选两个人i,ji,j,若∣ai−aj∣>k\mid a_i-a_j\mid>k,则能力值大的人获胜,否则,两人均有可能获胜。每轮比赛完后,失败方淘汰。n−1n-1轮比赛完后,剩下的人获得总冠军。求一开始哪些人可能获得总冠军。 题解:将ai(1≤i≤n){a_i}{(1\leq i\leq n)}从小到大排原创 2017-11-01 08:20:16 · 305 阅读 · 1 评论 -
NOIP模拟(20171026)T1 抄代码
题意——我不知道,我不知道,我不知道 反正判判就行了 怎么判?不知道不知道不知道……#include<bits/stdc++.h> using namespace std; inline int getint(){ int x=0,p=1; char c=getchar(); while(!isdigit(c)){ if(c=='-')p=-1;原创 2017-10-26 15:55:43 · 244 阅读 · 1 评论 -
NOIP模拟(20171023)T1 fibonacci
求一个数是否为两个fibonacci数的乘积 数据组数T≤100\leq100,n≤1000,000,000\leq1000,000,000 好吧小于等于1e9的fibonacci数只有45个,暴力即可#include<bits/stdc++.h> using namespace std; inline long long getint(){ int x=0,p=1; char原创 2017-10-23 19:35:06 · 282 阅读 · 4 评论 -
NOIP模拟(20171102)T1 活动安排
给定n个区间,求最多取多少区间使这些区间无交集 贪心:取能塞下区间中结束时间最早的即可 证明什么的,算法导论上找#include<bits/stdc++.h> #define FE "arrange" using namespace std; inline int getint(){ int x=0,p=1; char c=getchar(); while(!isdigi原创 2017-11-08 09:16:59 · 264 阅读 · 1 评论 -
NOIP模拟(20171023)T2 一样远
求树上离给定两点a,b一样远的点的个数 点数n≤105n\leq10^5,询问数m≤105m\leq10^5 首先,如果a=b,那么n个点都是答案 如果a≠\neqb,将从a到b的链提出来,易得链中点及其子树到a、b距离均相等 显然,我们不能暴力跳树高找中点,考虑倍增 注意当lca是链中点时lca的祖先节点及祖先节点的其他子树上的点也是答案 复杂度O(nlog2n+mlog2n)O(nl原创 2017-10-23 20:05:00 · 356 阅读 · 2 评论 -
NOIP模拟(20171102)T2 最佳序列
给定一个序列aia_i,求区间长度在ll到rr之间的所有区间平均数的最大值 二分答案,之后将序列中每一个数减去二分的平均数,原题转换为是否存在一个区间,长度在ll到rr之间,且区间和大于0 求新的序列的前缀和,记为bib_i 则对于每一个bib_i,我们要判断在bj(i−r≤j≤i−l)b_j(i-r\leq j \leq i-l) 中有没有小于等于bib_i 的 那就是一个sliding w原创 2017-11-08 10:07:18 · 232 阅读 · 1 评论