首页 > TAG信息列表 > joi

【题解】「JOI 2015 Final」JOI 公园

Description Solution Code #include <cstdio> #include <algorithm> #include <queue> #define int long long using namespace std; const int MAXN = 1e5 + 10, MAXM = 4e5 + 5, INF = 1e18; int n, m, C; int head[MAXN], nxt[MAXM], ver[MAXM], edge[

node.js 如何验证表单

# 表单验证 第一步 安装 npm i joi 安装 npm i @escook/express-joi 创建一个文件夹名为schema文件名为user.js 里面引入 const joi = require('joi') 验证的几个api * string() 值必须是字符串 * alphanum() 值只能是包含 a-zA-Z0-9 的字符串 * min(length) 最小长度 *

P6117-[JOI 2019 Final]コイン集め【贪心】

正题 题目链接:https://www.luogu.com.cn/problem/P6117 题目大意 平面上有\(2n\)的硬币,要给每个硬币匹配一个\(x\in[1,n],y\in[1,2]\)的位置(不能重复)。 使得所有硬币和它们匹配位置的曼哈顿距离之和最小。 \(1\leq n\leq 10^5,-10^9\leq X_i,Y_i\leq 10^9\) 解题思路 先把每个

P6118-[JOI 2019 Final]珍しい都市【树的直径】

正题 题目链接:https://www.luogu.com.cn/problem/P6118 题目大意 给出一棵\(n\)个点的树,对于一个点\(x\)来说,独特的点\(y(y\neq x)\)是指不存在\(z\)使得\(dis(y,x)=dis(z,x)\),其中\(x\neq z,y\neq z\)。 每个点有个颜色,对于每个点\(x\)求对于它来说独特的点所包含的颜色种类数

Nodejs后端:验证表单数据

Nodejs后端:验证表单数据 使用 joi 第三方包,joi官方文档。 1. 安装 相关包 npm install joi npm install @escook/express-joi 2. 定义验证规则模块 // 导入定义验证规则包 const joi = require('joi') // 定义用户名和密码的验证规则 const username = joi.string().alphanum().

koa2 使用 Joi

