USACO Section 1.4

原创 2016年05月31日 12:08:24

USACO Section 1.4
Arithmetric Progression

/*
    ID: beihai2013
    TASK: ariprog
    LANG: C++
*/
/*
    找出满足(a+i*b)(i<n,i>=0)的所有a,b,其中a+i*b的值在集合S{P^2 + Q^2}中
    暴力循环做就可以了,主要是题意比较难理解
*/
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 250 + 3;
int n, m;
int a[MAXN * MAXN], cnt;
bool v[MAXN * MAXN * 2];
bool check(int a, int b)
{
    for(int i = 0 ; i < n ; i++) {
//        if(a == 2 && b == 24) printf("i = %d, res = %d\n", i, a + b * i);
        if(v[a + i * b] == 0) return false;
    }
    return true;
}
int main()
{
    freopen("ariprog.in", "r", stdin);
    freopen("ariprog.out", "w", stdout);
    while(scanf("%d%d", &n, &m) != EOF) {
        cnt = 0;
        memset(v, false, sizeof v);
        for(int i = 0 ; i <= m ; i++) {
            for(int j = i ; j <= m ; j++)
                a[cnt++] = i * i + j * j, v[a[cnt - 1]] = 1;
        }
        sort(a, a + cnt);
        int num = 1;
        for(int i = 1 ; i < cnt ; i++) {
            if(a[i] != a[i - 1]) a[num++] = a[i];
        }
        cnt = num;
//        for(int i = 0 ; i < cnt ; i++) printf("%d ", a[i]);
//        printf("\n");
        int ok = 0;
        for(int len = 1 ; len <= a[cnt - 1] / (n - 1) ; len++) {
            for(int i = 0 ; a[i] + (n - 1) * len <= a[cnt - 1] ; i++) {
                if(check(a[i], len)) printf("%d %d\n", a[i], len), ok = 1;
            }
        }
        if(ok == 0) puts("NONE");
    }
    return 0;
}

Mother’s Milk

/*
    ID: beihai2013
    TASK: milk3
    LANG: C++
*/
/*
    简单的深搜加一个判重
*/
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 20 + 5;
int vis[MAXN][MAXN][MAXN];
int up[3];
void dfs(int a[3])
{
    if(vis[a[0]][a[1]][a[2]]) return;
    vis[a[0]][a[1]][a[2]] = 1;
    for(int i = 0 ; i < 3 ; i++) {
        for(int j = 0 ; j < 3 ; j++) {
            if(i == j) continue;
            int temp = min(a[i], up[j] - a[j]);
            a[i] -= temp, a[j] += temp;
            dfs(a);
            a[i] += temp, a[j] -= temp;
        }
    }
}
int main()
{
    freopen("milk3.in", "r", stdin);
    freopen("milk3.out", "w", stdout);
    while(scanf("%d%d%d", &up[0], &up[1], &up[2]) != EOF) {
        memset(vis, 0, sizeof vis);
        int a[3];
        a[0] = 0, a[1] = 0, a[2] = up[2];
        dfs(a);
        int f = 1;
        for(int i = 0 ; i <= up[2] ; i++) {
            if(vis[0][up[2] - i][i] == 0) continue;
            if(f) f = 0;
            else printf(" ");
            printf("%d", i);
        }
        printf("\n");
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

USACO入门以及提交格式

从今天开始正式尝试usaco,刚注册了账号,发现验证码怎么都刷不出来,后来查了才知道是谷歌的验证码,被墙掉了,只能翻了墙才注册好 【usaco是美国中学生的官方竞赛网站,美国著名在线题库,专门为信息...
  • niskoy
  • niskoy
  • 2015年12月14日 21:52
  • 1593

[USACO Jan09]安全路径Safe Travel解题报告

题目 http://cojs.tk/cogs/problem/problem.php?pid=279 分析 首先把最短路径树画出来(由题意最短路径唯一,所以是树): 其中1是根。我们...
  • wmdcstdio
  • wmdcstdio
  • 2015年07月01日 08:02
  • 1226

USACO 1.3 Wormholes (不会做,贴官方解答)

描述 农夫约翰爱好在周末进行高能物理实验的结果却适得其反,导致N个虫洞在农场上(2 根据他的计算,约翰知道他的虫洞将形成 N/2 连接配对。例如,如果A和B的虫洞连接成一对,进入虫洞A...
  • wdkirchhoff
  • wdkirchhoff
  • 2014年11月27日 11:05
  • 4047

USACO Section 1.4 Mother's Milk

/* ID: lucien23 PROG: milk3 LANG: C++ */ #include #include #include #include using namespace std; ...
  • LucienDuan
  • LucienDuan
  • 2014年02月19日 21:39
  • 761

USACO-Section1.4 Mother's Milk

2017-5-29题目输入三个数abc表示三个牛奶瓶子大小,开始时c瓶中装满牛奶,倒牛奶必须将瓶子倒空或倒满,问当a是空的时,c中牛奶可能的取值。样例2 5 10 输出 5 6 7 8 9 10题...
  • xcwhkh
  • xcwhkh
  • 2017年05月30日 15:39
  • 113

USACO-Section1.4 Mother's Milk【广度优先搜索】

题目描述:农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满牛奶的。有时,农民把牛奶从一个桶倒到 另一个桶中,直到被灌桶装满或原桶空...
  • tjj1998
  • tjj1998
  • 2017年06月01日 20:40
  • 98

USACO-Section 1.4 Arithmetic Progressions(枚举)

数据很小,时间有5s,直接枚举即可。最后一组数据比官方标程慢了0.5s,本来有更好的优化,但是更浪费空间,就懒得改了。。。...
  • idealism_xxm
  • idealism_xxm
  • 2015年08月27日 14:20
  • 449

USACO Section 1.4 The Clocks

/* ID: lucien23 PROG: clocks LANG: C++ */ /* *广度优先遍历搜索 *需要适当剪枝 *结果存在内存分配问题 *最后采用枚举法通过测试 **/ #...
  • LucienDuan
  • LucienDuan
  • 2013年12月01日 17:36
  • 567

USACO Section1.4 Arithmetic Progressions

题目原文 Arithmetic Progressions An arithmetic progression is a sequence of the form a, a+b, a+2b,...
  • keybord_dancer
  • keybord_dancer
  • 2014年10月17日 22:09
  • 463

USACO Section 1.4 Packing Rectangles (POJ 1169)搜索

这是一个很蛋疼的搜索题,虽然题中只给了5种矩形组合方式,但是搜索时的长和宽并不是唯一的,所以就产生了很多种组合方式.需要注意的是第4种和第3种图形实际上能规划成一种。 而产生这些组合最好用的应该就是D...
  • sdj222555
  • sdj222555
  • 2011年08月20日 10:37
  • 1086
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:USACO Section 1.4
举报原因:
原因补充:

(最多只允许输入30个字)