【USACO】milk3】的更多相关文章

倒牛奶的问题, 开始看感觉跟倒水的问题很像, 想直接找规律, 写个类似于循环取余的代码. 但后来发现不行,因为这道题有三个桶,水量也是有限制的.只好用模拟的方法把所有的情况都试一遍. 建一个state[21][21][21]的数组存储出现过的状态.对于遍历状态,对每一种状态, 分别采用六种处理方法,若有新状态出现这将新状态置为1,同时标记flag++:若所有循环之后,flag == 0, 就说明遍历完成了. 开始脑子抽筋了, 写了个多出口的程序, 显然是错的.如下: int mothersmil…
POJ 1986 Distance Queries / UESTC 256 Distance Queries / CJOJ 1129 [USACO]距离咨询(最近公共祖先) Description Farmer John's cows refused to run in his marathon since he chose a path much too long for their leisurely lifestyle. He therefore wants to find a path…
1642: [USACO]Payback(还债) 时间限制: 1 Sec 内存限制: 64 MB 提交: 190 解决: 95 [提交] [状态] [讨论版] [命题人:外部导入] 题目描述 "Never a borrower nor a lender be." O how Bessie wishes she had taken that advice! She has borrowed from or lent money to each of N (1 <= N <=…
1519: [USACO]超级书架 时间限制: 1 Sec 内存限制: 64 MB 提交: 1735 解决: 891 [提交] [状态] [讨论版] [命题人:外部导入] 题目描述 Farmer John最近为奶牛们的图书馆添置了一个巨大的书架,尽管它是如此的大,但它还是几乎瞬间就被各种各样的书塞满了.现在,只有书架的顶上还留有一点空间. 所有N(1 <= N <= 20,000)头奶牛都有一个确定的身高H_i(1 <= H_i <= 10,000).设所有奶牛身高的和为S.书架的…
[USACO]1.1.2 贪婪的礼物送礼者 Greedy Gift Givers 题目描述 对于一群要互送礼物的朋友,你要确定每个人送出的礼物比收到的多多少(and vice versa for those who view gift giving with cynicism). 在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那些将收到他的礼物的人. 然而,在任何一群朋友中,有些人将送出较多的礼物(可能是因为有较多的朋友),有些人有准备了较多的钱. 给出一群朋友, 没有人的…
[题目描述] Robin喜欢将他的奶牛们排成一队.假设他有N头奶牛,编号为1至N.这些奶牛按照编号大小排列,并且由于它们都很想早点吃饭,于是就很可能出现多头奶牛挤在同一位置的情况(也就是说,如果我们认为所有奶牛位于数轴上,那么多头奶牛的位置坐标可能相同). 因为众所周知的原因,某些奶牛之间互相喜欢,他们希望互相之间的距离至多为一个定值.但某些奶牛之间互相厌恶,他们希望互相之间的距离至少为一个定值.现在给定ML个互相喜爱的奶牛对以及他们之间距离的最大值,MD个互相厌恶的奶牛对以及他们之间距离的最小…
[题目链接] [JZXX]点击打开链接 [caioj]点击打开链接 [算法] 拆点+网络流 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 1000 int i,tot,N,F,D,sf,sd,ans,x; ],V[MAXN*],W[MAXN*],Head[MAXN*], Next[MAXN*],other[MAXN*],h[MAXN*]; template <typename T> void read(…
题目链接 :        [POJ]点击打开链接        [caioj]点击打开链接 算法 : 1:跑一遍弗洛伊德,求出点与点之间的最短路径 2:二分答案,二分”最大值最小“ 3.1:建边,将原点与每头奶牛连边,流量为1,记dist[i][j]为i到j的最短路径,若dist[i][j]<=mid (K+1<=i<=K+C,1<=j<=K),则将i与j连边,流量为M,将每台挤奶机与汇点连边,流量为1 3.2 : 跑网络流,这里笔者使用的是dinic算法 3.3 : 判断…
[题目链接] 点击打开链接 [算法] 树状数组 [代码] #include<bits/stdc++.h> using namespace std; int i,N,ans,l1,l2; ],val[],id[]; template <typename T> void read(T &x) { ; ; ; } +c-'; x*=f; } bool cmp(int a,int b) { return val[a] > val[b]; } int lowbit(int x)…
[题目链接] 点击打开链接 [算法] 这是一道经典的最值查询(RMQ)问题. 我们首先想到线段树.但有没有更快的方法呢?对于这类问题,我们可以用ST表(稀疏表)算法求解. 稀疏表算法.其实也是一种动态规划的算法.是先做一遍预处理,然后O(1)求出答案.                设计状态 : f[i][j] 表示从第i个数开始连续2^j次方个数(包括第i个数),中的(最大或最小值) 那么状态转移方程是什么呢? 我们知道 2^j可分解为两个2^(j-1),所以f[i][j] = max或min…