Face The Right Way 自动转身机 bzoj-1704 Usaco-2007 Mar
题目大意:不想描述题意系列++... ...题目链接
注释:略。
想法:我们直接枚举k,然后从左往右扫。
碰见的第一个亮的就把它后面的都变了
即可。
最后,附上丑陋的代码... ..
#include <cstdio> #include <cstring> int v[5001],r[5001]; char str[5]; int main() { int n,k,minm=0x7fffffff,rev,flag,m; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%s",str),v[i]=(str[0]!='F'); for(int i=1;i<=n;i++) { rev=0,flag=1,m=0; memset(r,0,sizeof r); for(int j=1;j<=n;j++) { if(v[j]^rev) { if(i+j-1>n) { flag=0; break; } r[j]^=1,r[i+j-1]^=1; m++; } rev^=r[j]; } if(flag&&minm>m) minm=m,k=i; } printf("%d %d ",k,minm); return 0; }
小结:贪心蒸的难。