【bzoj1700】Problem Solving 解题 dp】的更多相关文章

[Usaco2007 Jan]Problem Solving 解题 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 492  Solved: 288[Submit][Status][Discuss] Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地说,他们有P (1 <= P <= 300) 道题目要做. 他们还离开了农场并且象普通人一样找到了工作. 他们的月薪是M (1 <= M…
题目描述 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地说,他们有P (1 <= P <= 300) 道题目要做. 他们还离开了农场并且象普通人一样找到了工作. 他们的月薪是M (1 <= M <= 1000) 元. 他们的题目是一流的难题,所以他们得找帮手.帮手们不是免费的,但是他们能保证在一个月内作出任何题目.每做一道题需要两比付款, 第一笔A_i(1 <= A_i <= M) 元在做题的那一个月初支付, 第二笔B_i元(1…
Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地说,他们有P (1 <= P <= 300) 道题目要做. 他们还离开了农场并且象普通人一样找到了工作. 他们的月薪是M (1 <= M <= 1000) 元. 他们的题目是一流的难题,所以他们得找帮手.帮手们不是免费的,但是他们能保证在一个月内作出任何题目.每做一道题需要两比付款, 第一笔A_i(1 <= A_i <= M) 元在做题的那一个月初支付, 第二…
[题意]给定n道题,每月末发放工资m,要求从1解到n,每道题需要在当月初付费ai,下月初付费bi,多道题可以安排在同月,求最少月数. [算法]DP [题解]参考自:[bzoj1700]Problem Solving 解题 dp by GXZlegend 因为当月的选择同时关系着当月和下月,贪心是错误的,有如下反例: 50 5 40 10 10 40 10 5 10 3 10 2 因此考虑DP,令f[i][j]表示解决1~i题,最后一月解决j题的最小月数.(只保证满足当月开销,也就是下月开销之后再…
[BZOJ1700][Usaco2007 Jan]Problem Solving 解题 Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地说,他们有P (1 <= P <= 300) 道题目要做. 他们还离开了农场并且象普通人一样找到了工作. 他们的月薪是M (1 <= M <= 1000) 元. 他们的题目是一流的难题,所以他们得找帮手.帮手们不是免费的,但是他们能保证在一个月内作出任何题目.每做一道题需要两比付款,…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1700 [题目大意] 共有p道题目要做,每个月收入只有n元,用于付钱做题之外的部分都会吃掉, 做题要按顺序来解决,对于一道题,在这个月需要付预做费用,下个月开始的时候还要付完成费用, 上一个月才会发上个月的工资,问最少几个月能做完这些题目 [题解] dp[j][i]表示当前最后一个月做j到i的题目用的最小月份, 我们发现如果当前月能结算上个月的完成费用和这个月的预付费用,则转移时答案加…
不能贪心!不能贪心!不能贪心! 反正有反例(有的题目月初支付款很少,月末支付款很大,和前面的题凑到一个月的话可能导致下个月写不了= =这时放后一个月,和后面的题一起开始写可能更优) 比如: 50 440 15 1043 301 10 老老实实DP吧...f[i][j]表示在第i月过后,共解决了j道题,第i月结余(可用于下个月的月初支付)的最大值.cost0[].cost1[]分别表示月初支付和月末支付 f[i][j]=max{m-sum(cost1[k+1]....cost1[j])},(前提是…
每月m<=1000块钱,有n<=300道题,要按顺序做,每月做题要花钱,花钱要第一个月预付下个月立即再付一次,给出预付和再付求最少几个月做完题,第一个月不做. 神奇的DP..竟没想出来.. 注意到这个月做题受制于上个月做的题,f[i][j]--最后做i~j题的最少月数,f[i][j]=inf(i~j不能在一个月内做完)min(f[k][i-1]+2)(做k~i-1题后再付后不能在该月立即做i~j)min(f[k]i-1]+1)(k~i-1题后再付后可立即做i~j) 括号里的判断用前缀和即可.注…
很像贪心的dp啊 这个定金尾款的设定让我想起了lolita和jk制服的尾款地狱-- 设f[i][j]为从j到i的付定金的最早月份然后从f[k][j-1]转移来,两种转移f[i][j]=min(f[i][j],f[j-1][k]+1)是当前这个月付[k-1,j-1]的尾款和[j,i]的定金,f[i][j]=min(f[i][j],f[j-1][k]+2)是先付[k-1,j-1]的尾款,下个月再付[j,i]的定金 然后答案要+2,是最后一次付定金的尾款加上第一个月没有工资 #include<iost…
题目描述 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地说,他们有P (1 <= P <= 300) 道题目要做. 他们还离开了农场并且象普通人一样找到了工作. 他们的月薪是M (1 <= M <= 1000) 元. 他们的题目是一流的难题,所以他们得找帮手.帮手们不是免费的,但是他们能保证在一个月内作出任何题目.每做一道题需要两比付款, 第一笔A_i(1 <= A_i <= M) 元在做题的那一个月初支付, 第二笔B_i元(1…
Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地说,他们有P (1 <= P <= 300) 道题目要做. 他们还离开了农场并且象普通人一样找到了工作. 他们的月薪是M (1 <= M <= 1000) 元. 他们的题目是一流的难题,所以他们得找帮手.帮手们不是免费的,但是他们能保证在一个月内作出任何题目.每做一道题需要两比付款, 第一笔A_i(1 <= A_i <= M) 元在做题的那一个月初支付, 第二…
Problem Solving with Algorithms and Data Structures using Python — Problem Solving with Algorithms and Data Structures By Brad Miller and David Ranum, Luther College http://interactivepython.org/runestone/static/pythonds/index.html https://runestone.…
ZOJ Problem Set - 3822Domination(DP) problemCode=3822">题目链接 题目大意: 给你一个n * m的棋盘,每天都在棋盘上面放一颗棋子.直到这个棋盘上的每行每列都有至少有一颗棋子.求要用的天数的期望. 解题思路:         先求出不同摆法的棋盘的概率,然后在和天数相乘就是期望.         我们将棋盘划分为四个部分:当中一部分为每行没列都至少有一个棋子.         然后得出状态转移方程:         dp[x][y][k…
Page 1 of 9KXO151 Programming & Problem SolvingAIEN-SOU - 2019Assignment 2Deadline for Submission: 10pm (Shanghai) Friday, Week 9, 26 April, 2019Maximum Marks Available: 15 (15% of the total assessment for KXO151)Submission: Via MyLONOTE: All assignm…
AST11103 Problem Solving with Programming SkillsAdditional Individual Assignment: Min-Game Programming (40%)Learning Outcomes1. Use common application software and program development tools;2. Analyze simple problems with basic problem solving skills…
这个题目容易让人误以为是贪心就可以解决了,但是细想一下很容易举出反例. dp[i][j]表示解决了i个问题,最后一个月解决的问题数目. #include <iostream> #include <cstdio> #include <cstring> using namespace std; const int maxn=3e2+9; int a[maxn],b[maxn]; int suma[maxn],sumb[maxn]; int dp[maxn][maxn]; i…
#include "Head.cpp" const int N = 307; int f[N][N], a[N], b[N], sumA[N], sumB[N]; int main(){ FileOpen(); int n, M; io >> M >> n; R(i,2,n + 1){ io >> a[i] >> b[i]; sumA[i] = sumA[i - 1] + a[i]; sumB[i] = sumB[i - 1] + b[i…
http://acm.hdu.edu.cn/showproblem.php?pid=4976 2014 Multi-University Training Contest 10 1006 A simple greedy problem. Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 20    Accepted Submission(s…
[题目] Tree chain problem Problem Description Coco has a tree, whose vertices are conveniently labeled by 1,2,-,n.There are m chain on the tree, Each chain has a certain weight. Coco would like to pick out some chains any two of which do not share comm…
Problem G. k-palindrome 题目连接: http://opentrains.snarknews.info/~ejudge/team.cgi?SID=c75360ed7f2c7022&all_runs=1&action=140 Description We will say that a string T is a k-palindrome for some positive integer k if and only if k is not grater than th…
题目链接:http://codeforces.com/contest/1096/problem/D 题目大意:给你一个字符串,然后再给你去掉每个字符串的每个字符的花费,然后问你使得字符中不再存在hard这个单词,可以是不连续的. 具体思路:我们从头开始,非hard的单词就不需要考虑了,然后考虑一下,当遇到a的时候,我们就考虑构成h的最小花费,当遇到har的时候,我们就考虑构成ha的最小花费,当遇到hard的时候,我们就考虑构成hard的最小花费就可以了. AC代码: #include <bits…
2298: [HAOI2011]problem a Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1326  Solved: 637 Description 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相同的分数) Input 第一行一个整数n,接下来n行每行两个整数,第i+1行的两个整数分别代表ai.bi Output 一个整数,表示最少有几个人说谎 Sample Input…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2993 题目大意:给出n,k,给定一个长度为n的序列,从其中找连续的长度大于等于k的子序列使得子序列中的平均值最小. 解题思路:斜率DP经典题, 详细分析见: NOI2004年周源的论文<浅谈数形结合思想在信息学竞赛中的应用> 还有要注意要用输入输出外挂,不是getchar()版的,是fread()版的,第一次遇到这么变态的题目- -|||. 代码: #include<iostream>…
Problem Description N个人围成一圈在讨论大扫除的事情,需要选出K个人.但是每个人与他距离为2的人存在矛盾,所以这K个人中任意两个人的距离不能为2,他们想知道共有多少种方法. Input 第一行包含一个数T(T<=100),表示测试数据的个数. 接下来每行有两个数N,K,N表示人数,K表示需要的人数(1<=N<=1000,1<=K<=N). Output 输出满足题意的方案数,方案数很大,所以请输出方案数mod 1,000,000,007 后的结果. Sam…
http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11569&courseid=0 给出目标串,每个子串和对应的权值,然后要从子串中匹配出目标串并且权值最大.匹配的位置不能重复. dp[i]为匹配到i这个位置时的最大价值,那么dp[i]=max(dp[i],dp[i-len[j]]+val[j]); 每次找到的匹配的子串在目标串的位置,然后动态转移. #include <iostream> #incl…
Problem 2200 cleaning  Problem Description N个人围成一圈在讨论大扫除的事情,需要选出K个人.但是每个人与他距离为2的人存在矛盾,所以这K个人中任意两个人的距离不能为2,他们想知道共有多少种方法.  Input 第一行包含一个数T(T<=100),表示测试数据的个数. 接下来每行有两个数N,K,N表示人数,K表示需要的人数(1<=N<=1000,1<=K<=N).  Output 输出满足题意的方案数,方案数很大,所以请输出方案数mo…
FZU - 2218Simple String Problem 题目大意:给一个长度为n含有k个不同字母的串,从中挑选出两个连续的子串,要求两个子串中含有不同的字符,问这样的两个子串长度乘积最大是多少? 根据题目所给的k<=16很自然的想到用状压dp来处理,但不知道该dp个什么,在观摩大佬的做法后才明白.我们用0000000000000000到1111111111111111表示pomnlkjhgfedcba的字符存不存在的状态,某个字符存在的话对应位就是1,反之就是0.一开始dp[x]就表示,…
D. Yet Another Subarray Problem 这个题目很难,我比赛没有想出来,赛后又看了很久别人的代码才理解. 这个题目他们差不多是用一个滑动窗口同时枚举左端点和右端点,具体如下: 首先枚举0~m,这个是说更新的位置,如果是1 当m==3 就更新1 4 7 10... 如果是2,当m==3 就更新 2 6 8 11.... 最后都会被更新的. 核心代码 ; j < n - i; ++j) { s += sum[j]; ) s -= k;//这个在判断是不是经过了一个区间,如果经…
C. Tourist Problem time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Iahub is a big fan of tourists. He wants to become a tourist himself, so he planned a trip. There are n destinations on a…
P4137 Rmq Problem /mex 题意 给一个长为\(n(\le 10^5)\)的数列\(\{a\}\),有\(m(\le 10^5)\)个询问,每次询问区间的\(mex\) 可以莫队然后对值域分块,这样求\(mex\)的复杂度就正确了 一种更优的做法是按值域建可持久化线段树,对每个节点维护当前值域区间的最小出现位置,然后查询的时候就从\(r\)的那棵树一直尽量往左边走就好了 Code: #include <cstdio> #include <cstring> cons…