【题解】codeforces293A[AHSOFNU codeforces训练赛2 by hzwer]C.Weird Game 博弈论

本文分析了Yaroslav和Andrey在Roman缺席时玩的博弈游戏。游戏涉及两个由二进制字符组成的字符串,玩家按顺序选择未使用的字符,目标是构建最大的整数。通过最优策略,可以确定游戏的胜负情况。文章提供了输入输出示例,并解释了如何根据字符串内容判断游戏结果。

题目链接

Description

Yaroslav, Andrey and Roman can play cubes for hours and hours. But the game is for three, so when Roman doesn’t show up, Yaroslav and Andrey play another game.

Roman leaves a word for each of them. Each word consists of 2·n binary characters “0” or “1”. After that the players start moving in turns. Yaroslav moves first. During a move, a player must choose an integer from 1 to 2·n, which hasn’t been chosen by anybody up to that moment. Then the player takes a piece of paper and writes out the corresponding character from his string.

Let’s represent Yaroslav’s word as s = s1s2… s2n. Similarly, let’s represent Andrey’s word as t = t1t2… t2n. Then, if Yaroslav choose number k during his move, then he is going to write out character sk on the piece of paper. Similarly, if Andrey choose number r during his move, then he is going to write out character tr on the piece of paper.

The game finishes when no player can make a move. After the game is over, Yaroslav makes some integer from the characters written on his piece of paper (Yaroslav can arrange these characters as he wants). Andrey does the same. The resulting numbers can contain leading zeroes. The person with the largest number wins. If the numbers are equal, the game ends with a draw.

You are given two strings s and t. Determine the outcome of the game provided that Yaroslav and Andrey play optimally well.

Input

The first line contains integer n (1 ≤ n ≤ 106). The second line contains string s — Yaroslav’s word. The third line contains string t — Andrey’s word.

It is guaranteed that both words consist of 2·n characters “0” and “1”.

Output

Print “First”, if both players play optimally well and Yaroslav wins. If Andrey wins, print “Second” and if the game ends with a draw, print “Draw”. Print the words without the quotes.

Examples

Input

2
0111
0001

Output

First

Input

3
110110
001001

Output

First

Input

3
111000
000111

Output

Draw

Input

4
01010110
00101101

Output

First

Input

4
01100000
10010011

Output

Second


优先选择双方都为1的,次选己方为1,次选对方为1。

#include<cstdio>
#include<iostream>
using namespace std;
string s,t;
int n,cnts,cntt,cntd;
int main()
{
	//freopen("in.txt","r",stdin);
    cin>>n;n*=2;
    cin>>s>>t;
    for(int i=0;i<n;i++)
    {
    	if(s[i]=='1'&&t[i]=='1')cntd++;
    	else if(s[i]=='1')cnts++;
    	else if(t[i]=='1')cntt++;
	}
	cntd%=2;cnts+=cntd;if(cnts+1==cntt)cntt--;
	if(cnts>cntt)puts("First");
	else if(cnts<cntt)puts("Second");
	else puts("Draw");
	return 0;
}

总结

博弈论初步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值