[Ynoi2011]D2T1】的更多相关文章

题目大意: 给定一个数列$a$,有以下几种询问: 1. 给定$x$,在序列末尾插入$x$.2. 给定$l,r$,输出$\sum\limits_{i=l}^r a_i$.3. 给定$x$,将数列中的所有数异或$x$.4. 将当前数列从小到大排序. 解题思路: 考虑某一时刻数列的状态,一定是前面一段有序,后面一段无序. 首先考虑第三个操作,显然用一个变量记一下全局异或的值$X$就可以了.对于第一个操作,先把$x$异或上$X$再插入. 计算贡献的话,可以按位考虑,记录一下这一位有多少个即可. 如果没有…
思路:01trie 按位维护 提交:5边 错因:爆int + 少处理询问时的右端点 题解: 见代码(已经不想说什么了) 代码 //I have my own flg; #include<bits/stdc++.h> #define ll long long #define R register int using namespace std; namespace Luitaryi { inline int g() { R x=0,f=1; register char ch; while(!is…
[二分查找]跳石头NOIP2015提高组 D2T1 >>>>题目 [题目描述] 一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N 块岩石(不含起点和终点的岩石).在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点. 为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳跃距离尽可能长.由于预算限制,组委会至多从起点和终点之间移走…
题目大意:$NOIP\;TG\;D2T1$ 题解:一棵树的很简单,第一个点一定是$1$,只需要对每个节点,找最小的没有访问过的节点访问即可,我写的是$O(n\log_2n)$. 考虑基环树的部分,一个显然的想法是枚举一条环上的边,然后删掉,跑树的部分,复杂度为$O(mn\log_2n)$,明显过不了.于是考场上的我开始发扬人类智慧,发现有一个环上的边可以不经过,可以找这一条边的贡献,若不经过这条边的下一位和经过这条边的下一位进行比较,若不经过较优则不经过这条边. 出来问了一下,发现可以先把每个点…
noip 2018 d2t1 旅行 (题目来自洛谷) 给定n个城市,m条双向道路的图, 不存在两条连接同一对城市的道路,也不存在一条连接一个城市和它本身的道路.并且, 从任意一个城市出发,通过这些道路都可以到达任意一个其他城市.小 Y 只能通过这些道路从一个城市前往另一个城市. 小 Y 的旅行方案是这样的:任意选定一个城市作为起点,然后从起点开始,每次可 以选择一条与当前城市相连的道路,走向一个没有去过的城市,或者沿着第一次访问该 城市时经过的道路后退到上一个城市.当小 Y 回到起点时,她可以选…
嵊州D2T1 “我只是来打个电话” 精神病院有一个这样的测试. 给出一个正整数集合,集合中的数各不相同,然后要求病人回答: 其中有多少个数,恰好等于集合中另外两个(不同的)数之和? 回答正确的人,即可以出院. 但是,条件是苛刻的—— 一秒. 直到变成废墟前,也没有人从中逃出. 但是如今不同了. 对吧? Input 共两行,第一行包含一个整数 n,表示测试题中给出的正整数个数. 第二行有 n 个正整数,每两个正整数之间用一个空格隔开,表示测试题中给出的正整数. Output 一个整数,表示测验题答…
这个D2T1有点难度啊 原题: 花了我一下午的时间,作为D2T1的确反常 条件很奇怪,感觉不太直观,于是看数据范围先写了个暴力 写暴力的时候我就注意到了之前没有仔细想过的点,烹饪方式必须不同 虽然a很大,但是n只有100,即总菜数比较小 而且虽然m和a都很大,但是一种方法只能做一道菜,即选一种食材 所以搜索枚举每种方法选哪种食材,最后检查方案是否满足条件 这样可以拿到32分 需要注意到一点很关键的性质 不管什么方案,最多只有一个食材能超过n/2,看到n/2要敏感 那么如果无视n/2的限制,直接d…
P5311 [Ynoi2011] 成都七中 题意 给你一棵 \(n\) 个节点的树,每个节点有一种颜色,有 \(m\) 次查询操作. 查询操作给定参数 \(l\ r\ x\),需输出: 将树中编号在 \([l,r]\) 内的所有节点保留,\(x\) 所在连通块中颜色种类数. 每次查询操作独立. 思路 考虑点分树的思想.假设我们已经建出点分树,对于每一个分治中心,我们应该维护什么东西? 我们从分治中心开始遍历,记录遍历到每个点路径上编号的最小值和最大值.很显然,如果遍历到一个询问的 \(x\) 的…
一般情况下,程序运行消耗时间主要与时间复杂度有关,超时与否取决于算法是否正确. 但对于某些题目,时间复杂度正确的程序也无法通过,这时我们就需要卡常数,即通过优化一些操作的常数因子减少时间消耗. 比如这道题 P5309 [Ynoi2011] 初始化 . 这道题目的做法我写在另一篇博客里,这里主要研究卡常方式. #include<bits/stdc++.h> using namespace std; const int h=200010; inline int read() { int s = 0…
我们可以先预处理一下组合数模K的值,然后我们可以发现对于答案ji[n][m],可以发现递推式ji[i][j]=ji[i-1][j]+ji[i][j-1]-ji[i-1][j-1]并对于Cij是否%k等于0,如果是就加一,且当j>i时ji[i][j]=ji[i][i].这样我们就可以O(2000^2)预处理答案,O(1)查询,即可 [NOIP2016]组合数问题 D2 T1 时间限制: 1 Sec  内存限制: 512 MB 题目描述 组合数Cnm表示的是从n个物品中选出m个物品的方案数.举个例子…
题目描述 组合数C(n,m)表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算组合数的一般公式: C(n,m)=n!/m!(n-m)! 其中n! = 1 × 2 × · · · × n 小葱想知道如果给定n,m和k,对于所有的0 <= i <= n,0 <= j <= min(i,m)有多少对 (i,j)满足C(i,j)是k的倍数. 输入输出格式 输…
题目链接:https://nanti.jisuanke.com/t/16442 题意: 有个人在第一年送了你一对1岁的兔子.这种兔子刚生下来的时候算0岁,当它在2~10岁的时候,每年都会生下一对兔子,并且它在10岁那年生完兔子后就会挂掉.现在让你算出第t年兔子的总数(不算那一年10岁的兔子). 题解: 我们用一个1*10的矩阵代表某一年的兔子数量,第k列上的数字n代表今年有n只k岁的兔子. 那么初始矩阵是这样的: 接下来考虑怎样构造特殊矩阵. 有两个转移关系: 第二年0岁的兔子数 = 第二年2~…
又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. “计算机坏了,可计算机系还得办.小 K,你去了解一下大家的成绩,顺便数数今年两校计算机系有多少人吧!” 于是,小 K 来到了人群中,开始调查大家的成绩. 然而,同学们只有七秒钟的记忆,已经忘记了自己的具体成绩(这可真是尴尬啊). 但是,因为在忘记成绩之前和校友互相调侃过,他们清楚地记得 在自己的学校…
鬼脚图,又称画鬼脚,在日本称作阿弥陀签,是一种经典游戏,也是一种简易的决策方法,常常用来抽签或决定分配组合. 下图就是一张鬼脚图,其包含若干条竖线和若干条横线.请注意,横线只能水平连接相邻的两条竖线,且 在同一高度只会有一条横线. 在图的上方,我们将这 n 条竖线依次标号为 1 到 n.以数字 3 为例,它会沿着所在的竖线下降,期间如果 遇到横线就会移动到横线的另一端,最终降落至下面的第一条竖线.上图中还标出了另外几种数字的最终位置.奇特的是,开始时每条竖线上都有一个数字,而 最终每条竖线下还是…
一条街道的两侧各连续坐落着 N 座单元楼.现在要为这些单元楼划分居民校区. 规则如下: 每个小区只能由同一侧连续的若干座单元楼组成.且两侧都恰有 K 个小区(每个小区至少有一栋楼). 两侧的小区划分规则应该相同,比如,若左边的房子被分成 {1,2},{3} 这两个小区,那么右边也应该如此. 这样两边合计一共有 K 对小区. 用 ai,bii​​,b​i​​ 表示左右两边每座楼的人口在同侧所有单元楼总人口中所占的百分比,定义一个小区的相对拥挤程度为其人口百分比之和(左边就是对应 aia_ia​i​…
[问题描述] 吕弗·普自小从英国长大,受到骑士精神的影响,吕弗·普的梦想便是成为一位劫富济贫的骑士. 吕弗·普拿到了一份全国富豪的名单(不在名单上的都是穷人),上面写着所有富豪的名字以及他们的总资产,比如豪特斯·珀去年资产有86E,吕弗·普就会准备抢来资助贫困的伯恩兄弟…… 现在吕弗·普做了M次打劫计划,每次要打劫若干个人,他想知道每次能打劫到的总资产是多少 [输入格式] 第一行一个正整数N,代表富豪的个数 接下来N行,每行一个由小写字母组成的字符串Si和一个非负整数Wi,分别代表第i个富豪的名…
这个题没有认真读的话就会写下以下的DD代码 #include<bits/stdc++.h> #define N 5010 using namespace std; int n,m; int ans[N],actr; int head[N],ectr; bool vis[N]; struct Edge{ int from,to,nxt; }edge[N<<]; void addedge(int from,int to){ ectr++; edge[ectr].from=from; e…
#181. 「2019冬令营提高组」直径 (这题构造题是我考场上唯一一A的题........) 先看这个特殊的Subtask4 Subtask 4(20pts):$\sqrt{1+8k}$​​​ 为整数. 画了几张图,你轻松地发现这是菊花图. 大概就是这样↓ 我们暂且设红点的个数为$k$表示菊花树的大小. 显然一棵菊花树的直径数为$k*(k-1)/2$ 接下来我们试着以若干棵菊花图的形式构图. 当我们把两棵大小为(a,b)的菊花树连在一起时, 40pts到手 但是对于某些数(如一些大质数),两棵…
T1题目在此: 数轴上有n个球,每个球直径为1,第 ii 个球的左端点为pi即占据了数轴上[pi,pi+1][pi,pi+1]).在 P位置有一堵墙.有q个操作,每次要么以x位置为左端点放一个新球(如果有了就不管),要么把最左边的球往右推.一个球碰到另一个的时候,旧球停下来,新球继续滚.球碰到墙的时候就停下来.最后你需要输出所有球的位置. 然后开始想:我的妈这不是一道水题么:然后用笔推算了一阵子,得出自己的结论: 链表可以快速插入一个元素; 为了快速放入元素,使用二分查找法,因为链表在未连接之前…
这题终于是正经第一题感觉了. 只需要对相交或相切的球建一条边,然后对所有与底面有交点的球连边,再对所有与顶面有交点的球连边,bfs判断上下连通性即可. #include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #include<cmath> #include<queue> using namespa…
题目大意:求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. 题解:即求a在mod b意义下的逆元,这里用扩展欧几里得来解决 C++ Code: #include<cstdio> using namespace std; int a,b,x,y; int exgcd(int a,int b,int &x,int &y){ if(b==0){x=1;y=0;return a;} int t=exgcd(b,a%b,y,x);y-=a/b*x;return t;…
题目链接 人生第一篇题解,多多关照吧. 注意事项: 1.多组数据,每次要先初始化. 2.因为涉及到开根,所以记得开double. 整体思路: 建图,判断「起点」与「终点」是否连通. 方法可选择搜索(我写的BFS)或并查集(UFS). 首先,读入时记录这些球的最小高度和最大高度,如果最低的球与底面相离,或是最高的球与顶面相离,直接Pass. 我们会发现,可能不止一个球与底面相切或相交,也可能不止一个球与顶面相切或相交. 这就是说,起点和终点都可能不止一个,这给我们操作造成了一些麻烦(然而考场上我就…
题目大意:在数轴上有$n$个闭区间$[l_1,r_1],[l_2,r_2],...,[l_n,r_n]$.现在要从中选出 $m$ 个区间,使得这 $m$ 个区间共同包含至少一个位置.输出被选中的最长区间长度减去被选中的最短区间长度,若多解,输出最小的一个 题解:把区间按长度排序,然后把左右端点离散化,双指针扫一下,线段树维护一下有没有点被覆盖$ \geq m$次即可 卡点:1.因为有$2\times n$个点,所以线段树开小了一倍 C++ Code: #include <cstdio> #in…
#include <bits/stdc++.h> using namespace std; #define ll long long ll extgcd(ll a,ll b,ll &x,ll &y) { if(a==0&&b==0)return -1;//没有最大公约数 if(b==0){x=1;y=0;return a;} else { ll d=extgcd(b,a%b,y,x); y-=a/b*x; return d; } } int main() { l…
#include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<cmath> #include<cstring> using namespace std; typedef struct node { double x,y,z; } qiu; qiu a[1005]; bool cmp(qiu aa,qiu bb) { return a…
题目背景 小 X 是一位热爱数学的男孩子,在茫茫的数字中,他对质数更有一种独特的 情感.小 X 认为,质数是一切自然数起源的地方. 题目描述 在小 X 的认知里,质数是除了本身和 1 以外,没有其他因数的数字. 但由于小 X 对质数的热爱超乎寻常,所以小 X 同样喜欢那些虽然不是质数, 但却是由两个质数相乘得来的数. 于是,我们定义,一个数是小 X 喜欢的数,当且仅当其是一个质数,或是两 个质数的乘积. 而现在,小 X 想要知道,在 L 到 R 之间,有多少数是他喜欢的数呢? 输入输出格式 输入…
依旧是外链... 这一次网易云爆炸了....所以我决定后面的都用QQ 下面是题面 这道题是一道傻逼题 数学题,我们仔细看一看,首先有m朵花的话,我们就有m!种排列方式(也就是m的全排列), 然后我们假设已经把花的顺序拍好了 我们这一步要做的事情就是在剩下的n-m+1个空中选择m个插到m朵花中去,也就是插头算法,至于在算n-m等数组要不要+1的时候,最好还是手推再加上实践,这样能保证算出来的数是正确的 所以最后的答案就是A(m,m)*C(n-m+1,m) 本来以为按A和C的算法直接写上就没事的,但…
题意: 思路:这道题并没有官方题解 没有羊驼在所有三元组中出现就是NO 现在考虑不少于1只的情况 删去其中一只,我们得到了两组点和一些边 我们只要判断这是否为一张二分图,使用暴力染色的方法就有60分了 #include<cstdio> #include<algorithm> #define N 10010 #define M 50010 using namespace std; int T,n,m,edgenum,u,v,ok,isok,root; int f[N],vet[M],…
题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图,只有点权. LYK想把这个图删干净,它的方法是这样的.每次选择一个点,将它删掉,但删这个点是需要代价的.假设与这个点相连的还没被删掉的点是u1,u2,…,uk.LYK将会增加a[u1],a[u2],…,a[uk]的疲劳值. 它想将所有点都删掉,并且删完后自己的疲劳值之和最小.你能帮帮它吗? 输入格式(god.in) 第一行两个数n,m表示一张n个点m条边的图. 第二行n个数ai表示点权. 接下来m行每行…
题目大意: 给定一个序列$a_1,a_2,\dots,a_n$,进行$m$次操作,每次操作如下: 1. 给定$x,y,z$,对所有下标为$y,y+x,y+2x,\dots$的元素加上$z$(保证$y\leqslant x$).2. 给定$l,r$,求$(\sum\limits_{i=l}^r a_i)\bmod{1000000007}$的值. 解题思路: 分块+根号分治简单维护即可. 考虑对$x$的大小分类讨论. 若$x\geqslant \sqrt n$,则我们暴力给每个位置加,需要加的次数为…