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 Section 1.4 Mother's Milk

/* ID: lucien23 PROG: milk3 LANG: C++ */ #include #include #include #include using namespace std; ...

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
  • 89

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

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

USACO-Section 1.4 Arithmetic Progressions(枚举)

数据很小,时间有5s,直接枚举即可。最后一组数据比官方标程慢了0.5s,本来有更好的优化,但是更浪费空间,就懒得改了。。。...

USACO Section 1.4 The Clocks

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

USACO Section 1.4 clocks - 好恶心的搜索题

或许是我的处理问题...这题代码给敲了这么多...就是一个裸的BFS+Hash判重...判重就是把矩阵看成一个9位的四进制数...     开始我还想写A*...自以为是的用每个点的值到12的差之和...
  • kk303
  • kk303
  • 2011年11月13日 03:47
  • 749

USACO-Section 1.4 Mother's Milk(BFS)

今天USACO总挂,好烦人。。。 很简单的搜索题,深搜、宽搜都可以,感觉宽搜更容易写就用的宽搜,每次将未出现的状态压入队列中,出队列时判断是否合法,直至队列为空...

USACO Section 1.4 Packing Rectangles

/* ID: lucien23 PROG: packrec LANG: C++ */ /* *深度优先遍历,找出最优解 *此题是我做USACO到目前为止花时间最多的 *很郁闷 **/ #i...

USACO Section 1.4 Arithmetic Progressions

/* ID: lucien23 PROG: ariprog LANG: C++ */ #include #include #include #include #include using names...

USACO Section 1.4 More Search Technique

Orz, 感觉题已经慢慢开始变难了, 快要刷不动过了...  不知道我还能坚持刷多久。 Arithmetic Progressions 题意:一个可以表示为两个完全平方数相加的数被称为 b...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:USACO Section 1.4
举报原因:
原因补充:

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