【汇总】贴一下TopCoder SRM 303 DIV I 500分题的题目和...
来源:互联网 发布:时空幻境知乎 编辑:程序博客网 时间:2024/05/16 15:47
武汉白云黄鹤站∶精华区
发信人: Fastest (Fastest), 信区: Algorithm
标 题: 【汇总】贴一下TopCoder SRM 303 DIV I 500分题的题目和...
发信站: 武汉白云黄鹤站 (2006年06月05日13:30:43 星期一), 站内信件
发信人: Ouer (偶尔)
发信站: 武汉白云黄鹤站 (2006年05月19日03:11:05 星期五)
题目的意思很简单,就是在一个棋盘上面放置了一些Knights,为了让它们之间不互相攻击
要拿掉一些Knights,要求最少要拿掉多少个Knights
这是一道二分图的匹配问题(黑书的第332页有介绍),但是好像有人用贪心给过了
代码如下:
#include <vector>
#include <string>
#include <cstring>
#include <cmath>
using namespace std;
class Knights
{
bool path[800][800];
int match[800];
int p[800][2];
bool visit[800];
int cnt, res;
public:
int DFS(int p)
{
int i, t;
for (i = 0; i < cnt; i++)
{
if (path[i][p] && !visit[i])
{
visit[i] = 1;
t = match[i];
match[i] = p;
if (t == -1 || DFS(t))
{
return 1;
}
match[i] = t;
}
}
return 0;
}
int makeFriendly(int N, vector <string> pos)
{
int i, j, dx, dy, add, minu;
cnt = 0;
i = N;
for (i = 0; i < pos.size(); i++)
{
for (j = 0; j < pos[i].length();)
{
p[cnt][0] = pos[i][j] - 'A';
p[cnt][1] = pos[i][j + 1] - '0';
if ((j + 2) < pos[i].length() && pos[i][j + 2] != ' ')
{
p[cnt][1] = p[cnt][1] * 10 + pos[i][j + 2] - '0';
j++;
}
j += 3;
cnt++;
}
}
memset(path, 0, sizeof(path));
for (i = 0; i < cnt; i++)
{
for (j = i + 1; j < cnt; j++)
{
dx = p[i][0] - p[j][0];
dy = p[i][1] - p[j][1];
dx = abs(dx);
dy = abs(dy);
add = dx + dy;
minu = abs(dx - dy);
if (add == 3 && minu == 1)
{
path[i][j] = path[j][i] = 1;
}
}
}
memset(match, -1, sizeof(match));
for (i = 0, res = 0; i < cnt; i++)
{
memset(visit, 0, sizeof(visit));
res += DFS(i);
}
return res / 2;
}
};
──────────────────────────────────────
发信人: Ouer (偶尔)
发信站: 武汉白云黄鹤站 (2006年05月19日03:12:41 星期五)
比赛的时候没有通过,比赛结束之后又写出来的
通过了系统测试
【 在 Ouer (偶尔) 的大作中提到: 】
∶ 题目的意思很简单,就是在一个棋盘上面放置了一些Knights,为了让它们之间不互相攻击
∶ 要拿掉一些Knights,要求最少要拿掉多少个Knights
∶ 这是一道二分图的匹配问题(黑书的第332页有介绍),但是好像有人用贪心给过了
∶ 代码如下:
∶ #include <vector>
∶ #include <string>
∶ #include <cstring>
∶ #include <cmath>
∶ using namespace std;
∶ class Knights
∶ .................(以下省略)
──────────────────────────────────────
发信人: rpmes (Sempr加油!)
发信站: 武汉白云黄鹤站 (2006年05月19日03:45:09 星期五)
hoho
【 在 Ouer (偶尔) 的大作中提到: 】
∶ 题目的意思很简单,就是在一个棋盘上面放置了一些Knights,为了让它们之间不互相攻击
∶ 要拿掉一些Knights,要求最少要拿掉多少个Knights
∶ 这是一道二分图的匹配问题(黑书的第332页有介绍),但是好像有人用贪心给过了
∶ 代码如下:
∶ #include <vector>
∶ #include <string>
∶ #include <cstring>
∶ #include <cmath>
∶ using namespace std;
∶ class Knights
∶ .................(以下省略)
──────────────────────────────────────
发信人: Fastest (Fastest)
发信站: 武汉白云黄鹤站 (2006年05月19日09:40:03 星期五)
受不了你了...
【 在 rpmes (Sempr加油!) 的大作中提到: 】
∶ hoho
∶ 【 在 Ouer (偶尔) 的大作中提到: 】
∶ : 题目的意思很简单,就是在一个棋盘上面放置了一些Knights,为了让它们之间不互相攻击
∶ : 要拿掉一些Knights,要求最少要拿掉多少个Knights
∶ : 这是一道二分图的匹配问题(黑书的第332页有介绍),但是好像有人用贪心给过了
∶ : 代码如下:
∶ : #include <vector>
∶ : #include <string>
∶ : #include <cstring>
∶ : #include <cmath>
∶ .................(以下省略)
──────────────────────────────────────
发信人: Fastest (Fastest)
发信站: 武汉白云黄鹤站 (2006年05月19日09:40:51 星期五)
max_match.....
最优匹配呢?
【 在 Ouer (偶尔) 的大作中提到: 】
∶ 题目的意思很简单,就是在一个棋盘上面放置了一些Knights,为了让它们之间不互相攻击
∶ 要拿掉一些Knights,要求最少要拿掉多少个Knights
∶ 这是一道二分图的匹配问题(黑书的第332页有介绍),但是好像有人用贪心给过了
∶ 代码如下:
∶ #include <vector>
∶ #include <string>
∶ #include <cstring>
∶ #include <cmath>
∶ using namespace std;
∶ class Knights
∶ .................(以下省略)
──────────────────────────────────────
发信人: Ouer (偶尔)
发信站: 武汉白云黄鹤站 (2006年05月19日09:59:25 星期五)
不过感觉中TopCoder的代码应该都在1K以下的...
【 在 Ouer (偶尔) 的大作中提到: 】
∶ 题目的意思很简单,就是在一个棋盘上面放置了一些Knights,为了让它们之间不互相攻击
∶ 要拿掉一些Knights,要求最少要拿掉多少个Knights
∶ 这是一道二分图的匹配问题(黑书的第332页有介绍),但是好像有人用贪心给过了
∶ 代码如下:
∶ #include <vector>
∶ #include <string>
∶ #include <cstring>
∶ #include <cmath>
∶ using namespace std;
∶ class Knights
∶ .................(以下省略)
──────────────────────────────────────
发信人: Fastest (Fastest)
发信站: 武汉白云黄鹤站 (2006年05月19日10:01:35 星期五)
这个有模板,建图了就比较快了.
【 在 Ouer (偶尔) 的大作中提到: 】
∶ 不过感觉中TopCoder的代码应该都在1K以下的...
∶ 【 在 Ouer (偶尔) 的大作中提到: 】
∶ : 题目的意思很简单,就是在一个棋盘上面放置了一些Knights,为了让它们之间不互相攻击
∶ : 要拿掉一些Knights,要求最少要拿掉多少个Knights
∶ : 这是一道二分图的匹配问题(黑书的第332页有介绍),但是好像有人用贪心给过了
∶ : 代码如下:
∶ : #include <vector>
∶ : #include <string>
∶ : #include <cstring>
∶ : #include <cmath>
∶ .................(以下省略)
──────────────────────────────────────
发信人: Ouer (偶尔)
发信站: 武汉白云黄鹤站 (2006年05月19日10:05:17 星期五)
嗯
我是自己敲出来的......
yzf建图的时候建错了,没有处理 A10这种情况,把所有的位置都当成两个字符了,结果程
序被干掉了
我是比赛结束后才过的
【 在 Fastest (Fastest) 的大作中提到: 】
∶ 这个有模板,建图了就比较快了.
∶ 【 在 Ouer (偶尔) 的大作中提到: 】
∶ : 不过感觉中TopCoder的代码应该都在1K以下的...
∶ : .................(以下省略)
──────────────────────────────────────
发信人: Fastest (Fastest)
发信站: 武汉白云黄鹤站 (2006年05月19日10:12:17 星期五)
等暑假我也半夜跟你们玩.....
这个有趣...哈哈
【 在 Ouer (偶尔) 的大作中提到: 】
∶ 嗯
∶ 我是自己敲出来的......
∶ yzf建图的时候建错了,没有处理 A10这种情况,把所有的位置都当成两个字符了,结果程
∶ 序被干掉了
∶ 我是比赛结束后才过的
∶ 【 在 Fastest (Fastest) 的大作中提到: 】
∶ : 这个有模板,建图了就比较快了.
──────────────────────────────────────
华中地区网络中心
- 【汇总】贴一下TopCoder SRM 303 DIV I 500分题的题目和...
- Topcoder srm 590 dv2 500分题目
- SRM 697 Div 2: 250分题目和500分题目代码
- TopCoder SRM 360 DIV2 500 分题目, 需要排列组合么?需要强力法么?
- TopCoder SRM 633 Div.2 500 Jumping
- Topcoder SRM 462 DIV 2
- topcoder srm 518 div 2
- topcoder srm 519 div 1
- TopCoder SRM 561 Div 2
- Topcoder SRM 565 Div.2
- Topcoder SRM 597 DIV 1
- Topcoder SRM 596 DIV 1
- Topcoder SRM 598 DIV 1
- TopCoder SRM 144 DIV 1
- Topcoder SRM 628 DIV 2
- TopCoder SRM 144 DIV 2
- TopCoder SRM 657 DIV 1
- TopCoder SRM 669 DIV 1
- 从易到难编写C++程序,(2)问题:把键盘输入的16,10,8进制数转换为2进制输出
- 开博咯~~
- Astar - 复赛 4.X博士的彩球游戏
- Astar - 复赛 5.追捕
- TC DIV I 500分题目的解答(算法:有向图的强连通)
- 【汇总】贴一下TopCoder SRM 303 DIV I 500分题的题目和...
- LEGO NXT固件源码
- 精简A*算法
- 对话框中的check消息响应以及Toolbar加载
- 浅谈TeeChart组件在ASP中的应用
- LEGO® MINDSTORMS® NXT的工作原理
- DWR 实现AJAX学习
- 我的文章再次登上CSDN首页
- 老师的小作业,一个登入和主界面