| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 42026 人关注过本帖, 47 人收藏
标题:C论坛算法团队 首战 西安电子科技大学OJ
只看楼主 加入收藏
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
呵呵,小曹果然不负众望。

我知道的二分图最大匹配算法我也只知道匈牙利算法而已。

与你的不同之处在于你用的是DFS,而我用的是BFS。回头我要对比一下你我程序的差别。

展示一下我的WA代码吧。关于机枪能自毁这事当我看到它的攻击范围是从0开始时已经意识到了。

最近没有玩ACM的心情,休息一下。呵呵,就辛苦两位了。

程序代码:
#include<stdio.h>
#define M    100
int cal(int map[][M], int n)
{
    int x[M] = {}, lx[M], mx[M];
    int y[M] = {}, ly[M], my[M];
    int c = 0, lxn, lyn, i, j, k, t;
   
    for(c = i = 0; i < n; i++)
    {
        if(x[i]) continue;
        for(j = 0; j < n; j++) mx[j] = my[j] = 0;
        mx[i] = 1;
        lx[0] = i;
        lxn = 1;
        lyn = 0;
        for(k = j = 0; j < lxn; j++)
        {
            for(t = 0; t < n; t++)
            {
                if(!map[lx[j]][t] || my[t]) continue;
                if(y[t]){ my[t] = 1; ly[lyn++] = t;}
                else{ x[i] = 1; y[t] = 1; c++; break;}
            }
            if(t != n) break;
            for(; k < lyn; k++)
            for(t = 0; t < n; t++)
            if(x[t] && map[t][ly[k]] && !mx[t])
            {
                lx[lxn++] = t;
                mx[t] = 1;
            }
        }
    }
    return c;
}
int main()
{
    int map[M][M], x[M], y[M], s[M], e[M];
    int t, n, i, j, d;
    for(scanf("%d", &t); t--; printf("%d\n", cal(map, n)))
    {
        for(scanf("%d", &n), i = 0; i < n; s[i] *= s[i], e[i] *= e[i], i++)
            scanf("%d%d%d%d", &x[i], &y[i], &s[i], &e[i]);
        for(i = 0; i < n; i++)
        for(j = 0; j < n; j++)
            map[i][j] = (d = (d = x[i] - x[j]) * d + (d = y[i] - y[j]) * d) >= s[i] && d <= e[i];
    }
    return 0;
}

重剑无锋,大巧不工
2012-12-12 20:01
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:0 
回复 108楼 beyondyf
杨大哥,曹大哥,我其实挺想往深了学学编程的,不知两位有什么建议,或者介绍介绍你们当初怎么过来的。

再或者有什么建议什么的,小弟在这里先谢过了。

编程之路定要走完……
2012-12-12 21:42
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
呵呵,你知道我和小曹都不是计算机专业的吧。我是电气工程专业的,小曹好像是学医的。

我也很少给别人学习方法方面的建议,毕竟个人情况不同。

小曹具体怎么学我不知道,我从初中开始接触编程,完全是兴趣,想学什么就找什么资料,仅此而已。

重剑无锋,大巧不工
2012-12-13 22:41
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:0 
回复 110楼 beyondyf
好吧,我也是兴趣,我是电子信息专业的,我现在也是趋向于你说的那种想起什么上网查资料或者买书看。

编程之路定要走完……
2012-12-14 10:02
黄军
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-12-14
收藏
得分:0 
看不懂   不了解for(; scanf("%d", &n) != EOF; printf("%d\n", cal(a, n)))
是什么意思
2012-12-20 20:50
jk333
Rank: 2
来 自:XX
等 级:论坛游民
帖 子:41
专家分:29
注 册:2009-10-29
收藏
得分:0 
学习了,好多东西不懂,得慢慢体会,

有了目标,有了方向,每天就少睡点吧!
2012-12-21 08:40
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
好像最近没见有新题被解答。看来小曹和小戴也累了呵呵,没关系休息一下玩玩别的换换脑子也好。

最近除了工作我也在忙点别的事情,希望各位谅解。

重剑无锋,大巧不工
2012-12-21 11:34
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:0 
回复 114楼 beyondyf
杨大哥,最近期末了,想玩也没时间。忙着复习呢。估计曹哥也是。

编程之路定要走完……
2012-12-21 15:29
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:0 
Problem 1206 - 幽幽子饿了
Time Limit: 1000MS   Memory Limit: 65536KB   Difficulty:
Total Submit: 6  Accepted: 3  Special Judge: No
Description
 幽幽子每天都会忘记自己早饭吃了什么,所以每天都会:我今天吃早饭了么?好像没有,那去吃吧~我今天吃早饭了么?好像没有,那去吃吧~我今天吃早饭了么?好像没有,那去吃吧~【好吧UUZSAMA别卖萌了】

话说身为幽灵还要吃东西实在是违背了食物链呀,但是如果不让幽幽子大人吃饱的话实在是很可怕的事情呢【话说从来就没吃饱过吧】~
现在幽幽子大人来找你要吃的了,为了你的人身安全,你决定从你储藏的所有食物里选一部分送给幽幽子大人【你得是有多少食物竟然打算只给一部分】。首先你估计了一下幽幽子大人会吃多少东西【卧槽你是怎么估计出来的!黑洞都能估计!!!】,这个被你具体成了一个量【单位:不可说】,然后你又估计了一下每种食物可以提供给幽幽子大人多少不可说【再强调一下“不可说”是单位】,你希望提供最少种类的食物,于是你要算出最少的种类是多少。
当然了,因为这是个估计值,所以给多了也没关系,反正只要是幽幽子大人的话都能吃得下,但是~绝对不能少。
Input
多组输入EOF结束。每组第一行两个数n和k,分别代表你的n种食物,你估计幽幽子大人会吃k不可说。接下来一行n个数,第i个数ai表示第i种食物可以提供ai不可说。
1<=n<=100000    ai<5000    k<2^63-1
Output
每组数据输出一行表示要提供最小种的食物,如果不能提供则输出n【表示你要交出你的全部食物】
Sample Input
1 2
3
Sample Output
1
Hint
Source
d891320478


这道题目有点贪心的意思,尽可能的使食物类别少就要尽可能的给食物最多的那类,很简单的题目,我写了一遍就过了都没用编译,嘻嘻。


程序代码:
#include <iostream>
#include <cstdlib>
#define N 100000
using namespace std;

int cmp(const void *a,const void *b)
{
    return *(int *)b-*(int *)a;
}

int main()
{
    int n,k,m,i,ai[N];
    while(cin>>n>>k)
    {   
        for(m=0,i=0;i<n;++i)    {cin>>ai[i];m+=ai[i];}
        if(m>k)
        {
            qsort(ai,n,sizeof(int),cmp);
            for(m=0,i=0;i<n;++i)
            {
                m+=ai[i];
                if(m >= k)    break;
            }
            cout<<i+1<<endl;
        }
        else    cout<<n<<endl;
    }
    return 0;
}

编程之路定要走完……
2012-12-21 15:59
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:0 
提个小小的建议,可以把新添的那一页题目先刷完。

编程之路定要走完……
2012-12-21 16:01
快速回复:C论坛算法团队 首战 西安电子科技大学OJ
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020345 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved