码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces Round #516 (Div. 1, by Moscow Team Olympiad) E

时间:2018-10-28 22:07:32      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:ORC   team   targe   namespace   mos   .com   tar   utc   ++   

Description

  给一个排列,要求每个激光打到指定的接受器上,最大化这个数量,你的手段只有在n*n的位置上放平面镜。

Sol

  我们发现一行要么只放‘/’要么只放‘\’,又发现answer=n||answer=n-1,这可以倒着合并。

Description

 

#include<bits/stdc++.h>
#define N 1006
using namespace std;
int n,a[N],last;
char ans[N][N];
signed main () {
    scanf("%d",&n);
    for (int i=1;i<=n;i++) {
     scanf("%d",a+i); 
     if (a[i]!=i) last=i; }
    if (last) {
        char x=/, y=\\;
        for(int i=n;i;--i){
            int p=0;
            if(x==/){for(int j=1;j<last;++j) if(a[j]!=j){ p=j; break;} }
            else for(int j=n;j>last;--j) if(a[j]!=j){ p=j; break;}
            if(!p) break;
            ans[i][p]=ans[i][last]=ans[i][a[p]]=x;
            a[last]=a[a[p]], a[a[p]]=a[p], last=p;
            swap(x,y);
            cerr<<last<<endl;
        }
    }
    printf("%d\n",n-(!!last));
    for(int i=1; i<=n; ++i, puts("")) for(int j=1; j<=n; ++j) putchar(ans[i][j]?ans[i][j]:.);
}

 

Codeforces Round #516 (Div. 1, by Moscow Team Olympiad) E

标签:ORC   team   targe   namespace   mos   .com   tar   utc   ++   

原文地址:https://www.cnblogs.com/rrsb/p/9807297.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!