
提高组
nzymeteor
这个作者很懒,什么都没留下…
展开
-
【NOIP模拟赛】咖啡供应
题解:先跑遍dfs从深度最高点出发任何修改他的父亲节点,向上走就减减,那么发现减到-K那么显然必须放一个coffee,最后再特判一下1为不为-或者没走到过#include<bits/stdc++.h>using namespace std;long long read(){ long long num=0; char ch=getchar(); while(ch>...原创 2019-10-08 21:13:05 · 310 阅读 · 0 评论 -
【NOIP模拟赛】刺客信条(AC)
题解 :枚举主教的攻击范围,再用并查集看两个主教中有没有路可以走,因为攻击范围必然是个圆#include<bits/stdc++.h>using namespace std;int x,y,n;int a[2005],b[2005];struct oo{ int u,v; long long l;}edge[2005*2005];int cnt;int fa[...原创 2019-09-24 21:04:57 · 215 阅读 · 0 评论 -
【NOIP模拟赛】最大序列
题解 #:这道题需要的是字典序最大那么显然可以知道对于一个点i它后面的最大点可以直接获取,然后将i赋值为那个点坐标,如果后面最大都不如i-1大那么就往前找i=i-1;#include<bits/stdc++.h>using namespace std;int a[200005];int vis[200005];bool out[200005];queue<int...原创 2019-09-24 20:58:05 · 149 阅读 · 0 评论 -
【NOIP模拟赛】逛公园
题解:这道题就很奇妙了啊,据说正解是什么分块来着,不过我贪心算一下贡献就过了。只需要算区间中每个点对答案的贡献就行了#include<bits/stdc++.h>using namespace std;int n,q;int d[40005];int l[40005];int read(){ int num=0,f=1; char ch=getchar(); wh...原创 2019-08-29 20:39:07 · 260 阅读 · 1 评论 -
【NOIP模拟赛】列队
这道题就很玄学了,我们将行看做一群点集,把列又看做一群点集,然后所谓的不好惹的同学就是该行和该列只能选一个,那么我们将这两个点连起来,然后呢就发现是一个二分图的最大独立集,然后呢用匈牙利算出最大点集然后呢剪一下就OK#include<bits/stdc++.h>using namespace std;int n,k,ans;int vis[1005],a[1005];set...原创 2019-08-29 20:36:42 · 174 阅读 · 0 评论 -
【NOIP模拟赛】小凯学数学
题解:自己手模一下就很容易就发现所谓的小凯运算就是两数之和除以二嘛,然后呢我们就考虑乱搞一下,因为如题所述每次合并的只能是相邻的两个,然后我们叫考虑枚举区间中点点然后一直分下去直到只有一个或连个元素,然后再自下向上维护就OK,不过还要加一个记忆化才行,因为上一层中点不一样可能这一层分的区间有重复就不要计算了#include<bits/stdc++.h>using namespa...原创 2019-08-29 20:32:17 · 208 阅读 · 0 评论 -
【NOIP模拟赛】图
题解:这道题先考虑会有几种情况,显然只有两种对吧1ab一组cd一组2全部一组,那么我们就先跑n遍bfs那么就可以求出任意两点间距离,然后呢就枚举ab和cd两组间重合长度,重合就可以减去嘛#include<bits/stdc++.h>using namespace std;int n,m;int tot,inf;int ver[6005];int head[6005];...原创 2019-08-29 20:26:03 · 183 阅读 · 0 评论 -
NOIP模拟赛地球发动机
题解:这道题显然可以看出是DP因为不难观察出是要继承对吧,然后呢发现每个去继承前面的复杂度会爆掉,所以就从最后一个开始维护啦#include<bits/stdc++.h>using namespace std;long long f[100005];int a[100005],p[100005],x[100005];int read() { int num=0,f=1;...原创 2019-08-29 20:20:59 · 208 阅读 · 0 评论 -
【NOIP模拟赛】绿洲
题目翻译过来就是很水的迪杰斯特拉跑图啦,我天真以为直接跑到已有绿洲就继承会很快的没想到更慢了#include<bits/stdc++.h>#define inf 1000000000using namespace std;int n,m,k;int head[200005];int next[200005];int ver[200005];int d[100005];...原创 2019-08-29 20:17:09 · 140 阅读 · 0 评论 -
【NOIP模拟赛】蒲公英的约定
题解:这道题如果正向做就是在线的求高阶同余方程。时间复杂度不用BSGS最坏O(nq)用了就是O(n sqrt(q))所以就要考虑取巧的方法,因为已知第i步的答案与i-1步有关,我们又同时知道最后一步的b一定为0那么上一步的答案就为此时的c(由异或可得),那么我们就可以一步步倒退回去求得所有答案,时间复杂度O(n),秒杀此题。#include<bits/stdc++.h>usi...原创 2019-08-26 19:42:04 · 192 阅读 · 0 评论 -
NOIP 模拟题 奶牛抗议
题解:这道题一看就不难得出这是一道dp题,设sum[i]是a[1]-a[i]的和,那么显然可得当sum[i]-sum[j]>=0时dp[i]可以从dp[j]处转移,那么就把所有满足条件的dp[j]加起来。于是乎可得方程dp[i]=∑dp[j] (sum[i]>=sum[j])给出一份可在某谷上过的代码:#include<bits/stdc++.h>#define ...原创 2019-08-26 17:00:52 · 187 阅读 · 0 评论 -
【NOIP模拟赛】死宅与陷阱
死宅与陷阱题解:这是一道很简单的dfs,只需要从s把图跑一遍算出,每个点的到达概率。把他们存入一个数组,然后从大到小sort一遍,显然概率越大的权值越应该加P,然后就把每个点的概率*权值就OK了。#include<bits/stdc++.h>#define M 1000000009using namespace std;int head[100005];int nex...原创 2019-08-26 16:53:22 · 139 阅读 · 0 评论 -
【NOIP模拟赛】小猫爬山
DescriptionFreda和rainbow饲养了N只小猫,这天们要去爬山。经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下(呜咕><><)。Freda和rainbow只好花钱让它们坐索道下山。索道上的缆车最大承重量为W,而N只小猫的重量分别是 C1、C2…… CN。当然,每辆缆车上的小猫重量之和不能超过W。每 租用一辆缆车,Freda和rain...原创 2019-09-24 21:11:58 · 544 阅读 · 0 评论 -
【NOIP模拟】number
题解:先枚举出所有数可能搭配出的最小公倍数,再二分一下答案,进行判断是否合法,判断就用容斥原理乱搞就行了#include<bits/stdc++.h>using namespace std;long long n,k;const long long maxans= 1e15;long long a[20];long long read(){ long long num...原创 2019-09-24 21:17:18 · 175 阅读 · 0 评论 -
【NOIP模拟赛】tree
题解:这道题首先先找出最短路,再寻找过程中保存所有可以进入该点并对该点可以贡献最短路的个数,然后再根据乘法原理将所有的乘起来就OK了#include<bits/stdc++.h>#define M 2147483647using namespace std;int head[2000005];int next[2000005];int ver[2000005];int...原创 2019-09-24 21:20:44 · 190 阅读 · 0 评论 -
【NOIP模拟赛】最大跨距
hash加贪心就行了#include<bits/stdc++.h>#define M 10007#define MOD 1000000007using namespace std;long long s[100005],s1,s2;long long basic1,basic2;long long tot,tot1,tot2,st=-1;char ch;int ma...原创 2019-10-08 21:05:29 · 235 阅读 · 0 评论 -
【NOIP模拟赛】相交
题解:因为是树所以路径一定唯一,那么我们先算出a,b的lca为f1再算出c,d的lcaf2那么不难发现是求是否有重合路径,我们先把a到b的路径拆成a到f1和b到f1两条路径,那么就是求c到f2和前两个是否有重合或者d到f2是否与前两个有重合#include<bits/stdc++.h>using namespace std;int head[100005];int next...原创 2019-10-08 21:03:50 · 199 阅读 · 0 评论 -
【NOIP模拟赛】b
题解问题可以转化成在i∈[1,105]i∈[1,105]中,gcd=i的方案数。在转化一下,可以先求i|gcd的方案数,然后再来容斥一发。设fi,jfi,j表示在第i个序列中,j的倍数有多少个,那么i|gcd的方案数就是Πnj=1(fj,i+1)−1设gigi表示gcd=i的方案数,那么gi=Πnj=1(fj,i+1)−1−∑j=2gi∗j这样,就倒着求g就好了。#includ...原创 2019-10-08 20:58:52 · 287 阅读 · 0 评论 -
【NOIP模拟赛】a
题解:一看值就只有1/0两种那么就可以把求个数转换为求和;首先很容易想到先预处理从(0,0)到(i,j)的所有矩阵值,然后枚举左上端点,求出新的矩阵,满足条件就加加,但是呢复杂度是O(nnm*m)的显然过不了,那么我们再观察发现给定上端点和小端点时,矩阵从左到右具有单调不减性,那么我们就在每一个上端点和下端点中预处理dp(就是从左上是(i,0)左下是(j,0)的矩阵),然后再枚举右端点然后呢...原创 2019-10-08 20:55:07 · 255 阅读 · 0 评论 -
【NOIP模拟赛】轻功
Description题目背景: 尊者神高达进入了基三的世界,作为一个 mmorpg 做任务是必不可少的,然而跑地图却令人十分不爽。好在基三可以使用轻功,但是尊者神高达有些手残,他决定用梅花桩练习轻功。 题目描述: 一共有 n 个木桩,要求从起点(0)开始,经过所有梅花桩,恰好到达终点 n,尊者神高达一共会 k 种门派的轻功,不同门派的轻功经过的梅花桩数不同,花费时间也不同。但是尊者神高达一次只...原创 2019-10-08 20:45:37 · 178 阅读 · 0 评论 -
【NOIP模拟赛】积木大赛
题解:二分高度,去算是否存在这样的高度出现再判断与m的大小关系#include<bits/stdc++.h>using namespace std;long long n,m,maxx;long long a[100005];long long sum[100005];long long h[100005];long long t[100005];long long ...原创 2019-10-08 20:38:44 · 353 阅读 · 0 评论 -
【NOIP模拟赛】铁路运输
题解:先用跑一次最短路,记录每个点的所有最短路的入度节点,以及会给别的节点造成最短路的出度,然后呢就是每次每次改边就是将深度大的那个点减去深度小的入度,如果有个点没有了入度就ans++,然后再去修改他的所有出度;#include<bits/stdc++.h>using namespace std;int d[100020];int vis[100020];set<i...原创 2019-10-08 20:35:37 · 331 阅读 · 0 评论 -
【NOIP】test
【题目背景】Tom在学写动态树,但是做题时过了样例,提交RE。Tom抓住Jerry要他写个暴力来对拍。Jerry觉得这任务太简单了,就让你来完成一下。【题目描述】有一棵n个节点的树,初始时根节点为1。现在要支持如下操作——1、将某节点设置为根;2、改变某节点权值;3、询问以某节点为根的子树内节点权值之和;4、询问以某两点 为端点的链上的节点权值之和。【输入格式】第一行两个正整数n和q,...原创 2019-10-08 20:30:10 · 210 阅读 · 0 评论 -
【NOIP模拟赛】盟主的忧虑
题解:显然任意所求路径就只经过一条密道,然后呢,画图发现就是一个个环,然后可以用并查集来维护属于一个环或者是直接赋值#include<bits/stdc++.h>using namespace std;long long read() { long long num=0; char ch=getchar(); while(ch>'9'||ch<'0') {...原创 2019-09-24 21:32:29 · 226 阅读 · 1 评论 -
【NOIP模拟赛】林下风气
题解 :dp维护乱搞,强行枚举最小值,然后算出联通块满足的值f[i][1]和不满足的值f[i][0];#include<bits/stdc++.h>#define ll long longusing namespace std;const int N=3350,P=19260817;int n,k,rt,num;int a[N],last[N];ll f[N][2],...原创 2019-09-24 21:29:18 · 239 阅读 · 0 评论 -
【NOIP模拟赛】food
题解:把草和牛放在一起存再根据价格排序,然后再从小到大判断,如果是牛就存鲜美程度,不是就在已有牛中查找鲜美程度最接近的那个小于#include<bits/stdc++.h>using namespace std;struct oo{ long long p,x; bool flag;}cg[200005];int n,m;long long ans;multiset...原创 2019-09-24 21:23:23 · 166 阅读 · 0 评论 -
【NOIP模拟赛】指引
题解:主要是要发现贪心的策略,就是对x进行排序,对每一个门从小到大遍历,然后把满足条件的人加进来,然后选出最高的那个可以手模证明一下 #include<bits/stdc++.h> using namespace std; int n,k; int sum; set<pair<int,int> >door,dead; int read(){ ...原创 2019-08-22 22:27:36 · 148 阅读 · 0 评论 -
【NOIP模拟赛】capacitor
capacitor1s/256MB【题目背景】Jerry 教授又在给小老鼠讲课了。这回 Jerry 讲到了电学中电容的串并联,并给小老鼠留了搭电容的课后练习。但是 Jerry 还要继续备课,所以就请你帮忙给出标准答案了。【题目描述】电容,符号是 C,单位是法拉(F),然而这个单位太大了,Jerry 会用皮法(pF)来表述一个电容,1pF=10^−12F。Jerry 告诉你:两个...原创 2019-08-23 12:05:28 · 301 阅读 · 1 评论 -
【NOIP2013提高组 day1】火柴排队
【NOIP2013提高组 day1】火柴排队题解因为化简式子可得是求Σ(ai2-2*ai*bi+bi2)i⊂(1,n)再次化简可得Σai2+Σbi2-2*Σai*bi显然前两项是定值,所以只需要考虑最后一项;经过简单的数学计算就可以知道当a与b最接近时最大此时和最小;就可以知道目标状态时大对大,小对小。还可以发现移动任意一个数组都可以等价于转变另一个数组,所以可以把一个看作不动,让另...原创 2019-07-15 18:50:05 · 180 阅读 · 0 评论 -
NOIP 2013 提高组 ---转圈游戏
NOIP 2013 提高组 转圈游戏题解:这是一道很显然的快速幂!#include<bits/stdc++.h>using namespace std;long long n,m,k,x,p;long long pow(long long zs){ if(zs==1){ return 10%n; } if(zs==0) return 1%n; long lon...原创 2019-07-15 18:32:58 · 185 阅读 · 0 评论 -
NOIP提高组模拟赛---好文章
NOIP 好文章题解这道题呢看起来就貌似是一个纯的HASH,只需要枚举起点然后呢再来一个set自动去重,然后输出set的size就OK,理论上是这样的。不过呢鉴于各种各样的hash冲突,这道题哪怕是用双hash也只有七十分...原创 2019-07-13 14:36:38 · 211 阅读 · 0 评论 -
NOIP模拟赛---好数
NOIP 好数题解,这道题呢一看数据就很小,很轻松就可以看出来是道水题。有两种暴力做法,一种是先暴力打个表,把所有好数判断出来,然后它要什么答什么就OK。另一种是在它问了之后再去找比它大的m个数。判断一个数是不是好数只用看他转换为三进制下的每一位是多少就行。只需要除以每一个三的n次方就行#include<bits/stdc++.h>using namespace std;...原创 2019-07-13 13:36:48 · 235 阅读 · 0 评论 -
NOIP2015 提高组 day1 T3 --- 斗地主
NOIP2015 提高组 day1 T3 — 斗地主题解模拟爆搜!!!顺子是关键!!!#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int T,n,a[20],minn=26;int r(){ int ret=0; for (int...原创 2019-07-08 16:47:26 · 276 阅读 · 0 评论 -
NOIP2015 提高组 day1T2---信息传递
NOIP2015 提高组 day1 T2题解:显然这是一个查找最小环的问题,直接暴力 搜也能过,只不过需要一个限制 搜索次数 !!!#include<bits/stdc++.h>using namespace std;int n;vector<int>edge[200005];int vis[200005];int f[200005];int ans=...原创 2019-07-08 16:37:59 · 203 阅读 · 0 评论 -
NOIP2015 提高组 day1T1---神奇的幻方
NOIP2015 提高组 day1 T1:这是一道水题按照题目描述打个模拟就OK#include<bits/stdc++.h>using namespace std;int n;int h[39*39+5];int l[39*39+5];int mapa[40][40];int main(){ scanf("%d",&n); h[1]=1; l[1]=...原创 2019-07-08 16:30:45 · 243 阅读 · 0 评论 -
任务安排
任务安排描述有N个任务排成一个序列在一台机器上等待执行,它们的顺序不得改变。机器会把这N个任务分成若干批,每一批包含连续的若干个任务。从时刻0开始,任务被分批加工,执行第 i 个任务所需的时间是 T_i。另外,在每批任务开始前,机器需要S的启动时间,故执行一批任务所需的时间是启动时间S加上每个任务所需时间之和。一个任务执行后,将在机器中稍作等待,直至该批任务全部执行完毕。也就是说,同一批任务...原创 2019-06-07 21:57:08 · 866 阅读 · 0 评论 -
NOIP2019提高组模拟--购物(题解)
NOIP提高组模拟—购物强烈谴责这道题不符合生活常识,优惠卷面额的作用竟然不是扣多少钱的而是扣到多少钱,巨坑!!!关键是样例还能过,mmp;题解这道题可以采用贪心的思想,把优惠了的和没优惠的所以合成一个数组在一起算,一起sort一下,然后就要坚持一个商品只能买一次的原则,将每个要选的优惠后的价格标记一波,不选它的原来价格;而且要注意记录优惠了的次数要小于等于优惠卷的张数#include...原创 2019-05-18 19:49:24 · 675 阅读 · 0 评论 -
NOIP2019提高组模拟--拆网线
NOIP2019提高组模拟–拆网线【题解】贪心加DP重点在于找到图中所有可以形成两点一线的图形(且尽可能地多)然后再多的减少的加;在其他博客上也有用拓扑序的大牛#include<bits/stdc++.h>using namespace std;int dp[100005][2];struct tree{ int fa; vector<int&g...原创 2019-05-18 19:57:47 · 461 阅读 · 0 评论 -
NOIP2019提高组模拟--奇怪的队列
NOIP模拟–奇怪的队列此题采用线段树的做法#include<bits/stdc++.h>using namespace std;struct nzy{ int h; int num;}a[100005];struct oo{ int l,r; int data;}t[4*100005];int store[100005];bool cmp(nzy a,n...原创 2019-05-25 18:31:01 · 587 阅读 · 0 评论 -
【NOIP2013提高组 day2】积木大赛
【NOIP2013提高组 day2】积木大赛题解大家不知道有没有发现这道题和noip2018提高组day1第一题一模一样;这显然可以发现就是找前缀差啊,因为【L,R】的都统一变换,所以可以求前缀差啊#include<bits/stdc++.h>#define ll long longusing namespace std;ll n;ll qzc[100010];ll...原创 2019-07-15 18:55:30 · 345 阅读 · 2 评论