首页 > TAG信息列表 > 月赛

月赛 101 Div1D 分块神仙题

分块 RMSQ 传送门 题面已经很清楚了,所以就不复述了。 转化 我们发现排列不需要存储,只要存储每个元素的位置 \(Pos_i\) 即可,读入 \(a\) 的时候,我们把输入的第 \(i\) 数字在 \(b\) 中的位置 \(Pos_i\) 存入 \(a_i\)。这样问题就变成了在新的 \(a\) 数组中查询区间的最长连续上升子序

#4973. [Lydsy1708月赛]比特战争

4973. [Lydsy1708月赛]比特战争 这个题确实是有点妙... 首先我们可以考虑最终的答案是怎么样的,肯定是若干个连通块,和一些单独的点,考虑它们对答案的贡献分别是什么,单独的点肯定是\(a_i*b_i\),连通块的话考虑所有的点和所有的边都被占领了,所有贡献为\(max(maxa_i,maxc_i)*minb_i\),简

石铁大算法协会月赛(一)

这场比赛给我的教训不是会多少题,而是做题心态的问题: 第一道题很快AC,第二道看错题了,人家说的是1旁边不能有1,不是1旁边必须有0!!!!直接我交了好多次,md题都看错了做个der?由此影响了后边的题(毕竟这么简单的题),题要慢审!!!!! 石铁大算法协会月赛(一) - Virtual Judge (vjudge.net) 我tm至少3道题

洛谷八月月赛 II T1 题解

