
USACO
文章平均质量分 77
zwfars
这个作者很懒,什么都没留下…
展开
-
USACO/kimbits 3.2.2
#include #include #includeint main(){ FILE *fin=fopen("kimbits.in","r"); FILE *fout=fopen("kimbits.out","w"); int n,l,t,p; int i,j; long long k; long long ars[40][40]={0};原创 2013-04-28 20:46:45 · 432 阅读 · 0 评论 -
USACO/rockers 3.4.4 动态规划
状态方程总是难想的。#include #include int max(int a,int b){ if(a<b) return b; return a;}int main(){ FILE *fin=fopen("rockers.in","r"); FILE *fout=fopen("rockers.out","w");原创 2013-05-26 00:33:15 · 425 阅读 · 0 评论 -
usaco fence4 3.4.1
这题不会写,以后再来了原创 2013-05-26 08:21:40 · 357 阅读 · 0 评论 -
USACO/nuggets 4.1.1
这个题算是运气吧,因为我就设了个上界10W。没想到过了,但是不知道什么原理。题解:只要你知道以下的数论结论,这道题就是水背包了:有两个数p,q,且gcd(q,p)=1,则最大无法表示成px+qy(x>=0,y>=0)的数是pq-q-p(对于n>pq-q-p,都可以表示成px+qy;而pq-q-p,就无法表示成px+qy)。而且数越多,这个值只会越小。所以我们只需考虑原创 2013-05-28 22:39:32 · 609 阅读 · 0 评论 -
USACO fence8 4.1.2
这个题好难我看了题解的,迭代搜索和二分法。#include #include #includeint boardnum;int railnum;int board[60]={0};int rail[1050]={0};int waste[1050]={0};int check;int sum,total;int max;/*=====================原创 2013-06-10 23:46:32 · 670 阅读 · 0 评论 -
USACO4.2.1/ditch
/*ID: zwfars1LANG: CTASK:ditch*/#include #include #include#define inf 100000000int ans=0;int queue[1000]={0};int re[1000]={0}; //表示到i点的最大流int pa[1000]={0};原创 2013-09-10 16:42:48 · 471 阅读 · 0 评论 -
USACO 4.2.4/cowcycle
#include #include #includeint f,r; //前后轮的齿数int f1,f2;int r1,r2; //后轮的范围double min=1000000;int ansf[100]={原创 2013-09-10 16:46:25 · 503 阅读 · 0 评论 -
USACO 4.2.2 stall4
#include #include #includeint con[210][210]={{0}};int visit[210]={0}; //记录是否相连,即饱和点int tie[210]={0}; //tie[a]表示与a相连的点int check(int a,int原创 2013-09-10 16:45:23 · 476 阅读 · 0 评论 -
USACO4.2.3/job
/*依次考虑每个需要的时间,然后分别算出a,b两道工序的*/#include#include#includestruct node{ int cost; int end;};struct node ma[1010]={{0}};struct node mb[1010]={{0}};int num;int numa,numb;void sort(stru原创 2013-09-10 16:42:13 · 601 阅读 · 0 评论 -
USACO/butter 3.2.6
主要用到spfa#include#include#define max 100000000int dis[810][810]={0};int con[810][810]={0};int visit[1000]={0};int edge[810]={0};int num;int queue[2000],front,rear;/*====================初始化原创 2013-05-13 00:17:48 · 343 阅读 · 0 评论 -
USACO/fence9 3.4.3
一个简单的题,没什么算法有的话估计就是积分思想吧。但是别的题解说有定理的,我没有用,这题数据小,我这个O(n)的就行了。#include #include /*枚举横坐标,然后看纵坐标是否为整数就好*/int main(){ FILE *fin=fopen("fence9.in","r"); FILE *fout=fopen("fence9.out","w");原创 2013-05-25 09:01:04 · 454 阅读 · 0 评论 -
USACO/heritage 3.4.2 前序 中序 后序
一个简单的由先序和中序求后序的题,但是我多加了一个1,弄了半天智商捉急。。。#include #include int search(char s[],char key){ int i ; for(i=0;s[i];i++) { if(s[i]==key) { return i;原创 2013-05-24 22:46:47 · 400 阅读 · 0 评论 -
USACO/spin 3.2.3
简单题,不过我犯了个错误 Your program exited with exit status `2'. 返回值要为0 .USACO#include #include #includevoid deal(int visit[][370],int speed[],int t,int i){ int ars[370]={0}; int angle; in原创 2013-04-30 22:20:34 · 502 阅读 · 1 评论 -
USACO/fact4 3.2.1
好吧,这个题我开始取最后一位的这样只过了4组吧,后来一怒之下取了4位就行了//取最后四位分别进行运算,最后得到结果。好吧,三位也是可以的#include #include int deal(int n){ int ars; while(n%1000==0) { n=n/10; } ars=n%1000; return ar原创 2013-04-26 20:32:40 · 343 阅读 · 0 评论 -
USACO/ratios 3.2.4
简单题,不知道怎么写了半天 ,真是捉急了,暴搜就好了,代码如下,就是要注意下0什么的#include #include int main(){ FILE *fin=fopen("ratios.in","r"); FILE *fout=fopen("ratios.out","w"); int mixture[5][5]={0}; i原创 2013-05-01 22:42:46 · 388 阅读 · 0 评论 -
USACO/fence 3.3.1 欧拉回路
这个题我刚开始没有考虑有环的情况,用了个自以为简单的方法,然后一直错了代码如下。#include#includeint total[510][510]={0};int min=1000,max=0;int ans[3000]={0},f=0;int sum=0;/*=========================每个结点从小到大dfs当其没有其它结点时将其放在输出数组里原创 2013-05-16 15:45:24 · 402 阅读 · 0 评论 -
USACO/msquare 3.2.5
简单题,但是写了好长,原谅我捉急的技术吧,主要用BFS和康托展开的#include #include #include int ars[9]={ 0, 1, 2, 6, 24, 120,720, 5040, 40320};int visit[50000]={0};int fa[50000]={0};int queue[50000][8]={0},front=0,rear=0;原创 2013-05-03 15:20:28 · 2141 阅读 · 1 评论 -
USACO/shopping 3.3.2 动态规划
这个题和背包问题差不多,但是是5维的表示第一次用五维数组。注释代码里都有的。/*ID: zwfars1LANG: CTASK:shopping*//*==============================动态规划题,但是是5维的ans[a1][a2][a3][a4][a5]=min{(ans[a1-pri[j][1]][a2-pri[j][2]]原创 2013-05-18 09:33:10 · 376 阅读 · 0 评论 -
USACO/range 3.3.4
这个题不是很难的,比上个要简单很多,其实上一个我还没有写出来 的。。。/*如果以(i,j)为顶点边长为k的正方形那么判断其是否存在k+1的边,只要判断第(i+k)行和(j+k)列就好*/#include #include int ans[260]={0};int row[260][260]={0}; //row[i][j]表示第i行前j个原创 2013-05-23 16:13:49 · 442 阅读 · 0 评论 -
USACO/game1 3.3.5 博弈
这是一个博弈的问题,第一次做这种题,看了题解的。最后思想什么的都在代码里的。#include #include /*dp[i][j]=sum[i][j]-min(dp[i][j-1],dp[i+1][j]);这个原理就是假设先假设取第一个,然后第二个人取的话最大就是dp[i][j-1];假设先取的是最后一个最大就是dp[i+1][j];然后取两者最小的,就是第一个的最优原创 2013-05-23 22:59:16 · 351 阅读 · 0 评论 -
usaco 4.4.3
好久 没有写了,拓扑排序所有可能的结果写出来就好了。。/*ID: zwfars1LANG: CTASK:frameup*/#include #include #includetypedef struct node{ int xmin,ymin; int xmax,ymax;}comb;comb ars[30]={{0}};char tem[20原创 2013-10-19 17:41:47 · 451 阅读 · 0 评论