
USACO
文章平均质量分 61
PureWhiteWu
热爱C/C,古风,K歌,羽毛球,LOL
展开
-
USACO 2009 Dec cow toll paths 过路费
#include#includeconst int maxn=300;const int maxm=10002;const int inf=maxn*100000;int c[maxn],id[maxn],d[maxn][maxn];int ans[maxm],src[maxm],dst[maxm];int n,m,q,u,v,w,t,i,j;int max(int a,int b原创 2014-01-19 16:52:37 · 1090 阅读 · 0 评论 -
USACO 2009 Dec Bobsledding 滑雪比赛
#include#includeconst int maxn=100003;int n,l;int t[maxn],s[maxn];long long int f[maxn],max;int min(int a,int b){ return a<b?a:b;}void swap(int *a,int *b){ int tmp=*a; *a=*b; *b=tmp;原创 2014-03-02 14:23:31 · 1389 阅读 · 0 评论 -
USACO 1997 FALL Big Barn 方形牛棚
#includeint n,m,x,y,f[1001][1001];bool a[1001][1001];int check(int x,int y,int k){ if(x+k>n||y+k>n) return k-1; for(int i=x;i<=x+k;i++) { if(a[i][y+k]) return k-1; } for(int i=y;i<=y+k原创 2014-03-02 14:21:50 · 841 阅读 · 0 评论 -
USACO 2009 Mar Look Up 向右看齐
#include#includeint h[1000001];int high[1000001];int cout[1000001];int main(){ int n; freopen("lookup.out","w",stdout); freopen("lookup.in","r",stdin); scanf("%d\n",&n); for(int i=1;i<=n;i+原创 2014-03-02 14:29:20 · 1308 阅读 · 0 评论 -
USACO 2011 Feb Best Parenthesis 括号序列
#include#includeusing namespace std;int main(void){ ifstream fin("paren.in"); ofstream fou("paren.out"); int n; long long int xulie[100001]={0}; long long int score=0; fin>>n; int i; int c原创 2014-03-02 14:28:00 · 1300 阅读 · 0 评论 -
USACO 2005 Nov Cow Acrobats 奶牛杂技
#include#include#includeint n,s[50001],w[50001],sw[50001];void swap(int *a,int *b){ int temp; temp=*a; *a=*b; *b=temp;}void sort(int l,int r){ int key=sw[rand()%(r-l+1)+l]; int i=l,j=r;原创 2014-03-02 14:26:32 · 1680 阅读 · 0 评论 -
USACO 2008 Feb Hotel 预订旅馆
使用线段树的数据结构。每个节点存3个信息:pre->这个节点维护区间的左端点连续空的房间数suf->这个节点维护区间的右端点连续空的房间数len->这个节点维护区间的最长连续空的房间数update为更新父节点信息download为下标下放(flag更新)#includeconst int MAXN=50000;const int MAXM=50000;const i原创 2014-02-08 13:32:49 · 1522 阅读 · 0 评论 -
USACO 2007 OPEN Dining 奶牛晚宴
好吧,裸的网络流+拆点。#include#includeconst int MAX=405;int n,f,d,s,t;int map[MAX][MAX],e[MAX][MAX],q[MAX],head,tail,pre[MAX];long long int ans;bool bfs(){ for(int i=0;i<MAX;i++) { pre[i]=0; } he原创 2014-02-04 23:55:43 · 828 阅读 · 0 评论 -
USACO 2011 Jan Profits 公司利润
动态规划的水题,不多说了。#includeint n,p,f[100001],max;int main(){ freopen("profits.in","r",stdin); freopen("profits.out","w",stdout); scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&p); f[i]=p>原创 2014-02-05 00:22:23 · 1084 阅读 · 0 评论 -
USACO 2010 Feb Chocolate Giving 领取巧克力
这道题其实就是堆优化的Dijkstra。不用堆优化的话是会超时的。#include#include#define PROBNAME "cgiving"const int MAXN=50000;const int MAXM=100000;const int MAXB=25000;const int INF=2000*MAXN*2+1;int n,m,b;int k,firs原创 2014-02-04 23:57:22 · 883 阅读 · 0 评论 -
USACO 2009 Mar Earthquake Damage 2 地震破坏
这道题其实就是网络流,难在建图。应该可以看出,这道题就是求一个最小割。超级源点和超级汇点这个不在赘述,主要的一个就是要把所有点都拆成流入点和流出点,并且权值设为1。而对于与超级源点相连的点,则再加一条流量为正无穷的边,不然在用dinic算法算的时候会直接选择把这几个点切断。#include#includeconst int MAXP=3000*2;const int MAX原创 2014-02-04 23:53:55 · 1028 阅读 · 0 评论 -
USACO 2004 OPEN Moofest 奶牛集会
先按照坐标x进行排序,随后用归并排序对v进行排序。用部分和去求总和。#include#includeconst int maxn=20002;int v[maxn],x[maxn],n;int b[maxn],c[maxn];long long int ans;void swap(int *a,int *b){ int tmp=*a; *a=*b; *b=tmp;}vo原创 2014-02-05 00:19:33 · 1270 阅读 · 0 评论 -
USACO 2004 Nov Apple Catching 接住苹果
f[i][j]表示第i个苹果掉下来时贝西一共移动了j次所接到的最多的苹果数。根据移动次数能判别贝西在哪个苹果树下。#includeint n,k,f[1001][31],t[1001],ans;int max(int a,int b){ return a>b?a:b;}int main(){ freopen("bcatch.in","r",stdin); freopen(原创 2014-02-05 00:24:34 · 1819 阅读 · 0 评论 -
USACO 2012 Mar Haybale Restacking 重排干草
假设对于所有位置都只从其左边一个位置搬运干草过去,则可设ab[i]为i号位接收到的干草数量。ab[i]=a[i-1]-b[i-1]+ab[i-1];根据ab[i]排序。这里要采用快速排序,不然超时。ps:这个程序用不到long long int。不知道为啥当时也许是本博主脑抽了都写了long long int。#include#include#includelong long原创 2014-02-05 00:16:59 · 1655 阅读 · 1 评论 -
USACO 2009 Feb Cruel Math Teacher 数的幂次
快速幂,不多说了。#include#includeint a[15001],b[15001],c[15001],n,p;void copy(int c[],int a[]){ for(int i=0;i<=c[0];i++) a[i]=c[i];}void mutil(int a[],int b[],int c[]){ for(int i=0;i<=a[0]+b[0]原创 2014-02-05 00:02:56 · 1064 阅读 · 0 评论 -
USACO 2009 Feb Revamping Trails 道路翻新
这道题不妨借用一下动态规划的思路,把一个点拆成k+1(max是20)个点来做,对于所有的点ui分别和vi与vi+1相连。详见代码:#include const int maxn = 10000;const int maxm = 100000;const int INF = maxn * 100000;int n, m, k, s;int p[maxn+1], q[maxn+1原创 2014-02-05 00:00:19 · 1221 阅读 · 0 评论 -
USACO 2005 Nov Asteroids 小行星群
#include#includeconst int MAXN=500;const int MAXM=10000;const int MAX=MAXM*2+MAXN*4+10;const int INF=1;int n,m;int first[MAXN*2+3],k,next[MAX],head[MAX],tail[MAX],c[MAX],s,t;int q[MAXN*2+3],qh原创 2014-02-04 23:49:03 · 994 阅读 · 0 评论 -
USACO 2007 Dec Gourmet Grazers 挑剔的美食家
挑剔的美食家约翰的奶牛对食物越来越挑剔了。现在,商店有M 份牧草可供出售,奶牛食量很大,每份牧草仅能供一头奶牛食用。第i 份牧草的价格为Pi,口感为Qi。约翰一共有N 头奶牛,他要为每头奶牛订购一份牧草,第i 头奶牛要求它的牧草价格不低于Ai,口感不低于Bi。请问,约翰应该如何为每头奶牛选择牧草,才能让他花的钱最少?输入格式• 第一行:两个整数N 和M,1 ≤ N ≤原创 2014-04-04 23:09:24 · 825 阅读 · 0 评论