解题:USACO13NOV No Change】的更多相关文章

[USACO06NOV] Corn Fields (试题来源:Link ) 题目描述 Farmer John has purchased a lush new rectangular pasture composed of \(M\) by \(N (1 ≤ M ≤ 12; 1 ≤ N ≤ 12)\) square parcels. He wants to grow some yummy corn for the cows on a number of squares. Regrettably,…
题面 在朴素中透着一点新意的状压DP 一个很暴力的思路是枚举位置,状态和硬币,每次二分出向前最多能买到哪里,复杂度爆炸($O(2^knklog$ $n)$) 考虑优化,不妨先预处理一下$goal[i][j]$表示每个硬币$i$在每个位置$j$最多向前能买到哪里,但是这样还是很爆炸,所以我们找来了一个不同寻常的dp状态 我们设$dp[s]$表示在$s$状态下最远能到达哪里,于是有了一个清奇的转移方程$dp[s|(1<<coin)]=max(dp[s|(1<<coin)],goal[c…
题面 传送门 Sol 状压一下\(k\),\(f[S]\)表示用过的硬币集合为\(S\)能买到的物品个数 # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; typedef long long ll; const int _(100005); IL ll Input(){ RG ll x…
题目大意: 你有k(k<=16)个硬币,每个硬币都有自己的面值. 现在你要给n件商品付钱,每件商品也有自己的价格. 然而老板是个奸商,他绝对不会给你找钱. 你每次付钱只能用一个硬币,但是你可以一次性买很多商品. 问你最后最多还能留下多少钱. 思路: 状压DP. f[i]表示状态为i时能买的商品数,i表示你用了哪些硬币. 从小到大枚举每个状态i,然后枚举状态i中的硬币j,是这次付款用的硬币. 二分找一下这些硬币最多能买前面连续的多少个商品. 如果j不在i中,就算作最后剩下的硬币. #include…
[USACO13NOV]没有找零No Change 题目链接 https://www.luogu.org/problemnew/show/3092 做题背景 FJ不是一个合格的消费者,不知法懂法用法,不会拿起法律的武器维护消费者权益 做法 本题涉及的知识点:状态压缩,动态规划,二分答案. 注意物品是依次购买 首先是状态压缩: 压什么?我们注意到k<=16,那么就是压硬币使用集合. 然后是动态规划: 怎么设状态?设dp[i]表示我们选硬币集合i(状压)从一号物品开始最多能买的物品数. 怎么转移?从…
P3092 [USACO13NOV]没有找零No Change 题目描述 Farmer John is at the market to purchase supplies for his farm. He has in his pocket K coins (1 <= K <= 16), each with value in the range 1..100,000,000. FJ would like to make a sequence of N purchases (1 <= N…
[LeetCode]518. Coin Change 2 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode.com/problems/coin-change-2/description/ 题目描述: You are given coins of different denominations and a total amount of money. Write a…
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.com/problems/lemonade-change/description/ 题目描述 At a lemonade stand, each lemonade costs $5. Customers are standing in a queue to buy from you, and orde…
题目描述 Farmer John is at the market to purchase supplies for his farm. He has in his pocket K coins (1 <= K <= 16), each with value in the range 1..100,000,000. FJ would like to make a sequence of N purchases (1 <= N <= 100,000), where the ith p…
题目描述 Farmer John is at the market to purchase supplies for his farm. He has in his pocket K coins (1 <= K <= 16), each with value in the range 1..100,000,000. FJ would like to make a sequence of N purchases (1 <= N <= 100,000), where the ith p…
题目描述 Farmer John is at the market to purchase supplies for his farm. He has in his pocket K coins (1 <= K <= 16), each with value in the range 1..100,000,000. FJ would like to make a sequence of N purchases (1 <= N <= 100,000), where the ith p…
这个题有点意思,其实不是特别难,但是不太好想...中间用二分找最大的可买长度就行了. 题干: 题目描述 Farmer John <= K <= ), each with value ..,,. FJ would like to make a sequence of N purchases ( <= N <= ,), <= c(i) <= ,). As he makes this sequence of purchases, he can periodically sto…
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 日期 题目地址:https://leetcode.com/problems/coin-change/description/ 题目描述 You are given coins of different denominations and a total amount of money amount. Write a function to…
题面 当然可以用并查集做,不过你需要按秩合并+路径压缩(才可能过),因为数据范围十分不友好...... USACO的官方做法更为优秀.首先题目告诉我们牛们加入的前后顺序不影响结果(自己证明也很容易,显然两头牛到达一个房子最后的结果看起来是一样的).所以我们不妨先把牛们都安排在它们喜欢的房子,然后$O(n)$扫描一遍模拟把它们放进对应的房子这个过程.因为第一次我们先扫到前面,可能后面一些牛之后又到了前面,所以要再扫一遍. #include<cstdio> #include<cstring&…
其实我是点单调队列的标签进来的,之后看着题就懵逼了 于是就去题解里一翻,发现楼上楼下的题解说的都好有道理, f[j]表示一个再使用一个硬币就能到达i的某个之前状态,b[now]表示使用那个能使状态j变到i的硬币的面值,find表示这些花费可以到达的最大距离,由于前缀和保持单调可以用二分求解,方程不就是f[i]=max(f[i],find(p[f[j]]+b[now]))吗 但这道题怎么用单调队列优化呢 我们观察这个方程你会发现无论是b[now],p[f[j]]都跟i没有什么关系,而只要是p[f[…
题目传送门 可能是我退役/NOIP前做的最后一道状压... 题目大意:给你\(k\)个硬币,FJ想按顺序买\(n\)个物品,但是不能找零,问你最后最多剩下多少钱. 注意到\(k<=16\),提示状压.开始设计的状态是\(f[i]\)表示在状态\(i\)下最多剩的钱数,后来发现不好搞因为可能有无解的情况.这种情况我们不妨把状态设计的再"退化"一点,也就是不那么贴近最终的结果,只是一个中间的部分.设\(f[i]\)为在状态\(i\)下,最多能购买的物品数. 因为是按顺序购买的,所以有…
题目链接:http://codeforces.com/problemset/problem/379/C 题目意思:有n个users,每个user都有自己想升的rating.要解决的问题是给予每个人不同的rating,使得每个人rating不比他期望的rating小,即 安排的rating >= 他自己的希望的rating,还有一个条件就是 总rating之和要最小. 要想使得总rating最少,那么安排的rating要尽可能小.把rating从小到大排序.对最小的rating值当然就给予这个值,…
传送门 先通过二分预处理出来,每个硬币在每个商品处最多能往后买多少个商品 直接状压DP即可 f[i]就为,所有比状态i少一个硬币j的状态所能达到的最远距离,在加上硬币j在当前位置所能达到的距离,所有的取max 是满足最优解性质的 #include <cstdio> #include <iostream> #include <algorithm> #define N 17 #define max(x, y) ((x) > (y) ? (x) : (y)) int n…
状压\(DP\) + 二分 考虑构成:\(k<=16\)所以根据\(k\)构造状压\(dp\),将所有硬币的使用情况进行状态压缩 考虑状态:数组\(dp[i]\)表示用\(i\)状态下的硬币可以购买到第几个商品 ,\(f[i]\)表示状态\(i\)下的花费 考虑转移:使用当前硬币的状态一定由使用上一个硬币的状态转移而来 举个例子:之前状态\(x\):\(dp[x] = y\), \(i = 2 = (010)_2\) ,当前枚举到的状态\(i = 3 = (011)_2\) , \(dp[i]…
将金币状压,然后就没多说的了. #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #define R(a,b,c) for(register int a = (b); a <= (c); ++ a) #define nR(a,b,c) for(register int a = (b); a >=…
这道题是受到大犇MagHSK的启发我才得以想出来的,蒟蒻觉得自己的代码跟MagHSK大犇的代码完全比不上,所以这里蒟蒻就套用了MagHSK大犇的代码(大家可以关注下我的博客,友情链接就是大犇MagHSK的博客,大神是山东省队队员,他的博客中的题的质量都比我高几个档次): 这是大神MagHSK的解释:因为10^9顶多开5~6次方就成了1了(当然这里的等于是向下取整的)因此对于修改操作,如果某一段不是1或不是0,就暴力修改,如果是1/0就不管他.修改完之后update一下就好了. 题目上说我们给出的…
E - Just a Hook Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   Description In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of the heroes. The hook is made up of several consecutive m…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2277 Change the ball Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 694    Accepted Submission(s): 272 Problem Description Garfield has three pile…
UVA 674  Coin Change  解题报告 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730#problem/E 题目: Suppose there are 5 types of coins: 50-cent, 25-cent, 10-cent, 5-cent, and 1-cent. We want to make changes with these coins for a given amount o…
ZOJ  1093   Monkey and Banana  (LIS)解题报告 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87125#problem/B 题目: Description 一组研究人员正在设计一项实验,以测试猴子的智商.他们将挂香蕉在建筑物的屋顶,同时,提供一些砖块给这些猴子.如果猴子足够聪明,它应当能够通过合理的放置一些砖块建立一个塔,并爬上去吃他们最喜欢的香蕉.   研究人员有n种类型的砖块,每种类型…
JSU省赛队员选拔赛个人赛1 一.题目概述: A.Coin Change(暴力求解.动态规划)     B.Fibbonacci Number(递推求解) C.Max Num(排序.比较) D.单词数(字符串比较.库函数运用) E.无限的路(平面几何) F.叠筐(规律输出) 二.解题报告: A.Coin Change 给一个钱的总金额,求出用100个以内的50分.25分.10分.5分.1分硬币拼成该金额的不同拼法. 直接暴力,打表什么的都是浮云.开始总觉得用暴力求解显得自己没风度,不够高端霸气上…
pwnable input解题记录 给了源码如下: #include "stdio.h" #include "unistd.h" #include "stdlib.h" #include "arpa/inet.h" int main(){ //stage argv char *argv[101] = {"/home/input2/input", [1 ... 99] = "A", NUL…
声明 笔者最近意外的发现 笔者的个人网站http://tiankonguse.com/ 的很多文章被其它网站转载,但是转载时未声明文章来源或参考自 http://tiankonguse.com/ 网站,因此,笔者添加此条声明. 郑重声明:这篇记录<[百度之星2014~复赛 解题报告~正解]The Query on the Tree>转载自 http://tiankonguse.com/的这条记录:http://tiankonguse.com/record/record.php?id=674 前…
声明 笔者最近意外的发现 笔者的个人网站http://tiankonguse.com/ 的很多文章被其它网站转载,但是转载时未声明文章来源或参考自 http://tiankonguse.com/ 网站,因此,笔者添加此条声明. 郑重声明:这篇记录<[百度之星2014~复赛)解题报告]The Query on the Tree>转载自 http://tiankonguse.com/ 的这条记录:http://tiankonguse.com/record/record.php?id=673 前言…
String change Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1116    Accepted Submission(s): 494 Problem Description In this problem you will receive two strings S1 and S2 that contain only low…