[JOISC2014]スタンプラリー】的更多相关文章

[JOISC2014]スタンプラリー 题目大意: 有\(n(n\le3000)\)个车站,另有一个起点站和终点站,所有车站排成一条链,相邻两个车站之间的距离为\(t\).每个车站都有一个上行站台.一个下行站台.除起点站和终点站外,每个站点都有一个超市,超市在上行站台和下行站台之间.对于站点\(i\),从上行站台到超市的时间为\(u_i\),从超市到上行站台的时间为\(v_i\),从下行站台到超市的距离为\(d_i\),从超市到下行站台的距离为\(e_i\).问从起点站出发,经过所有超市到达终点站…
[JOISC2014]友だちをつくろう 题目大意: 一个\(n(n\le10^5)\)个点,\(m(m\le2\times10^5)\)条边的有向图.对于两个点\(i,j\),如果存在一个点\(k\)使得存在边\(k\to i\)和边\(k\to j\),那么就新增边\(i\to j\)和\(j\to i\).不断进行上述操作,直至无边可加为止.问最终能有几条边. 思路: 用并查集维护所有的完全图.BFS将剩下能连的边连上. 源代码: #include<queue> #include<c…
[JOISC2014]ストラップ 题目大意: 有\(n(n\le2000)\)个挂饰,每个挂饰有一个喜悦值\(b_i(|b_i|\le10^6)\),下面有\(b_i(b_i\le10^6)\)个挂钩,可以用来挂别的挂饰.一开始只有一个挂钩,问喜悦值总和的最大值. 思路: \(f[i][j]\)表示考虑前\(i\)个挂饰,还多\(j\)个钩子时,喜悦值总和的最大值. 考虑同样的一堆挂件,先挂\(a_i\)大的可以尽可能避免钩子不够用的情况.因此需要先将所有挂件按\(a_i\)从大到小排序. 时间…
[JOISC2014]電圧 题目大意: 一个\(n(n\le10^5)\)个点,\(m(m\le2\times10^5)\)条边的无向图.要在图中找到一条边,满足去掉这条边后,剩下的图是一个二分图,且若再将这条边接上,两端一定在二分图的同一侧.问有多少这样的边. 思路: 这样的边一定满足在所有奇环的交上,并且不属于任何一个偶环. 随便求出原图的一棵生成树,枚举每一个非树边,若构成奇环,则将对应环上边权+1,否则-1.最后统计边权=奇环个数的边的数量.树链剖分+线段树维护即可. 对于包含多条非树边…
[JOISC2014]バス通学 题目大意: 有\(n(n\le10^5)\)个点和\(m(m\le3\times10^5)\)条交通线路.第\(i\)条交通线路可以让你在时间\(x_i\)从\(a_i\)出发,并在\(y_i\)时到达\(b_i\).\(q(q\le10^5)\)次询问,每次询问若要在时间\(l_i\)到达\(n\)点,最晚什么时候要从\(1\)点出发. 思路: 将每条交通线路拆成两种操作:出发和到达. 用\(f_i\)表示乘上第\(i\)辆车最晚几点出发,\(g_i\)表示到达…
[JOISC2014]たのしい家庭菜園 题目大意: 给定一个长度为\(n(n\le3\times10^5)\)的序列\(A(A_i\le10^9)\).只能交换相邻两个数,问最少需要几步可以将它变成一个单峰序列. 思路: 对于每个元素,看它两边哪边比他大的数少,就把它移到哪边.用树状数组维护即可,时间复杂度\(\mathcal O(n\log n)\). 源代码: #include<cstdio> #include<cctype> #include<climits> #…
[JOISC2014]歴史の研究/[BZOJ4241]历史研究 题目大意: 一个长度为\(n(n\le10^5)\)的数列\(A(A_i\le10^9)\),定义一个元素对一个区间\([l,r]\)的贡献为\(A_i\times cnt(A_i)\),其中\(cnt(A_i)\)表示\(A_i\)在区间内的出现次数.\(q(q\le10^5)\)次询问,每次询问一个区间内贡献最大的元素的贡献. 思路: 分块. \(cnt[i][j]\)表示前\(i\)块内\(j\)的出现次数,\(sum[i][…
[BZOJ4237]稻草人/[JOISC2014]かかし 题目大意: 平面上\(n(n\le2\times10^5)\)个点,若一个矩形各边与坐标轴平行,左下角和右上角都在\(n\)个点之中,且内部不包含其它的点,则这个矩形是合法的.问给定的点中包含多少合法的矩形? 思路: 将点按照\(x\)排序,使用CDQ分治.分治的两边分别按照\(y\)排序,左右两遍分别维护一个单调栈.左边的单调栈按照\(x\)单调递减,右边的单调栈按照\(x\)单调递增.右边的栈中的点作为右上角,用树状数组维护左边的单调…
P4138 [JOISC2014]挂饰 ◦          N个装在手机上的挂饰.挂饰附有可以挂其他挂件的挂钩.每个挂件要么直接挂在手机上,要么挂在其他挂件的挂钩上.直接挂在手机上的挂件最多有1个.此外,每个挂件有一个安装时会获得的喜悦值,用一个整数来表示,可能为负. ◦          想要选出一些挂饰挂在一起,最大化所有挂饰的喜悦值之和. ◦          1<=N<=2000           0<=Ai<=N(1<=i<=N)表示挂勾的数量     …
嘟嘟嘟 这题其实还是比较好想的,就是有一个小坑点. 首先钩子多的排在前面,然后就是dp了. dp方程就是\(dp[i][j]\)表示到了第\(i\)建物品,还剩\(j\)个挂钩的最大喜悦值.转移就很显然了:\(dp[i][j] = max \{dp[i - 1][j + 1 - a[i]] + b[i] \}\). 然后坑点在于每一件物品的钩子数量都可能有2000个,因此枚举\(j\)的时候讲道理应该到\(sum[i]\),\(sum[i]\)表示1到\(i\)件物品共有多少个钩子.我因为这个在…