【noi 2.6_6045】开餐馆(DP)】的更多相关文章

题意:有N个地址,从中选一些开餐馆,要保证相邻餐馆的距离大于k.问最大利润. 解法:f[i]表示在前 i 个地址中选的最大利润. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 using namespace std; 6 7 const int Maxn=110,Maxm=1000010; 8 int m[Maxn],p[Maxn]; 9 i…
题目链接:http://noi.openjudge.cn/ch0206/6045/ 解题报告:参考了konjac 蒟蒻的. 题意: 有N个地址,从中选一些开餐馆,要保证相邻餐馆的距离大于k.问最大利润. 解法: f[i] 表示 前 i  个地址中选取的最大利润. #include <bits/stdc++.h> using namespace std; ,INF = 0x3f3f3f3f; int m[Maxn],p[Maxn]; int f[Maxn]; int main() { int t…
题目链接:http://acm.hust.edu.cn/vjudge/contest/125004#problem/E 密码:acm Description 北大信息学院的同学小明毕业之后打算创业开餐馆.现在共有n 个地点可供选择.小明打算从中选择合适的位置开设一些餐馆.这 n 个地点排列在同一条直线上.我们用一个整数序列m1, m2, ... mn 来表示他们的相对位置.由于地段关系,开餐馆的利润会有所不同.我们用pi 表示在mi处开餐馆的利润.为了避免自己的餐馆的内部竞争,餐馆之间的距离必须…
Description 北大信息学院的同学小明毕业之后打算创业开餐馆.现在共有n 个地点可供选择.小明打算从中选择合适的位置开设一些餐馆.这 n 个地点排列在同一条直线上.我们用一个整数序列m1, m2, ... mn 来表示他们的相对位置.由于地段关系,开餐馆的利润会有所不同.我们用pi 表示在mi 处开餐馆的利润.为了避免自己的餐馆的内部竞争,餐馆之间的距离必须大于k.请你帮助小明选择一个总利润最大的方案. Input 标准的输入包含若干组测试数据.输入第一行是整数T (1 <= T <=…
LINK:graph HDU题库里的原题 没做过自闭. 考虑dp 设\(f_{i,j}\)表示前i个点构成j个联通块是树的方案数. 对于一次询问答案即为\(\sum_{j}f_{n,j}j^k\) 考虑如何dp出来 显然每次枚举1号所在的连通块的大小 考虑这个连通块是否构成树 即可. 具体转移不再赘述 需要预处理一下i个点的树的个数 i个点的连通块个数 i个点不是树是连通块的个数. 复杂度\(n^3\) 利用分治NTT来优化可以到 \(n^2log^2\)比较繁杂且不是正解. 正解当然是考虑生成…
import android.content.Context; /** * @author 官网:http://blog.csdn.net/qq_21376985 * * David编写: 微博:http://weibo.com/93sec.cc * * @version V1.0正式版 * * @process QQ986945193 * * @Note weibo.com/mcxiaobing * * @dateTime 2015-10-18下午1:46:20 * */ public cla…
noi 1996 登山 noi 8780 拦截导弹 noi 4977 怪盗基德的滑翔翼 noi 6045 开餐馆 noi 2718 移动路线 noi 2728 摘花生 noi 2985 数字组合 noi 6049 买书 noi 666 放苹果 noi 8787 数的划分 noi 9267 核电站 noi 1944 吃糖果 noi 8462 大盗阿福 noi 4982 踩方格 noi 9271 奶牛散步 noi 9268 酒鬼 noi 9265 取数游戏 noi 4978 宠物小精灵之收服 noi…
通过两道简单的例题,我们来重新认识树形DP. 战略游戏(luoguP1026) Description Bob喜欢玩电脑游戏,特别是战略游戏.但是他经常无法找到快速玩过游戏的办法.现在他有个问题.他要建立一个古城堡,城堡中的路形成一棵树.他要在这棵树的结点上放置最少数目的士兵,使得这些士兵能了望到所有的路.注意,某个士兵在一个结点上时,与该结点相连的所有边将都可以被了望到. 请你编一程序,给定一树,帮Bob计算出他需要放置最少的士兵. Input Format 输入文件中数据表示一棵树,描述如下…
Reference:http://www.cnblogs.com/wuyiqi/archive/2012/03/28/2420916.html 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2836 题目大意:计算序列有多少种组合,每个组合至少两个数,使得组合中相邻两个数之差不超过H,序列有重复的数.MOD 9901. 解题思路: 朴素O(n^2) 以样例1 3 7 5为例,如果没有重复的数. 设dp[i]前n个数的方案数,初始化为1. 那么fo…
H - 简单dp 例题扩展 Crawling in process... Crawling failed Time Limit:3000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Description A palindrome is a symmetrical string, that is, a string read identically from left to right as…
Robberies 点击打开链接 背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱  最脑残的是把总的概率以为是抢N家银行的概率之和- 把状态转移方程写成了f[j]=max{f[j],f[j-q[i].v]+q[i].money}(f[j]表示在概率j之下能抢的大洋);  正确的方程是:f[j]=max(f[j],f[j-q[i].money]*q[i].v)  当中,f[j]表示抢j块大洋的最大的逃脱概率,条件是f[j-q[i].money]可达,也就…
开一个dp[30010][3]的数组 其中dp[i][j]表示把第i个数改成j最少要花多少次 那么状态转移方程就列出来了: 令a=1 j!=a[i] 0 j==a[i] 那么dp[i][1]=dp[i-1][1]+a; dp[i][2]=min(dp[i-1][1],dp[i-1][2])+a; 那么根据空间优化原理,我们的第一维的i不过是为了递推,那么可以优化掉. 不过要注意的是,dp[2]的状态要先求,否则测试数据会是3,因为沿用了本次的dp[1],而非上次的dp[1]. #include…
传送门题目:https://www.luogu.org/problem/show?pid=1541 其实这道题想到了就很简单,但很难想到用思维的dp,这非常少见. 看到每张牌不超过40张,这数据范围就是给你开思维dp的 自然想到用dp[ i ][ j ][ k ][ l ]表示用了i张1,j张2,k张3 , l 张4的最大值 用i张1,j张2,k张3 , l 张4自然跳到了 第(1+i+2*j+3*k+4*l)格,枚举四种情况,再加上第(1+i+2*j+3*k+4*l)格的值就行了 //Gang…
传送门 思路 题目给了一个提示:对于\(n\)个\([0,1]\)的随机变量,其中第\(k\)小的期望大小是\(\frac{k}{n+1}\). 这引导我们枚举边的相对大小的全排列,然后求最小生成树 设\(P(x)\)表示最小生成树中最大一条边的排名是\(x\)的概率,那么有 \[ ans=\frac 1 {m+1}\sum_x xP(x) \Leftrightarrow (m+1)ans=\sum_x xP(x) \] 恰好是\(x\)比较麻烦,再设\(f_x\)表示最大排名大于\(x\)的概…
传送门 参考资料: [1]:CodeForces 55D Beautiful numbers(数位dp&&离散化) 我的理解: 起初,我先定义一个三维数组 dp[ i ][ j ][ k ]:来到 i 位置时,所有非零数的lcm = j,当前数位 k 时含有的 Beautiful numbers 的个数. 但是,由题意得,当前的数 k 可以是个很大的数(9e18),数组根本就开不下,那怎么办呢? 将当前的数 hash 一下,如何hash呢? 假设 a,b,c,d 为[0,9]的数,那么不存…
Liar 刚开始感觉只要开个dp[ i ][ j ][ 0 / 1 ]表示处理了s的前 i 个用了 k 段, i 是否是最后一段的最后一个字符 的 t串最长匹配长度, 然后wa24, 就gg了.感觉这个转移感觉很对, 但是实际上不对... 比如s = ababcde, t = abcde, x = 1, 转移会出现问题. 我们可以用dp[ i ][ j ]表示处理了 s 串的前 i 个, 用了 j 段的最大匹配长度, 我们转移的时候时候肯定是在后面接lcp, 套个sa就好啦. #include<…
题目链接:http://poj.org/problem?id=1426 Given a positive integer n, write a program to find out a nonzero multiple m of n whose decimal representation contains only the digits 0 and 1. You may assume that n is not greater than 200 and there is a correspo…
题目链接:https://nanti.jisuanke.com/t/20                                         跳跃游戏二 给定一个非负整数数组,假定你的初始位置为数组第一个下标.数组中的每个元素代表你在那个位置能够跳跃的最大长度.你的目标是到达最后一个下标,并且使用最少的跳跃次数. 例如: A = [2,3,1,1,4],到达最后一个下标的最少跳跃次数为 2.(先跳跃 1 步,从下标 0 到 1,然后跳跃 3 步,到达最后一个下标.一共两次) 输入格式…
正解:区间dp+辅助dp 解题报告: 先放个传送门qwq 然后这题,又是一道看不懂题目的玩意儿:( 大概是语文太差 那就先解释下 其实只是一个点比较难明白就是它港 "假设JYY 进入i村庄并在第二天立即离开(村庄i的疫情并未治愈如果在之后的某一天,JYY 从村庄j前往村庄 k并满足balabala(umm懒得打了QAQ).那么在之后的日子里JYY只能朝着i村庄前进直到抵达i村庄并立即治愈该村的患者" 然后其实这句话就是说如果你掉头了你就必须把回头的这一路上没治的都治好 昂然后就直接讲正…
题意:美丽数定义:一个正数能被所有位数整除.求给出一个范围,回答这个范围内的美丽数. 思路:一个数能被所有位数整除,换句话说就是一个数能整除所有位数的LCM,所以问题就转化为一个数能否被所有位数的LCM整除.按照一般的思想,直接开三维dp[pos][num][lcm].但是num范围很大,直接开就爆了,怎么办呢?我们可以把num%2520(即1~9的LCM)储存为mod,因为所有位数最大的LCM就是2520,所以可以mod 2520.然后你很开心的开了dp[pos][2520][2520],然后…
貌似开坑还挺好玩的...开一个来玩玩=v=... 正好自己dp不是很熟悉,就开个坑来练练吧...先练个50题?小目标... 好像有点多啊QAQ 既然是开坑,之前写的都不要了! 50/50 1.洛谷P3399 丝绸之路 简单的线性dp 点我看题 因为是开坑所以题意就不讲了,自己看题吧,一些题意比较迷的会讲一下. 这题其实还挺简单的. 设 f[i,j] 表示到第 i 个城市用了 j 天所需要的最小疲劳值. 很快dp方程就出来了.  f[i,j]=min(f[i,j-1],f[i-1,j-1]+d[i…
题目背景 盛况空前的足球赛即将举行.球赛门票售票处排起了球迷购票长龙. 按售票处规定,每位购票者限购一张门票,且每张票售价为50元.在排成长龙的球迷中有N个人手持面值50元的钱币,另有N个人手持面值100元的钱币.假设售票处在开始售票时没有零钱.试问这2N个球迷有多少种排队方式可使售票处不致出现找不出钱的尴尬局面. 题目描述 例如当n=2是,用A表示手持50元面值的球迷,用B表示手持100元钱的球迷.则最多可以得到以下两组不同的排队方式,使售票员不至于找不出钱. 第一种:A A B B 第二种:…
方格取数(1) Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3848    Accepted Submission(s): 1473 Problem Description 给你一个n*n的格子的棋盘,每个格子里面有一个非负数.从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数…
题目:http://codeforces.com/problemset/problem/161/D 题意:给你一棵树,问你两点之间的距离正好等于k的有多少个 思路:这个题目的内存限制首先大一倍,他有5*1e5个点,k的范围是<=500,首先暴力n^2肯定不行,这个题其实很容易看出是树形dp 首先k的范围只有500,我们可以开一个dp[1e5][500]的dp数组,代表以这个点为上端点的所有情况,然后最后递归到1点处,dp[1][k]就是答案 #include<cstdio> #inclu…
Peter's Hobby Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 292    Accepted Submission(s): 132 Problem Description Recently, Peter likes to measure the humidity of leaves. He recorded a leaf…
problem=1068">http://www.lightoj.com/volume_showproblem.php?problem=1068 求出区间[A,B]内能被K整除且各位数字之和也能被K整除的数的个数.(1 ≤ A ≤ B < 231 and 0 < K < 10000) 算是最简单的数位dp了.k在这里是10000.三维数组都开不开.可是想想会发现A,B最多有10位,各位数字之和不会超过90.那么当 k >= 90时,就不用dp,由于个位数字之和对k取…
How to Type Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4616    Accepted Submission(s): 2084 Problem Description Pirates have finished developing the typing software. He called Cathy to tes…
http://acm.hdu.edu.cn/showproblem.php?pid=4057 题意:给出n个子串,串只包含‘A’,'C','G','T'四种字符,你现在需要构造出一个长度为l的串,如果这个串里面包含了某个子串,那么答案就会+val[i](如果这个串被使用过了,就不会再有贡献了),要使得构造出来的串的答案最大,问是多少. 思路:只能想到是AC自动机的题目,然后乱搞出一个错误的方法,没想到是这样的操作. n只有10,因此才1024,开一个dp[l][sz][st]的数组,l代表当前的…
P2331 [SCOI2005]最大子矩阵 题意 : 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. 第一行为n,m,k(1≤n≤100,1≤m≤2,1≤k≤10),接下来n行描述矩阵每行中的每个元素的分值(每个元素的分值的绝对值不超过32767). 思路: 注意这里的m只可能为1或者2.所以可以分开来考虑,对于m = 1,比较容易,dp[i][k] = dp[ t ][ k-1 ] + (t 到 i 的和).然而对于m等于2…
牛客小白月赛8 - E - 诡异数字 题意: 求区间中,满足限制条件的数字的个数. 限制条件就是某些数字不能连续出现几次. 思路: 比较裸的数位DP, DP数组开一个dp[len][x][cnt] 表示长度为len,x这个数字连续出现cnt次的个数. #include <iostream> #include <algorithm> #include <cstring> #include <string> #include <cstdio> typ…