
USACO
huanghongxun
这个作者很懒,什么都没留下…
展开
-
BZOJ 1648 USACO 2006 Dec Cow Picnic 奶牛野餐 搜索
24ms。。不过排在第1页就好233。爆搜一下各点并记录访问次数,被访问k次即属于答案。#include #include #define FOR(i,j,k) for(i=j;i<=k;i++)const int K = 101, N = 1001, M = 10001;int a[K], s[N], d[N], h[N], p[M], v[M];void dfs(int x)原创 2016-02-08 13:12:11 · 728 阅读 · 0 评论 -
POJ 2186 Popular Cows 强连通分量
统计能被其他所有点访问的点的个数。 这里建边是<a,b><a,b> 缩点以后没有出边的就是符合题意的,但是只能有1个连通分量没有出边。#include <cstdio>#include <cstring>#define min(i,j) ((i)<(j)?(i):(j))#define ms(a, b) memset(a, b, sizeof(a))const int N = 10001原创 2016-03-11 18:42:10 · 600 阅读 · 0 评论 -
BZOJ 2097 USACO 2010 Dec Gold Exercise 奶牛健美操 二分答案 树形DP 贪心
感觉跟BZOJ 2067 POI 2004 szn有点关联。 二分答案ans。 对于每个点,如果子树中存在超过ans的链就砍掉。剩余的差不多了。#include <cstdio>#include <algorithm>const int N = 100005, M = N * 2;using namespace std;int e = 0, h[N], v[M], p[M], mid,原创 2016-03-12 15:11:26 · 1104 阅读 · 0 评论 -
POJ 3273 USACO 2007 Mar Monthly Expense 二分答案
长度为n的序列分成m块是每块数字之和的最大值最小。 二分答案。 如果按给定和的最大值依次分超过了m块,数字就小了。 否则数字就大了。 正确性怎么证都行。。#include <cstdio>int main() { static int d[100005]; int n, m, i, ma, s, l, r, mid, c; while (scanf("%d%d",原创 2016-03-26 23:49:45 · 703 阅读 · 0 评论 -
POJ 2112 Optimal Milking 最大流 二分答案
有K个能挤M头奶牛的挤奶机和C头奶牛,告诉一些挤奶机和奶牛间距离,求最优分配方案使最大距离最小。显然是二分答案。接下来考虑如何判定。 为了限制挤奶机发给m头牛,以及一头牛只能分配给1台挤奶机,源点连向挤奶机,容量m,牛连向汇点,容量1,距离小于二分的最大距离的 挤奶机-牛 对,连边,容量1(其实设成多大都无所谓的),跑出来最大流=c(满流?)说明方案可行。#include <cstdio>#in原创 2016-04-09 10:09:13 · 689 阅读 · 0 评论 -
POJ 2455 Secret Milking Machine 最大流 二分答案
源汇为1,n的无向图求最小的路径上最大边使存在T条不重叠的路连通源汇。显然二分答案最大边长,判定时只加入满足最大边长的边。注意是无向边。。数据:http://contest.usaco.org/FEB05_6.htm#include <cstdio>#include <cstring>#include <algorithm>#define FOR(i,j,k) for(i=j;i<=k;++i原创 2016-04-09 10:42:15 · 722 阅读 · 0 评论 -
BZOJ 4509 USACO 2016 Jan Gold Angry Cows
Bessie设计了一个游戏,将奶牛投掷到一个有多个草堆数轴上,奶牛的能量为R表示奶牛可以引爆半径R内的所有草堆,接着被引爆的这些草堆的能量为R-1,第二次被引爆的为R-2,以此类推,最后为0。问最小的R使得存在一个投掷点能引爆所有草堆。发现,一个奶牛/草堆被引爆,其左右部分是不会影响的,可以考虑正反扫一次。 令dp1[i]表示i左边全部被引爆的最小半径,有: dp1i=min{ai−aj,dp1原创 2016-04-19 20:19:17 · 1246 阅读 · 0 评论 -
BZOJ 4510|USACO 2016 Jan Gold|Ratio Contact|动态规划
John和Bessie分别从(fx,fy)和(bx,by)出发,他们通过无线电通讯,单位时间消耗能量大小等于两人距离的平方(但他们同时在出发点的开始时刻的能量不算),为了节约能量,他们尽量靠在一起。单位时间内John和Bessie都可以选择走或不走。问最小使用能量大小。因此单位时间消耗能量为(fx−bx)2+(fy−by)2(f_x-b_x)^2+(f_y-b_y)^2 由于无后向性,考虑DP。原创 2016-04-20 09:27:20 · 1586 阅读 · 0 评论 -
BZOJ 4506|USACO 2016 Jan Platinum|Fort Moo
人工翻译好辛苦。。4506: [Usaco2016 Jan]Fort MooDescriptionBessie和她的朋友Elsie正在建筑一个堡垒,与任何一个好的堡垒一样,这个需要一个强固的框架。Bessie想造一个轮廓是1m宽的空心矩形框架,这样堡垒就可以造在框架上了。 Bessie以及选了一个地点建筑堡垒,一片N*M(1<=N,M<=200)的平地。不幸的是,这个地方有一些沼泽地而不可以支撑框原创 2016-04-20 10:06:50 · 1241 阅读 · 0 评论 -
?|USACO 5.4.4|Betsy's Tour|漫游小镇|插头DP
和POJ Tony’s Tour一毛一样。。#include <cstdio>#include <algorithm>#include <map>using namespace std;const int N = 20001, M = 5001;typedef long long ll;typedef map<ll, ll>::iterator mll;const int state[原创 2016-04-23 10:59:24 · 1460 阅读 · 0 评论 -
CodeVS 1416|USACO Train 5.5.3|Two Five|二五语言|搜索
题目【描述】有一种奇怪的语言叫做“贰五语言”。它的每个单词都由A~Y这25个字母各一个组成。但是,并不是任何一种排列都是一个合法的贰五语言单词。贰五语言的单词必须满足这样一个条件:把它的25个字母排成一个5*5的矩阵,它的每一行和每一列都必须是递增的。比如单词ACEPTBDHQUFJMRWGKNSXILOVY,它排成的矩阵如下所示: A C E P T B D H Q U F J M R W原创 2016-04-23 10:19:23 · 1248 阅读 · 0 评论 -
POJ 1273 USACO 93 Drainage Ditches 最大流
先拉低一波文章质量(文章质量早已不行了。。)#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;const int inf = 2147483647, N = 210, M = 40005;int level[N], n, cnt = 0, v[M],原创 2016-04-04 00:19:38 · 515 阅读 · 0 评论 -
POJ 1987 BZOJ 3365 USACO 2004 Feb Distance Statistics 路程统计 点分治
和POJ 1714一样。。 http://blog.youkuaiyun.com/huanghongxun/article/details/50967578#include <cstdio>#include <algorithm>#include <cstring>const int N = 40005, M = N * 2;#define adj(i,j) for(int i=h[j];i;i=p[原创 2016-04-03 18:11:57 · 614 阅读 · 0 评论 -
BZOJ 1574 USACO 2009 Jan Damage 地震损坏
真是乱搜就A了。而且乱搜能上第一页#14惊了。#include using namespace std;const int N = 30001, M = 200001;int read() { int s = 0, f = 1; char ch = getchar(); for (; ch '9'; ch = getchar()) if (ch == '-') f =原创 2016-02-07 19:40:11 · 648 阅读 · 0 评论 -
BZOJ 1653 USACO 2006 Feb Backward Digit Sums 全排列
%%% http://www.cnblogs.com/zyfzyf/p/3983584.html神奇的杨辉三角#include #include #define rep(i,j,k) for(i=j;i<k;i++)int main() { int n, m, i, j, a[10], f[10]; scanf("%d%d", &n, &m); rep(i,0原创 2016-02-07 18:31:42 · 653 阅读 · 0 评论 -
BZOJ 1673 USACO 2005 Dec Scales 天平
%%%KBlackcn#include typedef long long ll;ll n, a[46], c, ans = 0, q[46];void dfs(ll p, ll s) { if (s + q[p] <= ans) return; if (ans < s) ans = s; for (ll i = p; i; i--) if (s + a[i] <原创 2016-02-07 15:42:19 · 650 阅读 · 0 评论 -
BZOJ 3891 USACO 2014 Dec Piggy Back 搜索 最短路
第一个人从1出发边权A,第二个人从2出发边权B,走到一起边权C,求最短方案使两人走到n。分别从1,2,n跑一次最短路,然后枚举走到一起的点计算答案即可。没开快速读入 104ms,开快速读入84ms,第二页和第一页的区别,然而很小。。#include #include #include const int N = 40001, M = 80001;using namespace原创 2016-01-31 17:01:19 · 396 阅读 · 0 评论 -
BZOJ 1603 [Usaco2008 Oct]打谷机 暴力搜索
一些齿轮之间有正着连接和反着连接,问最后一个齿轮的方向。dfs即可。写不写快速读入就是40ms和4ms的区别。。还真是资格赛。#include const int N = 1001, M = 2001;int read() { int s = 0, f = 1; char ch = getchar(); for (; ch '9'; ch = getchar(原创 2016-01-29 21:11:02 · 525 阅读 · 0 评论 -
BZOJ 1755 [USACO 2005 Qua] Bank Interest 快速幂
一开始没看清题,发现暴力就可以了。。写了个快速幂打了个酱油。。#include typedef long double ld;ld quickpow(ld a, int b) { ld ans = 1; for (; b; b /= 2, a = a * a) if (b & 1) ans *= a; return ans;}int main原创 2016-01-10 16:21:38 · 657 阅读 · 0 评论 -
BZOJ 1770 USACO 2009 Nov Lights 灯 高斯消元异或方程组
%%% http://wenku.baidu.com/link?url=Y55O7adUuZ1biB4m_9wdrJhts9KqqLwnMlI25xgxcpUok9Gv5CrRK9kV9Rxci2Eq8DDcfGi6I9gzVQURJv0kywjihAtkkE61mAss8ZO8qOW对于每盏灯,有方程组xor{X[adj[i]]} = 1。解异或方程组即可。可以尝试把ts >= an原创 2016-02-08 21:02:14 · 658 阅读 · 0 评论 -
BZOJ 1619 USACO 2008 Nov Guarding the Farm 保卫牧场
每次都从最高点开始流即可。话说这个dfs是不是floodfill?跪了,第一页咋这么快。#include #include using namespace std;const int N = 700;int read() { int s = 0, f = 1; char ch = getchar(); for (; ch '9'; ch = getchar()原创 2016-02-08 23:19:36 · 653 阅读 · 0 评论 -
BZOJ 1082 SCOI 2005 栅栏 搜索+剪枝
见到最大最小化的先考虑二分答案。。那好就二分可以满足的需求个数。 首先可以确定的优化 1. 删掉比最小的需求都小的木板,删掉比最大给定木板还大的需求。 2. 优先满足更大的需求,从最小的木板开始切。 3. 如果有相等的需求,且上一个相等需求i切了j,那么该需求就从j开始切,可以避免重复搜索量。 4. 如果没被浪费的小于需求的总量就不合法。 概括地说就是要考虑初始的不合法情况,搜索原创 2016-02-09 13:48:08 · 597 阅读 · 0 评论 -
机房水题欢乐赛 2016-02-17
考试时题面用pdf格式给却不是latex生成的,严重吐槽T1: 数字给你N个数,编号1~N,从某个区间[L,R]中,任意选择二个数字,它们相同的概率是多少。Input第一行一个整数N 接下来一行,N个整数。 第三行一个整数M,表示询问次数。 接下来M行,每行两个整数L,ROutputM行,每行一个分数,表示两个数字是相同的概率,必须为最简分数。Sample Input6 41 2 3 3 3原创 2016-02-17 16:56:16 · 430 阅读 · 2 评论 -
USACO|Barn Repair|堆|贪心|动态规划
SolutionDPdp[i,j]=min{f[i−1,j−1]+1,f[i,j−1]+a[j]−a[j−1]} dp[i,j]=\min\{f[i-1,j-1]+1,f[i,j-1]+a[j]-a[j-1]\} min的第1项表示第j个牛棚用一块长度为1的新木板覆盖 第2项表示延长第i块木板至第j个牛棚。贪心当所有木板都用时长度最短。 一开始c块barn1原创 2016-04-24 00:33:21 · 484 阅读 · 0 评论