Description 滑雪比赛bobsled 贝西参加了一场高山急速滑雪比赛,滑道总长度为 L.出发时,她的初速度为 1,贝西可以加速 或减速,每过 1 米,她能将速度增加 1.减少 1 或保持不变.在滑雪的过程中,贝西会遇到 N 个转 弯点,编号为 i 的转弯点距离起点有 Ti 米.安全起见,贝西到达 i 号转弯点时的速度不能超过 Si. 穿过终点的速度是没有限制的.请问在整个比赛过程中,贝西能够达到的最大速度是多少? Input Format 第一行:两个整数 L 和 N,2 ≤ L ≤…
NC24866 [USACO 2009 Dec S]Music Notes 题目 题目描述 FJ is going to teach his cows how to play a song. The song consists of N (1 <= N <= 50,000) notes, and the i-th note lasts for Bi (1 <= Bi <= 10,000) beats (thus no song is longer than 500,000,000…
题目描述 输入 * 第1行: 两个由空格隔开的整数: N和V * 第2到第N+1行: 第i+1行表示第i种游戏平台的价格和可以在这种游戏平台上面运行的游 戏.包含: P_i, G_i还有G_i对由空格隔开的整数GP_j, PV_j 输出 * 第1行: 农夫约翰在预算内可以得到的最大的产出值. 样例输入 3 800 300 2 30 50 25 80 600 1 50 130 400 3 40 70 30 40 35 60 样例输出 210   一看到这题第一感觉就是背包,这题确实就是背包,只不过…
这道题首先要明确一点,那就是当你从一个点走到自己时,也是需要花费这个点点权值的费用.这个点卡了我两次QWQ 然后我比较喜欢分两步搞: 首先,我们利用floyd的一个性质:就是在更新其他点之间的路线时要先引入一个点,而枚举是按编号 再来看这道题,如果它不要求加点权,那么就是裸的floyd,所以这道题难点就在于如何确定一条路径上最大的点,这时就容易让人想到这道题有一个排序步骤,因为排完序后在每一位都可以确定它前面的点都比它大/小. 好了,那么显然是在枚举的时候,如果我们把小的点先枚举,大的点后枚举,…
题目描述 跟所有人一样,农夫约翰以着宁教我负天下牛,休叫天下牛负我的伟大精神,日日夜夜苦思生 财之道.为了发财,他设置了一系列的规章制度,使得任何一只奶牛在农场中的道路行走,都 要向农夫约翰上交过路费. 农场中由N(1 <= N <= 250)片草地(标号为1到N),并且有M(1 <= M <= 10000)条 双向道路连接草地A_j和B_j(1 <= A_j <= N; 1 <= B_j <= N).奶牛们从任意一片草 地出发可以抵达任意一片的草地.FJ已…
Description 翰家有 N 片草地,编号为 1 到 N ,彼此之间由 M 条双向道路连接,第 i 条道路连接了 Ai 和Bi,两片草地之间可能有多条道路,但没有道路会连接同一片草地,现有的道路可以保证任意两片草 地都是连通的. 有一天,约翰宣布奶牛走路要收过路费,只要奶牛走过第 i 条道路,就要收费 Li 元.此外,约 翰还要求每头奶牛购买牌照,他为每片草地设置了牌照标准,如果奶牛购买的牌照价格低于某片草地 的标准,她将被禁止进入那片草地.第 i 片草地的牌照标准为 Ci. 新政策一出,…
N (1 <= N <= 39),问有多少种把1到N划分为两个集合的方法使得两个集合的和相等. 如果总和为奇数,那么就是0种划分方案.否则用dp做. dp[i][j]表示前 i 个数划分到一个集合里,和为j的方法数. dp[i][j]=dp[i-1][j]+dp[i][j-i] n 为 39 时,1 到 39 的和为 780,枚举 j 的时候枚举到 s/2,最后输出dp[n][s/2]/2. http://train.usaco.org/usacoprob2?a=z5hb7MFUmsX&…
USACO前面好像有类似的题目..dp(i,j)=min(dp(i+1,j),dp(i+1,j+1),dp(i,j+1))+1  (坐标(i,j)处无tree;有tree自然dp(i,j)=0) .dp(i,j)表示以坐标(i,j)为左上角的barn边长最大值,dp(i+1,j),dp(i,j+1)分别表示向右和向下能扩展的最大边长,但是以此为正方形时,右下方的一个格子没有考虑到,所以就+个dp(i+1,j+1).边界为:dp(i,j)=1(i==n-1或j==n-1). -----------…
题目大意: 给定区间 l r 求得区间中有多少个数 数的各个数位里出现最多次的数>=数的长度的一半 如2233 3334 枚举k在数中出现次数在一半以上 那么求出的所有方案数中应该减去 两个数各占一半的情况 #include <bits/stdc++.h> using namespace std; #define LL long long #define INF 0x3f3f3f3f #define mem(i,j) memset(i,j,sizeof(i)) #define inc(i…
题意:求第k大的最多有l个1的n位二进制. 题解:dp[i][j]表示长度为i最多有j个1的二进制有多少种,则有: 状态转移:dp[i][j]=dp[i-1][j]+dp[i-1][j-1],即第i位放1或者0. 边界条件:dp[0][i]=1,dp[i][0]=1. 长度为n,最多m个1的二进制可以分为: 以0开始的一部分,共有dp[n-1][m]个, 和以1开始的一部分,共有dp[n-1][m-1]个. 如果dp[n-1][m]≥k,说明第k大的就在0开始的那一部分的第k大的, 否则就是1开…