[NOIP2017 提高组] 宝藏】的更多相关文章

解析 我们观察范围可以发现n非常的小,(一般来说不是搜索就是状压dp)所以说对于这题我们可以用记忆化搜索或者dp,我们发现起点不同那么最终答案也就不同,也就是说答案是跟起点有关的,于是我们便可以想到去枚举每个起点,那么我们可以定义状态 $ f[i] $ 表示当前状态为 $ i $ 的时候最小花费,那么我们可以写出状态转移方程 $ f[x|(1<<(j-1))]=min(f[x]+dis[i]* d[i][j],f[x|(1<<(j-1))]) $ ((1<<(j-1))…
#include<cstdio> #include<cctype> #include<algorithm> inline int getint() { register char ch; while(!isdigit(ch=getchar())); register '; )+x)<<)+(ch^'); return x; } const int inf=0x7fffffff; ; <<N]; void dfs(const int state)…
传送门 这是蓝书上状压的例题啊,怎么会出现在模拟赛里 不过就算原题我也没把握写对 核心思路: 先令\(dp[s]\)为当前状态为\(s\)时的总花费最小值,\(cnt[s][i]\)为这个方案中由根节点(赞助商打通的节点)到\(i\)节点最少经过的房间数 此题转移较为麻烦,转移时需要知道当前每个点经过了几个房间 考虑对每个状态开个数组记录到此状态每个点经过了几个房间 注意这个\(cnt\)数组是\(dp\)值的附属物,所以\(dp\)值更新的时候\(cnt[]\)需要跟着覆写过去 然后就是一个状…
考虑到这种对于某种操作顺序有一个权值. 且这个权值有一个\(O(n)\)或者更好的复杂度求出. 求最值. 那可以用模拟退火. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<ctime> #include<cmath> #define ll long long #define N 20 ll n,m; ll f[N][N]…
[题解]NOIP2017 提高组 简要题解 小凯的疑惑(数论) 不讲 时间复杂度 大力模拟 奶酪 并查集模板题 宝藏 最优解一定存在一种构造方法是按照深度一步步生成所有的联通性. 枚举一个根,随后设\(dp(i,j)\)表示最大深度为\(i\)且当前联通的集合是\(j\)的最小答案.预处理\(dis(u,j)\)表示当\(j\)集合内的点都存在时,\(u\)到这些点的最短的最短边. 转移: \[ dp(i,j)=\min \{dp(i-1,j),dp(i-1,s)+(i-1)\times \su…
[NOIp2017提高组]列队 题目大意 一个\(n\times m(n,m\le3\times10^5)\)的方阵,每个格子里的人都有一个编号.初始时第\(i\)行第\(j\)列的编号为\((i-1)*m+j\). \(q(q\le3\times10^5)\)次事件,每次在\((x,y)\)位置上的人离队.剩下的人向左.向前填补空位,然后离队的人在\((n,m)\)处归队. 求每次离队事件中的人的编号. 思路: 对于每一行\(1\sim m-1\)列建一棵线段树,对于最后一列也建一棵线段树.开…
5196. [NOIP2017提高组模拟7.3]B Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed Limits   Goto ProblemSet Description…
5197. [NOIP2017提高组模拟7.3]C Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed Limits   Goto ProblemSet Description…
5195. [NOIP2017提高组模拟7.3]A Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed Limits   Goto ProblemSet Description…
5184. [NOIP2017提高组模拟6.29]Gift (Standard IO) Time Limits: 1000 ms  Memory Limits: 262144 KB  Detailed Limits   Goto ProblemSet Description…