搜索
有爱,有技术,有你^_^)y
╱人◕‿‿◕人╲订下契约(注册新用户)

合作站点账号登陆

QQ登录

只需一步,快速开始

快捷导航
楼主: foodszhu
收起左侧

编程之美2013全国挑战赛------资格赛

[复制链接]

该用户从未签到

1

主题

9

好友

1214

积分

Continue

积分
1214
发表于 2013-4-6 22:54:57 | 显示全部楼层
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

签到天数: 17 天

连续签到: 1 天

[LV.4]偶尔看看III

298

主题

139

好友

6万

积分

荣誉会员

积分
66622
发表于 2013-4-6 23:08:35 来自手机 | 显示全部楼层
m13890 发表于 2013-4-6 22:54
T T求大神指教。。

嗯~用数学方法~明天上班时候再来
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

7

好友

1352

积分

Continue

积分
1352
发表于 2013-4-6 23:15:30 | 显示全部楼层
Whisper1166 发表于 2013-4-6 22:00
我也注册了一个号,第二题莫名其妙的就AC了…等我再看看

同求大神指导,,推公式推晕了TAT
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

签到天数: 17 天

连续签到: 1 天

[LV.4]偶尔看看III

298

主题

139

好友

6万

积分

荣誉会员

积分
66622
发表于 2013-4-6 23:31:08 来自手机 | 显示全部楼层
UnICorN21 发表于 2013-4-6 23:15
同求大神指导,,推公式推晕了TAT

之前看了一个别人给的数据,m=3,n=5,k=10,结果是10
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

30

主题

127

好友

2万

积分

技术宅认证程序员

重度中二患者

积分
28325
 楼主| 发表于 2013-4-6 23:41:14 | 显示全部楼层
Whisper1166 发表于 2013-4-6 23:31
之前看了一个别人给的数据,m=3,n=5,k=10,结果是10

唉。。。。穷举过得倒地不起。。。
等死星人
回复 支持 反对

使用道具 举报

签到天数: 17 天

连续签到: 1 天

[LV.4]偶尔看看III

298

主题

139

好友

6万

积分

荣誉会员

积分
66622
发表于 2013-4-6 23:53:54 来自手机 | 显示全部楼层
foodszhu 发表于 2013-4-6 23:41
唉。。。。穷举过得倒地不起。。。

处理边长和石子数的时候麻烦点…
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

16

好友

5383

积分

序章

积分
5383
发表于 2013-4-7 00:02:38 | 显示全部楼层
Whisper1166 发表于 2013-4-6 23:31
之前看了一个别人给的数据,m=3,n=5,k=10,结果是10

关注中
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

0

好友

556

积分

New Game

积分
556
发表于 2013-4-7 00:48:18 | 显示全部楼层
Whisper1166 发表于 2013-4-6 23:31
之前看了一个别人给的数据,m=3,n=5,k=10,结果是10

求大神明早指导,这个数据跑的是对的,但还是wa了。

点评

刚看了55楼的代码…我的那个略渣就算了吧Orz  发表于 2013-4-7 16:32
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

20

好友

1万

积分

第一章

积分
17868
发表于 2013-4-7 02:35:35 | 显示全部楼层
第一题 C++ 代码(已优化,应该可以AC大数据):
[mw_shl_code=cpp,true]#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int t, n, m;
string org[100], cha[100], msg;
//org=original, cha=changed, msg=message

void getdata()
{
    cin >> n >> m;
       
        for (int i = 0; i < m; i++)
        {
                cin.ignore(1, '\n');
                cin >> org >> cha;
        }
       
        cin.ignore(1, '\n');
        getline(cin, msg);
}

bool change(string &s)
//change a original word into final state
//if the word can't be changed then return false
{
        for (int i = 0; i < m; i++)
        {
                if (s == org)
                {
                        s = cha;
                        return true;
                }
        }
        return false;
}

string transmit()
//get the result that be transmitted
{
        string word, ans;
        stringstream msgs(msg);
        int maxchange = n - 1;
       
        while (msgs >> word)
        {
                int count = 0;
                while (change(word))
                {
                        count++;
                        if (count == maxchange)
                        {
                                break;
                        }
                }
                ans += word + ' ';
        }
       
        ans.erase(ans.length() - 1);

        return ans;
}

