首页 > TAG信息列表 > HNOI2008
[HNOI2008]玩具装箱
「HNOI2008」玩具装箱 题目大意 有 \(n\) 个玩具,第 \(i\) 个玩具的价值为 \(c_i\) 。这 \(n\) 个玩具排成一排,要求将这些玩具分成若干段,对于一段 \([l,r]\) ,其代价为 \((r-l+\Sigma_{i=l}^{r}c_i-L)^2\) 。其中 \(L\) 是一个常量,求分段最小代价。\((1 \leq n \leq 5 \times 10^4,HNOI2008 越狱
HydroOJ の 题目链接 运用容斥原理,越狱的情况总数等于所有的情况减去不越狱的情况。 所有的情况为 \(m^n\),不越狱的情况为 \(m(m-1)^{(n-1)}\)。 快速幂求解相减即可 AC Code #include <bits/stdc++.h> using namespace std; const int MOD = 100003; typedef long long ll; ll[HNOI2008]GT考试
咕了一年的题(那个时候我刚打完 J 组,因为 NOIp 考了字符串于是开始学习 kmp),今天才写掉(话说那个时候我也不会矩乘)。 看到题不会,多半是 DP,然后发现 \(M\) 这么小,\(N\) 这么大,猜测矩乘。 这样我们就糊出了这道题,完结撒花。 考虑设计 \(\displaystyle f_{i,j}\) 表示考虑了前 \(i\) 位,P3195 [HNOI2008]玩具装箱
#include<bits/stdc++.h> #define N 50000+10 #define ll long long #define go(i,a,b) for(int i=a;i<=b;++i) using namespace std; ll s[N],f[N],L; int queuee[N]; inline double X(int x){return s[x];} inline double Y(int y){return f[y]+(s[y]+L)*(s[y]+L)洛谷 P3195 [HNOI2008] 玩具装箱
链接: P3195 题意: 给出 \(n\) 个物品及其权值 \(c\),连续的物品可以放进一个容器,如果将 \(i\sim j\) 的物品放进一个容器,产生的费用是 \(\left(j-i+\sum\limits_{k=i}^jc_k-L\right)^2\),其中 \(L\) 是一个给出的常数,现在需要把所有物品都放进容器,请你最小化总费用。 分析: 这是一道题解 P3197 【[HNOI2008]越狱】
P3197 [HNOI2008]越狱 题目大意: 有 \(n\) 个点 \(m\) 种颜色,每个点都有一个颜色,问有相邻的点颜色相同的方案数。 solution: 直接计算比较麻烦,考虑容斥: 首先我们可以计算出所有可能性:第一个点有 \(m\) 种选择,第二个点也有 \(m\) 种选择,根据乘法原理,同理可得共有 \(m^n\) 种方案。 然[HNOI2008]GT考试
Code: #include<cstdio> #include<algorithm> #include<string> #include<cstring> #include<queue> #define ll long long using namespace std; void setIO(string a){ freopen((a+".in").c_str(),"r",stdin);} int noP3197 [HNOI2008]越狱
题目描述 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 输入输出格式 输入格式: 输入两个整数M,N.1<=M<=10^8,1<=N<=10^12 输出格式:可能越狱的状态数,模100003取P3193 [HNOI2008]GT考试
原题链接 考察:矩阵快速幂 思路: 就是密码设计那题的矩阵快速幂版.下面是密码设计的递推代码. for(int i=1;i<=n;i++)//已经构造了i个字符. for(int j=0;j<len;j++)//j是已经子串匹配了的位置 for(char k='a';k<='z';k++)//枚举密码的下一个字符是k. {[HNOI2008]玩具装箱TOY
嘟嘟嘟 决策单调性dp。 首先dp方程很好想 \[dp[i] = min_{j = 0} ^ {i - 1} (dp[j] + w(j + 1, i)) \] 其中\(w(i, j) = (i - j + \sum _ {i = l} ^ {j} C_i - L) ^ 2\) 但是我不会四边形不等式,于是打表,发现决策是单调的,那么就可以优化掉到\(O(n \log{n})\)了。 优化的关键思想[HNOI2008]GT考试
嘟嘟嘟 这道题刚开始我连dp方程都没设出来,现在想一想还是我对dp的理解不够深。 令\(dp[i][j]\)表示长串匹配到第\(i\)位,短串匹配到第\(j\)位时的方案数。因为题中说不让匹配成功,所以答案是\(dp[n][m - 1]\)。 但转移不好写,因为这个状态不够具体。应该在加一个条件:长串\(s\)[\(1\)[HNOI2008]遥远的行星
嘟嘟嘟 此题我想了半个点,得出一个重要结论:我除了暴力以外啥也想不出来。 然后看了一下题解,彻底懵了…… 对于每一个数 j,令x = j * a,因为题中说了一句“只要结果的相对误差不超过5%即可”,所以用分块解决这[1, x]。正好一块的部分[L, R]就都除以 j - (L +R) / 2……没错中位数…[HNOI2008]水平可见直线
嘟嘟嘟 很容易想到,相对于直线 l1,斜率较大的直线 l2 一定在这两条直线的交点的右侧将l1 覆盖掉,而l2在交点的左侧部分会被l1覆盖。这样的话,对于三条直线l1, l2, l3 满足k1 < k2 < k3, 设l1和l2的交点为A, l1和l3的交点为B, l2和l3的交点为 C,如果B在A的左侧,那么l2就会被完全覆[HNOI2008]越狱
题面 一道很水的数论题。 考虑不发生越狱的情况:第一个人可信m种宗教,第二个人只能信m - 1种宗教,第三个人也只能信m - 1种宗教,那么这割状态总数就是m * (m - 1)n - 1。 题中说求越狱状态总数,那么就是mn - m * (m - 1)n - 1,别忘取模。 1 #include<cstdio> 2 #include<iostrea[BZOJ]1005 [HNOI2008]明明的烦恼
题意 一棵树,给定每个点的度数,\(-1\)为无限制,求满足该度数的树的个数。 题解 prufer序列的裸题。 关于prufer序列,网上有更加详细的介绍,这里就不展开说明了,只介绍跟该题相关的性质。 所有无根树可以跟prufer序列形成双射。 一棵无根树,每个点在prufer序列出现的次数为它的度数减一。P1446-[HNOI2008]Cards【Burnside引理,dp】
正题 题目链接:https://www.luogu.com.cn/problem/P1446 题目大意 三个颜色的一些东西排在一起,给 m m m种置换,求本质不同的染色方案数。 解题思路 BP3195 [HNOI2008]玩具装箱
#本篇题解是作者学习为学习斜率优化dp而写,其中许多地方参考(或抄)了hhz6830975 的题解,见谅! 题目链接: P3195 [HNOI2008]玩具装箱 题目大意: 本题是斜率优化dp经典入门题,适合像我这种小白做.首先我们可以推出转移方程:$$f[i]=min{f[j]+(sum_{i}-sum_{j}+i-j-L-1)^{2}}$$luogu P3194 [HNOI2008]水平可见直线 |单调栈
题目描述 在 \(x-y\) 直角坐标平面上有 \(n\) 条直线 \(L_1,L_2,…L_n\),若在 \(y\) 值为正无穷大处往下看,能见到 \(L_i\) 的某个子线段,则称 \(L_i\) 为可见的,否则 \(L_i\) 为被覆盖的。 例如,对于直线: \(L_1:y=x\); \(L_2:y=-x\); \(L_3:y=0\); 则 \(L_1\) 和 \(L_2\) 是洛谷P2624 [HNOI2008]明明的烦恼
题目描述 题解 来补一补 $\text{purfer}$ 序。 可以考虑每次选择编号最小的叶子,然后删掉并且在序列中新增加与它连边的节点。这样会得到一个长度为 $n-2$ 的序列。 考虑如何将一个 $n-2$ 的序列变成一棵树。首先我们可以得到每个点的度为序列中出现次数 $+1$ ,然后我们每次选择度数[HNOI2008]玩具装箱TOY /【模板】斜率优化
[HNOI2008]玩具装箱TOY /【模板】斜率优化 一.题目简述 给定一组数列,要把他们分成几组,代每个区间[x, y]的代价是 \((y-x+\sum_{i=x}^ya[i]-L)^2\). 二.解题思路 这题转移的方程都告诉了,可是还是做不起。不过看样子是个DP题,那我们来推方程。 先把令人厌恶的\(\sum\)去掉,使BZOJ 1005. [HNOI2008]明明的烦恼
prufer序列为无根树的一种数列。长度为 $n - 2$prufer转无根树将最小编号的叶子删去,prufer序列加入其父亲。重复至树只剩下两个节点。无根树转prufer取出prufer首元素,与待选点集中最小未出现在prufer序列中的点连边,并将该点在待选点集中删去,直至待选点集剩下两个节点,将这两个节点BZOJ 1007. [HNOI2008]水平可见直线
可见的直线为一下凸壳。 先按斜率和截距从小到大排序,再用单调栈判断交点的相对位置即可。 #include <bits/stdc++.h> const int N = 5e4 + 7; const double eps = 1e-7; inline int dcmp(double x) { if (fabs(x) < eps) return 0; return x < 0 ? -1 : 1; } structBZOJ-1011&洛谷P3198遥远的行星【HNOI2008】-玄学题之分块
Time Limit: 10 Sec Memory Limit: 162 MBSec Special Judge 洛谷:时间限制1.00s 内存限制125.00MB 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1011 洛谷:https://www.luogu.com.cn/problem/P3198 Description 直线上N颗行星,X=i处有行星i,行星J受到[HNOI2008]水平可见直线
Luogu 题目描述 给定若干条直线 (都是 \(y = Ax + B\) 的形式) 求从上往下看所有可以看到的直线,从小往大输出编号 \(N \le 50000\),\(|A|,|B| \le 500000\) 正解 从上往下看,若干条直线构成的半平面交的部分才是可见的 听说直接做半平面交可以 \(O(nlogn)\) 做,但是我不会 \(y = kx +[BZOJ-1007&洛谷P3194][HNOI2008]水平可见直线--【半平面交(单调栈)】
Time Limit: 1 Sec Memory Limit: 162 MB洛谷:时间限制1.50s 内存限制125.00MB 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1007 洛谷:https://www.luogu.com.cn/problem/P3194 Description 在xoy直角坐标平面上有n条直线L1,L2,...Ln,若在y值为正无穷大