Content 在大小为 \(n\) 的数字三角形中,第 \(i\) 行包含有 \(i\) 个数字,数字从上到下,从左到右依次排列为 \(1,2,3,\dots\)。 设第 \(i\) 行第 \(j\) 个数字为 \((i,j)\),则我们可以从 \((i,j)\) 走到 \((i+1,j)\) 或 \((i+1,j+1)\),也可以从 \((i+1,j)\) 或 \((i+1,j+1)\) 走到 \((i

2021广东工业大学十月月赛 F-hnjhd爱序列

题目:GDUTOJ | hnjhd爱序列 (gdutcode.cn) 一开始是用双指针从尾至头遍历,但发现会tle!! 后来朋友@77给出了一种用桶的做法,相当于是用空间换时间了。 其中用到的一个原理是:如果两个数对x同余,那这两个数的差必定可以被x整除; 于是利用了后缀和,当两个后缀和对m同余,那这两个后缀和的差,也就

牛客xb月赛 B 区间DP + 环形两倍空间优化

题目 题解思路 看了一会区间DP,还没看太懂。 知道递推式是对的,但是不会推。 这题和环形合并石子不同,当确定了起点后,只能往左边或者右边走了。 这样就不需要第三维的K了,确定了len和左右端点,就能知道要么从左边推过来要么从右边推过来了。 环形石子合并有点用了分治的思想,通过

牛客xb月赛38 E 求任意区间的长度等于区间值的积 暴力枚举区间+玄学优化术

题目 题解思路 暴力枚举每个区间,枚举左端点,再枚举右端点。当乘积大于n的时候break,将连续的1优化成直接指向下一个非1数,这样就只需log级别就能枚举出来了。 因为这样最差情况下全是乘2 也只需要17次就能出循环,所以这个优化是很恐怖的。 这样我们只需预处理每个1下一个非1是多

牛客小bai月赛39 F 孤独(dp)

牛客小白月赛39 F 孤独 #include <bits/stdc++.h> using namespace std; typedef long long ll; int ans = INT_MAX, n; int sz[1000006]; int dp[1000006]; vector<int>vec[1000006]; void dfs(int i, int fa) { sz[i] = 1; int mx1 = 0; int mx2 = 0; int mx3 = 0;

Lg 8月赛(构造+交互)

Div2 得分 \(270pts' = 100 + 100 + 0 +70\) T1「PMOI-4」人赢 打表找规律,大概是每 6 个一个周期。 正经做法是用矩阵加速维护指数,同时用扩展欧拉定理处理模数 #include<bits/stdc++.h> using namespace std; #define int long long template<typename _T> inline void read(_

DASCTF 7月赛 - 安全,安全,还是xxx的安全(Writeup)

题目上来是买flag的,一开始我真的以为买flag给flag,联想到了逻辑漏洞,但是测试后发现线程十分安全(一旦多了就自断请求失败!),直接又通过url联想到了flask的SSTI,但是测试了后username参数过滤很严格,emmm陷入了沉思 直到Hint放出来才知道是SQL注入,az! CREATE TABLE "users" ( "id" INTE

[2021.7.16] 洛谷七月月赛

目录题目天体探测仪(Astral Detector)解法代码 题目 传送门 天体探测仪(Astral Detector) 解法 当时想了很久如何通过每层区间依次查找数值下标,然而半天只会推 \(1\)... 实在不知道是怎么想到的,我们令 \(i\) 为最小值的最大区间为 \([l_i,r_i]\),令 \(len_i=r_i-l_i+1\)。 事实上,\(len

BZOJ4919[Lydsy1706月赛]大根堆-------------线段树进阶

是不是每做道线段树进阶都要写个题解。。根本不会写   Description 给定一棵n个节点的有根树,编号依次为1到n,其中1号点为根节点。每个点有一个权值v_i。 你需要将这棵树转化成一个大根堆。确切地说,你需要选择尽可能多的节点,满足大根堆的性质:对于任意两个点i,j,如果i在树上是j的祖

BZOJ4919: [Lydsy1706月赛]大根堆(set启发式合并)

题意 题目链接 Sol 如果给出的树是链的话显然就是LIS 不是链的时候直接当链做,每个节点维护一个multiset表示计算LIS过程中的单调栈 启发式合并即可 时间复杂度:$O(nlog^2n)$ #include<bits/stdc++.h> #define sit multiset<int>::iterator using namespace std; const int MAXN =

天津大学程序设计竞赛 月赛 1

天津大学程序设计竞赛 月赛 1 简单表达式求值折绳子弟弟的问题船坞建造印卡机 http://tjuacm.chaosheng.top/contest.php?cid=1092 简单表达式求值 题目描述 天津大学(Tianjin University),简称天大,其前身为北洋大学,始建于1895年10月2日,是中国第一所现代大学,开中国近代高等

EOJ月赛-2021.4 --D. Divide(枚举质因子)

题目链接 题目思路: 预处理1-1e7的所有质因子 然后对区间L,R 我们算出每个质因子的个数 上述操作重复两边(两个区间) 然后check的时候对于所有的质因子是不是都满足num1[i]<=num2[i]就可以了 ll vis[10000002], p[10000002], x; void oula() { for(int i = 2 ; i <= 10000000 ;

洛谷四月月赛Div.2 题解

Solution A 若二元组 ( i , j ) (i,j) (i,j) 合法,当且仅当

HUASACM_月赛_0321_解题思路

这篇题解只介绍简要的解题思路,大家如果有问题或者建议,欢迎在QQ群内联系我们。 A : 我们知道任何一个数,在计算机内的表示都是二进制完成的,由此也引申了一系列的二进制运算符(位运算符),这些我们不予解释,请读者自行百度和上手尝试。 我们以 5 做例子,其二进制表示为 101 所以当将其

EOJ二月月赛补题

A:昔我往矣 lca+dfs序,先做出所有点的dfs序,然后对于每一个询问,以dfs序最小和最大的为两个端点,然后往里面加点相当于加上一条分叉出去的链,用LCA求解即可。 下附代码: 1 #include<bits/stdc++.h> 2 #define ll long long 3 using namespace std; 4 const ll INF=0X3f3f3f3f3f

师大月赛的字符串整理

字符串!!! 没错。。。 这篇博客只有字符串(知识盲区呜呜呜傻傻分不清)。 最近几次做题有字符串就必跪,所以希望通过这篇博客再提升自己一下! 先来一道666的题 一. 题目描述 zhb开办的太极门过于火爆,聪明的zhb发现只考核混元功法已经不足以满足学生毕业的需要,于是他想出来了一个新的

洛谷 9.19 月赛部分题解

前言: 这算是自己在洛谷的第一场小月赛了吧。 以前大月赛没时间打,只能打个签到题就滚粗了。 这次下午没安排,应该可以多做几道题吧。 T1 子弦 Link 题目描述: \(Cirno\) 有一个字符串 \(\texttt{S}\),并希望你能求出 \(\texttt{S}\) 出现次数最多的非空子串的出现次数,记作 \(p\)。 题

【BZOJ4977】[Lydsy1708月赛] 跳伞求生(模拟费用流)

点此看题面 大致题意: 有\(n\)个队友,每人有\(a_i\)发弹药。有\(m\)个敌人,每人有\(b_i\)发弹药,且击杀他可以得到\(v_i\)点积分。已知每个队友(设其为\(i\))最多选择一个敌人(设其为\(j\),每个敌人只能被选择一次),若\(a_i>b_j\),则得到\(a_i-b_j+v_j\)点积分。求最大积分。 模拟费用流 这是

上海月赛 数根

 给定一个十进制下的正整数 n,若 n 的各位数字之和是一位数,则这个和是 n 的数根。例如,999 的数根为 9,因为 9+9+9=27,2+7=9。给定 n,请输出它的数根。 这样的话,和计算一个数的位数方法差不多 ans=n; a=n; n=0; while(ans>=10)//如果ans是个位数,就退出循环 { if(a<=0)

5125: [Lydsy1712月赛]小Q的书架 [决策单调性]

很显然的dp式子 \(dp_i = dp_j + calc(j + 1,i)\) 然后发现这个 \(calc(i-1,j+1) + calc(i,j) \geq calc(i-1,j) + calc(i,j+1)\) 满足四边形不等式,然后就可以决策单调性,区间逆序对搞个莫队就完了。 #include <bits/stdc++.h> using namespace std; template <int maxn> struct

BZOJ 5125: [Lydsy1712月赛]小Q的书架

  $f[i][k]$ 表示前 $i$ 个分成 $k$ 段,且最后一段以 $i$ 结尾的最小值 容易写出转移方程 $f[i][k] = \min \{f[j][k - 1] + calc(j+1,i)\}$ 因为具有决策单调性(打表 or 证明(不会)),就可以一种分治算法来优化 具体实现就是 $solve(l,r,L,R)$ 表示要求出 $(l,r)$ 之间的 dp 值,而决策点

【BZOJ4836】[Lydsy1704月赛]二元运算(分治FFT)

传送门 显然权值转下标后分治FFTFFTFFT即可 利用MTTMTTMTT的技巧可以做到DFTDFTDFT次数减半 卡到bzoj rk2bzoj\ rk2bzoj rk2 不知到第一是怎么做到2k代码跑那么快的 #include<bits/stdc++.h> using namespace std; #define cs const #define re register #define pb push_