zoukankan      html  css  js  c++  java
  • cdqz2017-test11-占卜的准备

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    
    using namespace std;
    
    #define N 201
    
    pair<int,int>p[N];
    char s[N];
    
    int ans[N],cnt;
    
    bool vis[N];
    
    int start;
    int tmp[N];
    
    void read(int &x)
    {
        x=0; char c=getchar();
        while(!isdigit(c)) c=getchar();
        while(isdigit(c)) { x=x*10+c-'0'; c=getchar(); } 
    }
    
    pair<int,int> operator - (pair<int,int> a,pair<int,int> b) { return make_pair(a.first-b.first,a.second-b.second); }
    
    int Cross(pair<int,int> a,pair<int,int> b) { return a.first*b.second-a.second*b.first; }
    
    bool cmp(int a,int b)
    {
        return Cross(p[a]-p[start],p[b]-p[start])>0;
    }
    
    int main()
    {
        freopen("divination.in","r",stdin);
        freopen("divination.out","w",stdout);
        int n;
        read(n);
        for(int i=1;i<=n;++i) read(p[i].first),read(p[i].second);
        scanf("%s",s+1);
        start=1;
        for(int i=2;i<=n;++i) 
            if(p[i]<p[start]) start=i;
        ans[++cnt]=start; 
        vis[start]=true;
        int m;
        for(int i=1;i<=n-2;++i)
        {
            m=0;
            for(int j=1;j<=n;++j)
                if(!vis[j]) tmp[++m]=j; 
            sort(tmp+1,tmp+m+1,cmp);
            if(s[i]=='L') start=tmp[1];
            else start=tmp[m];
            ans[++cnt]=start;
            vis[start]=true;
        }
        for(int i=1;i<n;++i) printf("%d ",ans[i]);
        for(int i=1;i<=n;++i) if(!vis[i]) printf("%d",i);
    }
  • 相关阅读:
    About Me
    洛谷 P2633 Count on a tree
    【题解】牛客编程巅峰赛S1赛季第1场
    洛谷 P4132 [BJOI2012]算不出的等式
    洛谷 P5970 [POI2016]Nim z utrudnieniem
    DP没入门就入土
    洛谷 P4042 [AHOI2014/JSOI2014]骑士游戏
    洛谷 P3592 [POI2015]MYJ
    51Nod 1683 最短路
    51Nod 1327 棋盘游戏
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/8710375.html
Copyright © 2011-2022 走看看