水题
文章平均质量分 65
单个题的题解
ydsrwex
这个作者很懒,什么都没留下…
展开
-
再练动态规划——(5)Jury Compromise
首先看到数据范围就很容易想到动态规划不过虽然 M<=20M<=20M<=20 ,这道题也显然不容易装压,总共人数 N<=200N<=200N<=200 。一开始我想的是f[i][j]f[i][j]f[i][j] 表示到第 iii 个人,分差是 jjj 但是状态转移方程写不出来,但是杰哥曾经告诉我们:做不出就加一维。所以就能想到用 f[i][j][k]f[i][j][k]f[i][j][k] 表示前 iii 个人中选出来 jjj 个,且分差是 kkk。然后就能推出来方原创 2021-10-04 13:58:50 · 69 阅读 · 0 评论 -
再练动态规划——(4)涂抹果酱
据说是能找到的题当中,最简单的三进制状压DP题目大意给n*m大的格子,n<=10000,m<=5,每相邻两个格子不能涂抹一样的颜色,一共有1,2,3这三种颜色,给出第k行每个格子涂抹的颜色,求总共有多少涂抹的方案。对于那么小的一个m,我们很容易可以想到状压,但是颜色有三种,所以一般的二进制的状压显然是不可做的,这时候就要手写位运算搞个三进制的,...原创 2021-09-12 21:36:56 · 173 阅读 · 0 评论 -
《收集果子》题解
606060 分的话其实很好理解,直接一个树上背包f[i][j]f[i][j]f[i][j] 表示以 iii 为根的子树收集到 jjj 个果子的方案数不选 kkk 号节点的话,它后面的子树节点都不选,一种方案都不剩,这样的话对答案的贡献就相当于是 f[i][j]∗2(size[k])f[i][j] * 2^{(size[k])}f[i][j]∗2(size[k])size[k]表示以 kkk 为根节点的子树的大小选的话就也跟个背包一样#include <bits/stdc++.h>u原创 2021-08-15 17:04:32 · 148 阅读 · 0 评论 -
[SDOI2007]游戏(哈希+拓扑)
题目描述小木木和小凳子试两个聪明的孩子,他们五岁的时候就开始学习英语了。英语老师教他们玩一个很简单的游戏。老师给他们一张全小写并无特殊符号的英语单词表,单词表如下:ab arc arco bar bran carbon carbons cobra crab crayon narcab \; arc\; arco \;bar\; bran \;carbon\; carbons\;cobra \; crab \; crayon \;narcabarcarcobarbrancarbonc原创 2021-06-22 20:35:39 · 195 阅读 · 2 评论 -
再练动态规划——(2)自然数拆分Lunatic版
自然数拆分Lunatic版题目描述输入自然数 nnn ,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复。输入格式输入只有一个整数 nnn ,表示待拆分的自然数 nnn 。 0<n<=40000<n<=40000<n<=4000PS:0PS:0PS:0也算自然数,所以这里应该写正整数比较好但是为了尊重原作者的版权(这有版权吗- -),没有改掉。输出格式输出一个数,即所有方案数因为这个数可能非常大,所以你只要输出这个数 mod/;21474836原创 2021-06-22 17:23:46 · 278 阅读 · 1 评论 -
再练动态规划——(1)数字拆分
数字拆分Description在N个数中找出其和为M的若干个数。先读入正整数NNN(1≤N≤1001 \leq N \leq 1001≤N≤100)和M(1≤M≤10000)M(1 \leq M \leq 10000)M(1≤M≤10000),再读入NNN个正数(可以有相同的数字,每个数字均在100010001000以内), 在这NNN个数中找出若干个数,使它们的和是MMM, 把满足条件的数字组合都找出来以统计组合的个数,输出组合的个数(不考虑组合是否相同)。要求你的程序运行时间不超过111秒。I原创 2021-06-22 16:48:51 · 250 阅读 · 0 评论 -
DFS的初步理解
DFS深度优先bai遍历(DFS)也叫深度优先搜索。它的定义是:不断地du沿着顶点的深度方向遍历。顶点的深度方向是指它的邻接点方向。(对没错这句是搜的)我大概花了一周时间才搞懂dfs(小懂而已),主要因为我连函数都不用(能不用则不用),所以对dfs理解的有些慢(龟速),所以能够优化结构的,或者什么高级点的东西(虽说函数只是基础),还是应该多去练习。通俗点讲,我觉得DFS就是函数里面用函数。举个题做例子:超级书架(我当时就是从这个题得到的突破)题目描述Farmer John最近为奶牛们的图书原创 2020-10-07 12:44:13 · 1793 阅读 · 2 评论 -
树[数据结构]的杂题不多解释
树状数组 1 :单点修改,区间查询题目描述输入一个数列A1,A2….An(1<=N<=100000),在数列上进行M(1<=M<=100000)次操作,操作有以下两种:(1) 格式为C I X,其中C为字符“C”,I和X(1<=I<=N,|X|<=10000)都是整数,表示把把a[I]改为X(2) 格式为Q L R,其中Q为字符“Q”,L和R表示询问区间为[ L ,R] (1<=L<=R<=N),表示询问A[L]+…+A[R]的值。输入格原创 2021-05-06 19:46:58 · 1096 阅读 · 1 评论 -
[NOI Online 2021 入门组] 吃豆人
首先,这个方法是错的,但是官方数据满分,洛谷95,正解看官方洛谷的传送门由画图我们可以轻易得到,如果最上面一个豆确定,那么这个路径是唯一的。这样想的话,我们不妨枚举从最上面一行的每个起点出发,计算所有可以走的路径,而除了最高行和最低行以外每行可以吃到两颗豆。(斜对角走法除外),然后再算出斜对角能吃的豆,找到最优的路径标记其最高点,然后再跑一边把这些位置的flagflagflag全部设成000表示这里的豆吃过了,然后再执行一次这样的操作找到第二遍的最优路径。在吃没横行的两颗豆时我们可以直接计算+++原创 2021-04-07 20:11:11 · 584 阅读 · 1 评论 -
[NOI Online 2021 入门组] 切蛋糕
题目描述AliceAliceAlice,BobBobBob和CindyCindyCindy三个好朋友得到了一个圆形蛋糕,他们打算分享这个蛋糕。三个人的需求量分别为a,b,ca,b,ca,b,c,现在请你帮他们切蛋糕,规则如下:每次切蛋糕可以选择蛋糕的任意一条直径,并沿这条直径切一刀(注意切完后不会立刻将蛋糕分成两部分)。设你一共切了nnn刀,那么你将得到 2n2n2n 个扇形的蛋糕(特别地,切了000刀被认为是有一个扇形,即整个圆形蛋糕),将这些蛋糕分配给AliceAliceAlice,BobBob原创 2021-04-07 19:52:57 · 390 阅读 · 0 评论 -
算阶第一章Tallest Cow
DescriptionFJ’s N (1 ≤ N ≤ 10,000) cows conveniently indexed 1…N are standing in a line. Each cow has a positive integer height (which is a bit of secret). You are told only the height H (1 ≤ H ≤ 1,000,000) of the tallest cow along with the index I of tha原创 2021-01-14 19:42:57 · 175 阅读 · 0 评论 -
算阶第一章费解的开关
Description你玩过“拉灯”游戏吗?25盏灯排成一个5x5的方形。每一个灯都有一个开关,游戏者可以改变它的状态。每一步,游戏者可以改变某一个灯的状态。游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也要相应地改变其状态。我们用数字“1”表示一盏开着的灯,用数字“0”表示关着的灯。下面这种状态1011101101101111000011011在改变了最左上角的灯的状态后将变成:0111111101101111000011011再改变它正中间的灯后状态将变成:原创 2021-01-14 19:43:14 · 111 阅读 · 0 评论 -
算阶第一章递归实现排列型枚举
全排列全排列在前期好多题中都能水个暴力分题目描述把 1~n 这 n(n<10) 个整数排成一行后随机打乱顺序,输出所有可能的次序。输入和输出Input一个整数n。Output按照从小到大的顺序输出所有方案,每行1个。 首先,同一行相邻两个数用一个空格隔开。其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面。#include <bits/stdc++.h>using namespace std;int n,a[20];bool flag[20];vo原创 2021-01-14 19:43:45 · 100 阅读 · 0 评论 -
算阶第一章64位整数乘法
龟速乘题目描述求 a 乘 b 对 p 取模的值,其中 1≤a,b,p≤10^18输入和输出Input第一行a,第二行b,第三行p。Output一个整数,表示a*b mod p的值。——————————————————————————————————首先只是64位整数乘法,而且会取模,所以不需要写高精。#include <bits/stdc++.h>using namespace std;unsigned long long a,ans,b,q;int main(){原创 2021-01-14 19:44:13 · 92 阅读 · 0 评论 -
算阶第一章a^b
题目描述求 a 的 b 次方对 p 取模的值,其中 1≤a,b,p≤10^9输入和输出Input三个用空格隔开的整数a,b和p。Output一个整数,表示a^b mod p的值。样例Sample Input2 3 9Sample Output8数据规模与约定时间限制:1s1s空间限制:256MB#include <bits/stdc++.h>using namespace std;int power(int a,int b,int p){ int ans=1原创 2021-01-14 19:44:27 · 96 阅读 · 0 评论 -
算阶第二章Largest Rectangle in a Histogram
Largest Rectangle in a Histogram传送门.题目描述这道题让求直方图中最大的矩形输入和输出Input输入包含多组数据。每组数据包含一行,第一个正整数N表示有N个矩形,接下来N个正整数描述其高度。 数据以N=0结束。 数据范围参看英文题面。Output对于每组数据输出一行包含一个正整数,表示该组数据的答案。样例Sample Input7 2 1 4 5 1 3 34 1000 1000 1000 10000Sample Output84000#i原创 2021-02-03 07:15:23 · 53 阅读 · 0 评论 -
AtCoder Beginner Contest 194 E - Mex Min
题意大概:给一个不超过1.5×1061.5\times10^61.5×106的数组A1A_1A1到AiA_iAi长度为mmm,和一个nnn,给出每连着的nnn个数中没出现的最小数中的最小数。思路:一看这题不就滑动窗口(在这里有详lue解)么!!!在其他oj上粘过来之后改了改就直接交了,结果就又看了看题后注意到只要是没出现的数中的最小数就行。数据也不大,开个数组记录前nnn个数中每个数的出现次数并找出没出现的数中的最小数,然后双指针一个指头一个指尾,每次把A尾A_尾A尾的出现次数减一,A头A_原创 2021-03-08 21:32:57 · 302 阅读 · 0 评论