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

洛谷P2882 [USACO07MAR]面对正确的方式Face The Right Way

时间:2018-02-22 13:38:07      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:its   efi   can   oid   clu   getc   write   usaco   lin   

 

 

 1 #include <bits/stdc++.h>
 2 #define For(i, j, k) for(int i=j; i<=k; i++)
 3 #define Dow(i, j, k) for(int i=j; i>=k; i--)
 4 #define LL long long
 5 using namespace std;
 6 inline int read() {
 7     int x = 0, f = 1;
 8     char ch = getchar();
 9     while(ch<0||ch>9) { if(ch==-) f = -1; ch = getchar(); }
10     while(ch>=0&&ch<=9) { x = x*10+ch-48; ch = getchar(); }
11     return x * f;
12 }
13 void write(int x) {
14     if(x<0) putchar(-), x = -x;
15     if(x>9) write(x/10);
16     putchar(x%10+48);
17 }
18 inline void writeln(int x) { write(x); putchar(\n); }
19 
20 const int N = 5011;
21 int n, ans, KK; 
22 int a[N], f[N]; 
23 
24 int main() {
25     n = read(); 
26     For(i, 1, n) {
27         char ch[5]; 
28         scanf("%s", ch+1); 
29         if(ch[1]==B) a[i] = 1; 
30     }
31     
32     ans = 1e9; 
33     For(K, 1, n) {
34         int t = 0, ok = 1, sum = 0; 
35         For(i, 1, n) f[i] = 0;  
36         For(i, 1, n-K+1) {
37             if( (a[i]+t)%2==1 ) {
38                 ++f[i+K-1]; 
39                 ++t; 
40                 ++sum; 
41             }
42             t -= f[i]; 
43             f[i] = 0; 
44         }
45         For(i, n-K+2, n) {
46             if( (a[i]+t)%2==1 ) {
47                 ok = 0; 
48                 break; 
49             }
50             t -= f[i]; 
51             f[i] = 0; 
52         }
53         if(ok && sum<ans) {
54             KK = K; 
55             ans = sum; 
56         }
57     }
58     printf("%d %d\n", KK, ans); 
59 }

 

洛谷P2882 [USACO07MAR]面对正确的方式Face The Right Way

标签:its   efi   can   oid   clu   getc   write   usaco   lin   

原文地址:https://www.cnblogs.com/third2333/p/8458177.html

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