LuoguP6857 梦中梦与不再有梦 题解】的更多相关文章

Update \(\texttt{2020.10.20}\) 增加了证明.感谢@东北小蟹蟹(dbxxxqwq)的提醒. Content 有一个 \(n\) 个点的无向图,每两个点之间都有一条边直接相连.你从 \(1\) 出发,每条边最多只能经过一次,当走到一个点,其相连的边都不能走时,你会停下来.问你最多能够经过多少条边. 数据范围:\(T\) 组数据,\(T\leqslant 10^5,n\leqslant 10^9\). Solution 我们先画图来找规律,先是 \(n=3\) 的,由样例…
按照旧例,先安利一下主要作者:一扶苏一 以及扶苏一直挂念的——银临姐姐:银临_百度百科 (滑稽) 好哒,现在步入正题: 先看第一题: 题解: 在NOIP范围内,看到“求方案数”,就说明这个题是一个计数问题.数据范围小的时候一般用DP/递推,数据范围大了的话一般就是数学问题的(组合数学警告).如果这道题用DP的话,状态即为:dp[i][j]表示第i盆花摆到第j个空的方案数.状态转移方程即为:dp[i][j]=∑dp[i-1][k],k=2*(i-2)+1,...,j-2;时间复杂度为O(n2m).…
UVA540 Team Queue 题解 题目描述:题目原题 https://vjudge.net/problem/UVA-540 Queues and Priority Queues are data structures which are known to most computer scientists. The Team Queue, however, is not so well known, though it occurs often in everyday life. At l…
Ynoi 中少见的不卡常题呢....虽说有 50 个数据点... 果然还是道好题 noteskey 总之就是补集转化的思想,算出每种颜色选点的总方案减去不可行方案(就是不包含 该种颜色的点的区间选取方案)就是每种颜色的贡献 然后就是考虑每种颜色把一个区间分成若干份,那么我们只需要算出这若干份区间内的子区间个数就行了 具体操作也就是考虑每次加入一个点后会减去原来区间的贡献然后加上新的两个区间的贡献 那么删除点也是同理 复杂度 \((n+m)log(n+m)\) ,说白了就是 \(O(n ~log…
题目传送门 这道题暴力又让我过了...数据真的很水(luogu) 暴力枚举n~m的每个数,再统计一次,交付评测...AC #include<bits/stdc++.h> using namespace std; ]; int main(){ scanf("%d%d",&n,&m); for(int i=n;i<=m;i++){ ,fs; ){ ++k; fs=tmp%; tmp/=; a[fs]++; } } ;i<=;i++) printf(&…
B题(数学题: 问(1+sqrt(2)) ^n  能否分解成 sqrt(m) +sqrt(m-1)的形式  如果可以 输出 m%1e9+7 否则 输出no n<=1e18 刚看题没思路 暴力一下吧 发现根本没有no的情况 那么就好办多了 所求的值序列为 1, 2, 9, 50, 289, 1682, 9801, 57122, 332929, 1940450, 11309769 设(1+sqrt(2)) ^n为 A_n+B_n*sqrt(2) ,则: A_n = A_(n-1)+2*B_(n-1)…
一道码量比较大的广搜题,但让我这个辣鸡小学生自闭了一天呜呜呜. 一开始看数据\(n,m \leq 1000\)也并不是特别大,于是用就开始用广搜乱水了. 由于这道题每走一步的代价不是\(1\),所以并不能保证每次广搜搜到的点就是最优解.所以我考虑用一个数组来\(h[i][j][sun][kill]\)维护一下. 其中的\({i,j,sun,kill}\)是记录一个状态,表示在走到点\((i,j)\)时是否有太阳花田和楼关剑.而\(h[i][j][sun][kill]\)则表示到达这个状态下的最短…
每日一题 day33 打卡 Analysis 这道题太难♂了,居然才是蓝的. 每个位子和每种字符都是独立的,对每种字符都记录一下位子. 用f[i]=0 or 1 表示长度为ii的后缀可不可以,0表示可以,1表示不行. 考虑f只有0和1,可以用bitset优化,对每种字符都开一个bitset记录是不是该字符. 在末尾加一个字符时,左移后做or运算. 在开头加一个字符时,直接or上该字符出现的状态左移长度减一位. 答案就是范围内0的个数. 复杂度O(m^2/w) #include<iostream>…
一道水题 (还是做了一个小时,我太菜了 基本思路: 题里面说,4根棍子拼成一个正三角形(等边三角形) 若设这四根棍子长度为\(a,b,c,d\)且\(a≥b>c≥d\) 那很容易得到 (真的很容易): \(a=b=c+d\) 自然,我们只需枚举\(a\)的长度和\(c\)的长度就行了 长度最长才5k,木棍用桶按长度装一下,遍历的时候也方便. 代码要好好看完啊kora #include <bits/stdc++.h> #define c1(a) (a)//带参宏定义,本题不必写函数 #de…
G - 娜娜梦游仙境系列——梦醒 Time Limit: 2000/1000MS (Java/Others)    Memory Limit: 128000/64000KB (Java/Others)     Special Judge Submit Status Problem Description 娜娜离开了这个王国,走向远方,在旷野上,娜娜看到了一个大时钟,上面的时针分针秒针都在缓缓转动,那只挥着翅膀的天使又出现了,天使说:“外面天已经亮了,娜娜你别睡过头哟~”,娜娜问:“我怎样才能醒过…