int main()
{
        ios::sync_with_stdio(false);
       
        cin >> t;
        for (int i = 1; i <= t; i++)
        {
                getdata();
                string ans = transmit();
                cout << "Case #" << i << ": " << ans << endl;
        }
       
        return 0;
}
[/mw_shl_code]
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

16

好友

5383

积分

序章

积分
5383
发表于 2013-4-7 10:16:04 | 显示全部楼层
本帖最后由 绯色基 于 2013-4-7 10:18 编辑

这是我在网上看到的第二题,自测无错
所以我想问sqrt(K*1.0)那里为什么要赋这个值?

[mw_shl_code=applescript,true]#include<cstdio>
#include  <math.h>
#include <stdlib.h>
#include "string.h"
int main()
{

int T, t;
scanf("%d",&T);
t = 1;
while (t <= T)
{
int N, M, K;
scanf("%d%d%d",&N,&M,&K);


int result = 0;
if (N > M)  // 令M>N
{
int tmp = N;
N = M;
M = tmp;
}

int n1 = int(sqrt(K*1.0)), n2 = M;
n1 = n1 > N ? N : n1;
for (; n1 * n2 > K; --n2);


int max = 0;
while (n1 >= 2 && n2 <= M)
{
int k = K;
result += ( n1 * (n1 - 1) * n2 * (n2 - 1) )/4;
k -= n1 * n2;
if (n2 < M)
result += n2 * (k * (k - 1) / 2);
else
result += n1 * (k * (k - 1) / 2);


max = result > max ? result : max;


// 修改n1,n2
--n1;
n2 = K / n1;
result = 0;
}

printf("Case #%d: %d",t,max);
printf("\n");

++t;
}


return 0;
}[/mw_shl_code]
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

30

主题

127

好友

2万

积分

技术宅认证程序员

重度中二患者

积分
28325
 楼主| 发表于 2013-4-7 11:11:02 | 显示全部楼层
绯色基 发表于 2013-4-7 10:16
这是我在网上看到的第二题,自测无错
所以我想问sqrt(K*1.0)那里为什么要赋这个值?

因为理论上来说最后组成的一个大矩形肯定要比K能组成的最大正方形要大。。。就是这样。。。
等死星人
回复 支持 反对

使用道具 举报

该用户从未签到

30

主题

127

好友

2万

积分

技术宅认证程序员

重度中二患者

积分
28325
 楼主| 发表于 2013-4-7 11:16:39 | 显示全部楼层
第三题遇到各种各样的错误。。。WT,RF。。。。这都是什么啊。。。。
等死星人
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

7

好友

1352

积分

Continue

积分
1352
发表于 2013-4-7 11:50:22 | 显示全部楼层
foodszhu 发表于 2013-4-7 11:16
第三题遇到各种各样的错误。。。WT,RF。。。。这都是什么啊。。。。

WT好像不是错误,,是正在测试吧,RF是啥东东= =
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

16

好友

5383

积分

序章

积分
5383
发表于 2013-4-7 11:52:53 | 显示全部楼层
本帖最后由 绯色基 于 2013-4-7 11:54 编辑
UnICorN21 发表于 2013-4-7 11:50
WT好像不是错误,,是正在测试吧,RF是啥东东= =

Runtime Error
运行错误?
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

30

主题

127

好友

2万

积分

技术宅认证程序员

重度中二患者

积分
28325
 楼主| 发表于 2013-4-7 11:55:52 | 显示全部楼层
UnICorN21 发表于 2013-4-7 11:50
WT好像不是错误,,是正在测试吧,RF是啥东东= =

不晓得啊。。。。貌似是不准用qsort。。。。用了就rf。。。但不确定啊。。。说不准是我写错了。。
思路至少过小数据应该没错的说。。但总wa。。。努力纠错中。。。
等死星人
回复 支持 反对

使用道具 举报

本版积分规则

小黑屋|手机版|技术宅(Z站|基宅) ( 粤ICP备18082987号-1 )

GMT+8, 2025-5-1 23:33 , Processed in 0.131153 second(s), 32 queries , Redis On.

Copyright © 2018 技术宅社区

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表