【第22期】观点:IT 行业加班,到底有没有价值?

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.section1.4 && 1.5(2015.11.12)

(usaco.sectiorn1.4)Mother‘s Milk 有 A, B, C 三个桶,每个桶有一定的容量,起初 A, B 中没有任何东西,而 C 中装满了牛奶。可以将 C 中的奶倒入 A...

C++——USACO Section 1.4 题解

Arithmetic Progressions An arithmetic progression is a sequence of the form a, a+b, a+2b, ..., a+...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

USACO-Section1.4 Mother's Milk

USACO-Section1.4 Mother's Milk

USACO Section 1.4 Mother's Milk

题目描述 农民约翰有三个挤奶桶的容量A,B和C升。 数字A,B和C中的每一个为1至20的整数,包括1和20。 最初,桶A和瓶B都是空的,而桶C已经满了牛奶。 有时,FJ将牛奶从一个桶倒入另一个桶中,...

USACO-Section1.5 Number Triangles [其他]

2017-5-29题目输入n表示下面的三角形有n行,然后输入一个阶梯型数字三角,问从顶开始向下(两种选择)到底部经过的路径上的数字之和最大为多少。样例5 7 3 ...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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