封装函数: const { ErrorModel } = require("../model/resModel"); function schema(method, schemas) { async function validateSchema(ctx, next) { let data = null; if (method === "get") { data = await ctx.request.query; } els

「JOI 2018 Final」毒蛇越狱

「JOI 2018 Final」毒蛇越狱 题面: JOI 研究所有 条毒蛇,这些毒蛇编号为 \(0,1,\dots,2^L-1\) 。每条毒蛇从头到尾被分成 \(L\) 段,每段的颜色为蓝、红中的一种。对于毒蛇 \(i\),令 \(i=\sum_{k=1}^{L}{c_k\times 2^{L-k}}.(0\le c_k\le 1)\) 为 \(i\) 的二进制展开,若 ,则毒蛇 的第 段

「JOI 2021 Final」机器人

「JOI 2021 Final」机器人 ​ 首先走一条路且有其他路的颜色与这条路相同,有两种情况。 把这条路道路的颜色改变 把其他与这条路颜色相同的路的颜色改变。 ​ 又因为我们有 \(M\) 种颜色,一共只有 \(M\) 条路,所以我们可以做到将一条边涂改成一种独一无二的颜色。 ​ 由于重复

JOI 系列乱做

「JOISC 2014 Day3」稻草人 题目描述 Solution 对于一个点 \(A\),能与其组成答案的点 \(B\),必然不存在另一点 \(C\),其在 \(A,B\) 所组成的矩形之中。 二维题目的一个常用 trick:按一维排序后作为时间轴,降为一维。 如果按 \(x\) 排序之后按 \(y\) 插入每一个点,问题变为区间最大后缀

题解「JOI Open 2021」决算报告

给定一个数组 \(a\),请找一个子序列使得 \(a_n\) 被选中。 相邻两个间距离不超过 \(d\)。 比该序列中前面所有数大的数最多。 赛场上考虑了一个 dp,但因为错解想了很久, 没有优化成功。 \(f_i\) 表示从后面到 \(i\) 的最大答案,那么转移的条件就是 \(a_j > a_i\) 且能通过小于 \(a

JOI Open 偷学记录

只偷了一题,被z宝吊打 /ll 「JOI Open 2016」摩天大楼 把 a 排序,考虑 \(a_{i+1}-a_i\) 对于 \(\sum\) 的贡献,显然取决于一个 \(\le a_i\),另一个 \(\ge a_{i+1}\) 的 \((f_i,f_{i+1})\) 的数量,也就是把前 \(i\) 小的数字插入数列,左/右尚未确定的数目,对这个 dp 就行了 但具体情况

P6881 [JOI 2020 Final] 火事 题解

Link. Luogu Description. 给定一个序列,初始为 \(\{a_i\}\)。 每时刻 \(\forall i\in(1,n],a_i\leftarrow\max(a_{i-1},a_i)\)。 问第 \(t\) 时刻 \(\sum_{l=1}^ra_i\)。 Solution. 想了一年,要么就是建树然后暴跳,要么就是分段然后合并。 最后无一例外假了,因为没有优化到本质。 本

JOISC 2016 Day 1 棋盘游戏

题意 JOI 君有一个棋盘,棋盘上有 \(N\) 行 \(3\) 列 的格子。JOI 君有若干棋子,并想用它们来玩一个游戏。初始状态棋盘上至少有一个棋子,也至少有一个空位。 游戏的目标是:在还没有放棋子的格子上依次放棋子,并填满整个棋盘。在某个格子上放置棋子必须满足以下条件之一: 这个格子的上下

JOI 2015 FInal 舞会

JOI 2015 FInal 舞会 ​ 题目链接:#2727. 「JOI 2015 Final」舞会 - 题目 - LibreOJ (loj.ac) ​ 很明显,答案具有单调性,我们考虑二分答案。那么问题就变成了怎么写出 check 函数。 ​ 我们发现,根据题意,每三个点最后都会变成一个点,那我们不断进行缩点,画个图看看? ​ ​ 我们发现,这

「JOI 2020 Final」奥运公交 题解

「JOI 2020 Final」奥运公交 Description Input Output Sample Input 样例 1 输入: 4 5 1 2 4 4 1 3 2 1 4 3 1 2 4 1 6 1 2 4 2 5 样例 2 输入: 4 10 1 2 4 4 1 2 4 4 1 3 2 1 1 3 2 1 4 3 1 2 4 3 1 2 4 1 6 1 4 1 6 1 2 4 2 5 2 4 2 5 样例 3 输入: 4 4 1 2 0 4 1 3 0 1 4 3 0

7201. 「JOI 2020 Final」奥运公交

Description&Data Constraint 对于全部数据,\(2\le N \le 200,1\le M \le 5\times 10^4,1\le U_i,V_i\le N,U_i\not= V_i,0\le C_i\le 10^6,0\le D_i\le 10^9\)。 Solution 首先明确一个性质,翻转的边需要在最短路树上,否则对答案没有贡献。 首先求出 \(1\) 到 \(i\),\(i\) 到 \(n\)

题解「JOI 2020 Final」只不过是长的领带

Description 见「JOI 2020 Final」只不过是长的领带 Analysis 看到最小化最小值,很自然地便会想到二分。 假设为求 \(C_k\),我们二分出一个 \(t\),需判断它是否符合题目要求。 形式化地,我们需验证其是否满足存在一个排列 \(p\),使得对于任意\(i\),有\(A_{p_i}-B_i\le t,p_i\ne k\)。 一

P7405-[JOI 2021 Final]雪玉【二分】

正题 题目链接:https://www.luogu.com.cn/problem/P7405 题目大意 n n n个点在坐标轴上, q q q次每

P7405-[JOI 2021 Final]雪玉【二分】

正题 题目链接:https://www.luogu.com.cn/problem/P7405 题目大意 \(n\)个点在坐标轴上,\(q\)次每次所有点向一个方向移动若干步,每个点的权值是它第一次覆盖的区间长度(也就是一个区间只能贡献到第一次经过它的点)。 求所有点的最终权值。 \(1\leq n,q\leq 2\times 10^5\) 解题思路

#2742. 「JOI Open 2016」销售基因链

题面 戳这里 思路 把n个字符串用string存,按字典序排序,建一棵trie,再倒序,排序,再建一棵trie 我们发现,对于trie树上的每一个节点,包含它的字符串的序号是连续的,区间左端点是包括这个节点的字典序最小的字符串的序号,区间右端点是包括这个节点的字典序最大的字符串的序号 设正序排

使用Joi来验证数据模型

Joi模块简介我们用nodejs实现一些功能时,往往需要对用户输入的数据进行验证。然而,验证是一件麻烦的事情,很有可能你需要验证数据类型,长度,特定规则等等,在前端做表单验证时,我们常用的做法是使用正则,正则表达式也许可以一步到位,但是他只会给你true or false,如果想要知道数据不符合哪些

JOI 2021 Final 做题记录

T1 「JOI 2021 Final」有趣的家庭菜园 4 显然我们先求\(A\)数组的差分 那么显然最后就是要让一段前缀的差分\(>0\),剩下的\(<0\) 不难发现一个操作是让至多一个差分\(+1\),至多一个差分\(-1\) 于是枚举波峰算两侧所需次数的\(max\)即可 code T2 「JOI 2021 Final」雪球 显然每个雪

JOI 地牢题解

sub1就是thuwc2018d2t1弱化版 贪心策略就是:考虑下一个费用<当前点的点\(x\),可以用单调栈预处理。 如果当前点不能到达x,则加满。 否则加到恰好能够到达\(x\),然后能量值变为0。 sub2似乎可以倍增,但是和标算关系不大。 sub3考虑在\(n+1\)位置增加一个费用为\(-\inf\)的治疗泉。 判定

后端数据验证模块Joi

概述 方便的后端验证前端数据合法性 官网:https://joi.dev/api/?v=17.3.0#introduction 使用步骤 安装 npm install joi 引入 const joi = require('joi'); 使用 /*定义验证规则*/ const schema = Joi.object({ username: Joi.string().min(2).max(20).required().error(new

nodejs Joi报错:Joi.validate is not a function及解决方式

Joi时是avascript对象的规则语言和验证器,通常可以在用户登录时验证用户信息。 在数据校验时,报错:Joi.validate is not a function 先看代码: 1 const Joi = require('joi') 4 const schema = { 5 username: Joi.string().min(2).max(5).required().error(new Error('usernam