USACO3.44Raucous Rockers】的更多相关文章

USACO挂了一小时..我坚持不懈的等..终于打开了  把3章最后一题交了 可以安心的睡去了 之前题意没看清楚 不知道要有序 写了一状压 结果TLE了 再优化也TLE 后来想写状态转移时发现 它必须有序放..这下就简单多了 枚举所有最后状态 找个最大值就OK 了 ..汗..我刚交上 又打不开了 还好交得快 /* ID: shangca2 LANG: C++ TASK: rockers */ #include <iostream> #include<cstdio> #include&…
P2736 "破锣摇滚"乐队 Raucous Rockers 21通过 52提交 题目提供者该用户不存在 标签USACO 难度普及+/提高 提交  讨论  题解 最新讨论 暂时没有讨论 题目描述 你刚刚继承了流行的"破锣摇滚"乐队录制的尚未发表的N(1 <= N <= 20)首歌的版权.你打算从中精选一些歌曲,发行M(1 <= M <= 20)张CD.每一张CD最多可以容纳T(1 <= T <= 20)分钟的音乐,一首歌不能分装在…
简单的dfs题目 /* ID: yingzho1 LANG: C++ TASK: rockers */ #include <iostream> #include <fstream> #include <string> #include <map> #include <vector> #include <set> #include <algorithm> #include <stdio.h> #include &…
Raucous Rockers You just inherited the rights to N (1 <= N <= 20) previously unreleased songs recorded by the popular group Raucous Rockers. You plan to release a set of M (1 <= M <= 20) compact disks with a selection of these songs. Each disk…
[USACO3.1]形成的区域(P6432) 日期:2020-05-31 目录 [USACO3.1]形成的区域(P6432) 一.题意分析 二.算法分析 1. 暴力 0). 初始状态(红点为原点) 1). 放第一个长方形 2). 放第二个长方形 3). 放第三个长方形 4). 验证(用$COUNTIF$函数) 2. 离散化 1). 扫描线 2). 实现 初始化 放第一个长方形 放第二个长方形 放第三个长方形 统计 三.程序框架 一.题意分析 题目链接 任务:给出一张宽为\(A\)长为\(B\)的…
[USACO3.2]魔板 Magic Squares 题目背景 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题目描述 我们知道魔板的每一个方格都有一种颜色.这8种颜色用前8个正整数来表示.可以用颜色的序列来表示一种魔板状态,规定从魔板的左上角开始,沿顺时针方向依次取出整数,构成一个颜色序列.对于上图的魔板状态,我们用序列(1,2,3,4,5,6,7,8)来表示.这是基本状态. 这里提供三种基本操作,分别用大…
题目背景 对于一给定的素数集合 S = {p1, p2, ..., pK},考虑一个正整数集合,该集合中任一元素的质因数全部属于S.这个正整数集合包括,p1.p1*p2.p1*p1.p1*p2*p3...(还有其它).该集合被称为S集合的“丑数集合”.注意:我们认为1不是一个丑数. 题目描述 你的工作是对于输入的集合S去寻找“丑数集合”中的第N个“丑数”.所有答案可以用longint(32位整数)存储. 补充:丑数集合中每个数从小到大排列,每个丑数都是素数集合中的数的乘积,第N个“丑数”就是在能…
直接枚举角度 数据比较水吧 /* ID: shangca2 LANG: C++ TASK: spin */ #include <iostream> #include<cstdio> #include<cstring> #include<stdlib.h> #include<algorithm> using namespace std; struct node { ],r[],k,v; }p[]; ][]; int main() { freopen…
/* ID: shangca2 LANG: C++ TASK: msquare */ #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<stdlib.h> #include<queue> #define INF 0xfffffff using namespace std; ]; typedef struct node…
直接枚举到100水过 /* ID: shangca2 LANG: C++ TASK: ratios */ #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<stdlib.h> using namespace std; #define INF 0xfffffff ][]; int main() { freopen("rat…
DP预处理出来 i位不超过j的个数 然后再进行从小到大找第一个比I大的 然后用I减掉上一个比I小的 剩余的按照之前的方法循环找 知道剩余为0 细节挺繁琐的 对照数据改了又改 最后一组数据还超 了int.. /* ID: shangca2 LANG: C++ TASK: kimbits */ #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> #include&l…
忘记pick定理是什么了 想枚举来着 ..没枚出来 有篇pick定理的证明 貌似挺好 也没太看懂 /* ID: shangca2 LANG: C++ TASK: fence9 */ #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<stdlib.h> using namespace std; int gcd(int x,int y…
已知中前 求后序 递归一下 有一些小细节 /* ID: shangca2 LANG: C++ TASK: heritage */ #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<stdlib.h> using namespace std; ],s2[]; int o,kk; void order(int s,int e) { i…
这题水的真不易..300多行 累死了 对着数据查错啊 枚举每个边上的点到源点 是否中间隔着别的边  每条边划分500份就够了  注意一下与源点在一条直线上的边不算 几何 啊,,好繁琐 参考各种模版.. /* ID: shangca2 LANG: C++ TASK: fence4 */ #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<s…
刚开始理解有点误,想成每步都是最优的 ,结果卡在第六组数据上,, 无奈瞧了下别人的 发现自己理解错了,,我看的还是中文翻译.. 简单的记忆化 /* ID: shangca2 LANG: C++ TASK: game1 */ #include <iostream> #include<cstdio> #include<algorithm> #include<stdlib.h> #include<cstring> using namespace std…
之前做过一道类似的 国际象棋盘神马的.. 统计出以每个1作为右下角的最大正方形 那么以大于二到这个最大值之间为边的正方形都可以以这个为右下角 累加就可以了 dp[i][j] = min(dp[i-1][j],dp[i-1][j-1],dp[i][j-1])+1; /* ID: shangca2 LANG: C++ TASK: range */ #include <iostream> #include<cstdio> #include<cstring> #include&…
恶心的题啊 .. 先枚举哪个点是所有人集合的点 再枚举所有骑士遇见国王的点 如果全部枚举出来会大大的TLE 经大牛验证 只需要枚举国王周围的点就可以了+-2 之内 然后各种繁琐 各种错误 骑士有可能不带着国王一块走 也可能在他周围选个点带着走 先预处理出来每个骑士到国王周围的最短距离 然后再按上面的枚举就可以了 考虑的不全面 ..错了好多个样例 样例2,6,19,20 都模拟了一遍..还好错在小数据上 可以手算模拟一下 就知道哪错了 变量名都被我用穷了.. /* ID: shangca2 LAN…
五维DP,听着挺多的,貌似就是挺裸的dp, 最近貌似做简单的DP挺顺手..1A dp[i][j][e][o][g] = min(dp[i][j][e][o][g],dp[i-i1][j-i2][e-i3][o-i4][g-i5]+p[q])  i1,i2...为满足给出的商品数量的值 p[q]为选用当前优惠方案的价格. /* ID: shangca2 LANG: C++ TASK: shopping */ #include <iostream> #include<cstdio> #…
都忘了欧拉路径是什么了.. 用dfs搜 标记边  刚开始直接从I-N搜 直接超时 2了 先找符合起点和终点的点搜 即度数是奇数 d单dfs也超了 后来换了个姿势.. /* ID: shangca2 LANG: C++ TASK: fence */ #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<stdlib.h> using n…
题目大意: 给定一张$k$个结点,$m$条边的无向图,其中有$n$个点被标记,在这$k$个点中找出一个点使得这个点到那$n$个点的最短距离之和最小,求出这个距离和. 思路: 对于每个标记结点跑最短路,最后枚举每个结点,求出其到各个标记结点的最短距离和,取$min$. #include<cstdio> #include<cctype> #include<functional> #include<ext/pb_ds/priority_queue.hpp> inl…
传送门 f[i][j]表示前i首歌放到前j个盘里最多能放多首 ntr[i][j]表示i~j中最多能放进一张盘中多少首歌 ntr数组可以贪心预处理出来. #include <cstdio> #include <iostream> #include <algorithm> #define N 21 #define max(x, y) ((x) > (y) ? (x) : (y)) int n, t, m; int a[N], b[N], ntr[N][N], f[N]…
/* ID: hk945801 LANG: C++ TASK: agrinet */ #include<iostream> #include<cstdio> using namespace std; int a[110][110],d[110],p[110]; int main(){ int i,j,k,m,n,ans; //freopen("agrinet.in","r",stdin); //freopen("agrinet.ou…
题目传送门 题意:n首个按照给定顺序存在m张光盘里,每首歌有播放时间ti,并且只能完整的存在一张光盘里,问最多能存几首歌 分析:类似01背包和完全背包,每首歌可存可不存,存到下一张光盘的情况是当前存不下了.dp[i][j][k] 表示前i首歌,存在前j张光盘,光盘已存k时间时最多能存多少歌曲.状态转移方程:dp[i][j] = max (dp[i-1][j][k], dp[i-1][j][k-a[i]] + 1, dp[i-1][j-1][t] + 1) (分别代表不存,还能存,下一张存的状态)…
题目描述 你刚刚继承了流行的“破锣摇滚”乐队录制的尚未发表的N(1 <= N <= 20)首歌的版权.你打算从中精选一些歌曲,发行M(1 <= M <= 20)张CD.每一张CD最多可以容纳T(1 <= T <= 20)分钟的音乐,一首歌不能分装在两张CD中.CD数量可以用完,也可以不用完 不巧你是一位古典音乐迷,不懂如何判定这些歌的艺术价值.于是你决定根据以下标准进行选择: 1.歌曲必须按照创作的时间顺序在所有的CD盘上出现.(注:第i张盘的最后一首的创作时间要早于第…
这道题也是一道非常有意思的区间$dp$,和在纪中的这道题有点像:取数游戏 (除了取数规则其它好像都一样诶) 当时在纪中的时候就觉得这个$dp$非常不好想,状态定义都不是很容易想到. 但是做过一道这种题之后就要好多了. 以下才是正题: 两人都按照最优策略进行游戏的话,就可以定义状态$dp[i][j]$表示当前操作者面对(用词...有点奇怪?)的区间是$[i,j]$的最优解(最大的数的和),也就是他能够取的数是$a[i]$和a[j]的状态下的最优解. 两人都按最优策略取,取了一次之后先手变后手,所以…
做完之后看到题解里面很多bfs,dfs,甚至还有dp? 写了一个不知道怎么称呼它的方法,暂且叫他乱搞吧. 用数组a[][]预处理出以当前行作为最底层,这一列从上往下的最长的1的长度. 如果这个格子为0的话,a[i][j]就是0,当然也可以特殊标记一下(比如我就用的-1) 统计答案的时候,就枚举每个非0的格子作为最底层第一个格子依次往右边拓展,记录途中最短的从上往下1的长度.由于是正方形,能构成的正方形的边长为min(pos-j+1,m)min(pos−j+1,m)(见代码).当纵向延伸的长度大于…
松下问童子,言师采药去. 只在此山中,云深不知处.--贾岛 题目:魔板 Magic Squares 网址:https://www.luogu.com.cn/problem/P2730 这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 题目描述 我们知道魔板的每一个方格都有一种颜色.这8种颜色用前8个正整数来表示.可以用颜色的序列来表示一种魔板状态,规定从魔板的左上角开始,沿顺时针方向依次取出整数,构成一个颜色序列. 对于上图的魔板状态,我们用序列(1,2,3,4,5,6,7,…
\(\color{purple}{Link}\) \(\text{Solution:}\) 考虑区间\([l,r]\)的最优解.显然它可以由\([l+1,r]\)或\([l,r-1]\)转移而来.至此出现区间\(dp\)模型. 因为这个是求双方最优解,显然对于一段区间\([l,r]\),如果对手选择最优解,那么剩下的也是我们的最优解. 于是直接记忆花搜索即可.复杂度\(O(n^2).\) #include<bits/stdc++.h> using namespace std; int n,a[…
题目描述 农夫$John$发现做出全威斯康辛州最甜的黄油的方法:糖.把糖放在一片牧场上,他知道$N(1\leqslant N\leqslant 500)$只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油.当然,他将付出额外的费用在奶牛上. 农夫$John$很狡猾.像以前的$Pavlov$,他知道他可以训练这些奶牛,让它们在听到铃声时去一个特定的牧场.他打算将糖放在那里然后下午发出铃声,以至他可以在晚上挤奶. 农夫$John$知道每只奶牛都在各自喜欢的牧场(一个牧场不一定只有一头牛).给出各头牛…
题目背景 Farmer John 被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助. 题目描述 FJ 已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场.为了用最小的消费,他想铺设最短的光纤去连接所有的农场. 你将得到一份各农场之间连接费用的列表,你必须找出能连接所有农场并所用光纤最短的方案.每两个农场间的距离不会超过 10^5105. 输入格式 第一行农场的个数 NN(3 \leq N \leq 1003≤N≤100).…