USACO19JAN Redistricting】的更多相关文章

原题链接 首先有一个\(O(nk)\)的很显然的\(dp\),把荷斯坦牛看成\(1\),把更赛牛看成\(-1\),这样就可以很方便地通过前缀和来判断某一段中谁有优势了 考虑怎么优化,观察转移: \[f[i]=min\{f[j]+[sum[i]-sum[j]\leqslant 0]\},1\leqslant i-j\leqslant k\] 因为\([sum[i]-sum[j]\leqslant 0]\)只能为\(0\)或\(1\),那么我们开一个双关键字的单调队列维护一下就好了 代码在此: #i…
题目链接:戳我 一个优先队列优化DP 一定要注意第二关键字的排序啊!!我真的是菜,被坑了好久qwq 设\(f[i]\)表示前i个的最小答案,从前面选择的时候第一关键字是f[j]的大小,第二关键字是要确保[j+1,i]区间产生的贡献尽可能小 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<que…
随时可能弃坑. 因为不知道最近要刷啥所以就决定刷下usaco. 优先级排在学习新算法和打比赛之后. 仅有一句话题解.难一点的可能有代码. 优先级是Gold>Silver.Platinum刷不动...(可能有一两道?) 2015 Feb Gold BZOJ3939. [Usaco2015 Feb]Cow Hopscotch 这题洛谷数据过水,\(O(n^4)\)的dp跑的飞快...所以建议在bzoj写. 但是还是要考虑一下4次方的dp的...其实就是强行枚举转移点,我们可以试着维护前缀和,那么只要…
总传送门 T1. [USACO19JAN] Redistricting P luogu P5202 思路: 这种每次选出段长有个上限\(k\)的常常是和单调队列有关. 这里是单调队列优化dp 不过一开始想不太清有什么单调性. 发现每次的贡献为\(0/1\) 因此如果\(i<j\)且\(dp_i<dp_j\).\(i\)最多就和\(j\)一样贡献直接删去. 如果\(dp_i=dp_j\)你需要考虑中间段的贡献,决定是否删. 不过总之我们的目的是让优劣性单调递减(队首最优) 如果段\([i+1..…
题面:P5200 [USACO19JAN]Sleepy Cow Sorting 题解: 最小操作次数(记为k)即为将序列倒着找第一个P[i]>P[i+1]的下标,然后将序列分成三部分:前缀部分(待转移部分),k,后缀部分(不需转移部分). 用树状数组维护前缀部分每一个数挪到后缀部分所需的最小代价(即插到第一个小于它的数前)(这部分完全可以用线段树做). 代码: #include<cstdio> #include<cstring> #include<iostream>…
P5204 [USACO19JAN]Train Tracking 2 毒毒题,对着嘤文题解看了贼久 首先考虑此题的一个弱化版本:如果输入的所有\(c_i\)相等怎么做 现在假设有\(len\)个数,取值从\(v\)到\(10^9\),而且每连续\(k\)个数至少有一个是\(v\) 那么取值就只有\(v\)和\(>v\)两种取值了,\(>v\)的取值有\(10^9-v\)种,设为\(x\) 那么有一个显然的dp,\(f_i\)表示这个问题i个数的答案 枚举这个数列的最后一个取值为\(v\)的数,…
噩梦的回忆.. 上周日在机房打的模拟赛,结果十分惨烈,就最后一题yy出了正解结果玄学的只拿了80 考试结果:0+0+80=80 订正时对着T3打了2hours结果还是90 订正结果:100+100+90=290 我太弱了QAQ T1 Luogu P5196 [USACO19JAN]Cow Poetry 题目链接 思路:dp+神奇的数学推导 快速幂一开始还写锅了,受到了ftq大佬的嘲笑 code #include<bits/stdc++.h> using namespace std; const…
P5200 [USACO19JAN]Sleepy Cow Sorting 题目描述 Farmer John正在尝试将他的N头奶牛(1≤N≤10^5),方便起见编号为1…N,在她们前往牧草地吃早餐之前排好顺序. 当前,这些奶牛以p1,p2,p3,…,pN的顺序排成一行,Farmer John站在奶牛p1前面.他想要重新排列这些奶牛,使得她们的顺序变为1,2,3,…,N,奶牛1在Farmer John旁边. 今天奶牛们有些困倦,所以任何时刻都只有直接面向Farmer John的奶牛会注意听Farme…
题目 这题的数据有点水,暴力合并\(set\)好像过了 分析一下这个题的性质,发现我们一条非树边就会形成一个环,而我们要求选择两个非树边,就会形成两个环,要求不走重复的点,就是说我们需要走一个大环,且必须经过这两个小环 显然需要这两个小环有至少一条公共边 发现问题转化成了求有多少对路径,这对路径有公共边 应该可以用数据结构来维护大力讨论的,当然树上差分的正解思路也非常妙 于是我们写个暴力吧! 对于这道题我第一想法是启发式合并\(set\),我们可以利用如同树上差分那样的方式,对于一条路径\((u…
题面 Solution: 这是一道很好的dp题. 一开始看不懂题面没有一点思路,看了好久题解才看懂题目... \(y[i]\) 为第 \(i\) 个词结尾,\(l[i]\) 为第 \(i\) 个词长度. 设状态 \(f[i][j]\) 为长度为 \(i\) 的,以 \(j\) 结尾的一句诗的方案数,那么 \[ f[i][Y] = \sum_{y[i]=Y}\sum_{x=1}^{n}f[i-l[j]][x] \] 发现后面那一坨可以预处理,设 \[ g[i]=\sum_{x=1}^nf[i][x…