codeforce 69D

原创 2016年08月29日 12:14:15
#include<iostream>
#include<vector>
#include<math.h>
#include<algorithm>

//输入保证初始点到原点距离小于d,判断的是移动点到原点的距离(不是初始点)

//将所有向量先排序(从大到小),然后依次取出,若所有选择都失败,则跳出
//如果当时是A赢,那么A赢,如果是B赢,那么进入A的下一个选择,A有N次机会

using namespace std;

struct Point
{
    int x, y;
    Point();
    Point(int x1, int y1): x(x1), y(y1) {}

};

vector<Point> dir;

int xo, yo, n, d;

bool lessmark(const Point & stItem1, const Point & stItem2)
{
    return pow(abs(stItem1.x - xo), 2) + pow(abs(stItem1.y - yo), 2) < pow(abs(stItem2.x - xo), 2) + pow(abs(stItem2.y - yo), 2);
}


bool greatermark(const Point & stItem1, const Point & stItem2)
{
    return pow(abs(stItem1.x), 2) + pow(abs(stItem1.y), 2) > pow(abs(stItem2.x), 2) + pow(abs(stItem2.y), 2);
}


bool dis(int x, int y)
{

    if(pow(x, 2) + pow(y, 2) <= d * d)
    {
        return true;
    }

    return false;
}



int main()
{

    cin >> xo >> yo >> n >> d;

    Point m(0, 0);


    for(int i = 0; i < n; i++)
    {

        cin >> m.x >> m.y;

        dir.push_back(m);

    }

//    sort(dir.begin(),dir.end(),lessmark);
    sort(dir.begin(), dir.end(), greatermark); //big->small

    int no = 1;

    int rec = 0;

    if(!dis(dir[n-1].x + xo, dir[n-1].y + yo))
    {
        cout << "Dasha" << endl;
        return 0;
    }




    for(int k = 0; k < n; k++)
    {


    Point cur(xo+dir[k].x, yo+dir[k].y);

    no = 1;
    rec = 0;


        for(int i = 0; ;)
        {

            if(i == dir.size())
            {
                i = 0;
            }

            if(dis(cur.x + dir[i].x , cur.y + dir[i].y))
            {

                no++;
                rec = 0;

                cur.x += dir[i].x;
                cur.y += dir[i].y;

                i = 0;

            }
            else
            {

                i++;
                rec++;

                if(rec == n)

                {
                    break;
                }

            }


        }

        if(no%2!=0){
            cout<<"Anton"<<endl;
            return 0;
        }

    }


        cout << "Dasha" << endl;




    return 0;

}

想通后可以用DFS做,这样比较不水

版权声明:本文为博主原创文章,未经博主允许不得转载。

codeforce(找规律的简单题)

D. Prizes, Prizes, more Prizes time limit per test 2 seconds memory limit per test 256 megabytes...
  • ACMer_hades
  • ACMer_hades
  • 2015年04月22日 21:00
  • 868

【Codeforces 609E】【Stree】【最小生成树】

题目大意给出n个点,m条有权边,现对于每一条边,你需要回答出包含这条边的最小生成树的总边权值。题解一个显然的结论,无论怎么样,生成树与最小生成树不同的边最多为一条。求出最小生成树,枚举加入哪条边,用倍...
  • chunkitlau
  • chunkitlau
  • 2016年07月12日 15:24
  • 212

CodeForces 149D 括号染色问题 dp+dfs好题

题意:给出一串已经匹配好的括号,现在要给它们上色,每个括号可以选择蓝色,红色,不上色三种情况,但是相邻的括号颜色不能相同,(可以同无色),每一对匹配的括号都有且仅有一个括号染色。 这题想了n久,今天做...
  • hcbbt
  • hcbbt
  • 2013年12月12日 20:36
  • 2605

Codeforce 85E (二分答案+二分图染色)

这题先处理出两个塔之间的距离保存在邻接矩阵里,然后二分答案,看看边权大于二分出的答案的边组成的图是不是二分图,是的话上界等于二分出的答案,否则下界等于二分出的答案,最后答案保存在上界里。然后算出边权答...
  • fts2001
  • fts2001
  • 2015年02月11日 11:06
  • 254

codeforces95C 最短路套最短路

题目链接:http://codeforces.com/problemset/problem/95/C 题目大意:城市里面有n个交叉路口,m条路,每条无向有长度,每个交叉路口都有一个出租车司机等待,出租...
  • qq_24477135
  • qq_24477135
  • 2016年06月02日 10:53
  • 360

codeforce 899E(线段树/链表+优先队列)

这题做完之后整场比赛就AK了(虽然是赛后),感觉赛后得把题全做了比赛才会更有意义撒。。 找最大重复序列并依次删除。。在汪聚聚的提醒下才发现其实用线段树就能实现啊。。orz 维护的东西有点多,实现起来的...
  • qkoqhh
  • qkoqhh
  • 2017年12月21日 23:48
  • 25

codeforce 796 c Bank Hacking (思维题,分类讨论)

Although Inzane successfully found his beloved bone, Zane, his owner, has yet to return. To search f...
  • h1021456873
  • h1021456873
  • 2017年04月15日 11:03
  • 346

codeforce比赛规则介绍(转)

Codeforces 简称: cf(所以谈论cf的时候经常被误会成TX的那款游戏). 网址: codeforces.com   这是一个俄国的算法竞赛网站,由来自萨拉托夫州立大学、由Mike Mirz...
  • qq_31736627
  • qq_31736627
  • 2016年09月24日 10:23
  • 598

codeforces 113 B Petr# (一道用了函数就会的题)

strncmp strncmp函数是指定比较size个字符。也就是说,如果字符串s1与s2的前size个字符相同,函数返回值为0。此函数功能即比较字符串str1和str2的前maxlen个字符。如果前...
  • u013076044
  • u013076044
  • 2015年01月04日 22:09
  • 622

【Codeforces Round 330 (Div 2)C】【博弈 贪心 脑洞】n个数AB轮流选到只剩俩,A希望差小B希望差大问最后差值

Warrior and Archer time limit per test2 seconds memory limit per test256 megabytes inputstandard inp...
  • snowy_smile
  • snowy_smile
  • 2015年12月03日 13:49
  • 823
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:codeforce 69D
举报原因:
原因补充:

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