USACO section1.1 Broken Necklace

 1 /*
 2 ID: vincent63
 3 LANG: C
 4 TASK: beads
 5 */
 6 #include <stdio.h>
 7 #include<stdlib.h>
 8 #include<string.h>
 9 int findmax(char s[],int n){
10     int i,j,count,max,l,r;
11     char left,right;
12     max=0;
13     count=0;
14     int p;
15     for(i=0,j=1;j<n;i++,j++){
16
17         l=i;
18         r=j;
19         while(s[l]==‘w‘){
20             l--;
21             count++;
22         }
23         while(s[r]==‘w‘){
24             r++;
25             count++;
26         }
27
28         left=s[l];
29         right=s[r];
30
31         for(;l>=0;l--){
32             if(s[l]==left||s[l]==‘w‘){
33                 count++;
34             }else{
35                 break;
36             }
37         }
38         for(;r<n;r++){
39             if(s[r]==right||s[r]==‘w‘){
40                 count++;
41             }else{
42                 break;
43             }
44         }
45         if(count>max){
46             max=count;
47             p=i;
48             //printf("%dth count:%d\n",p,count);
49         }
50         count=0;
51     }
52     if(max>n/2){
53         return n/2;
54     }else{
55         return max;
56     }
57
58 }
59 int main () {
60     FILE *fin  = fopen ("beads.in", "r");
61     FILE *fout = fopen ("beads.out", "w");
62
63     int n;
64     char buf[10];
65     char res[10];
66     fgets(buf,10,fin);
67     n=atoi(buf);
68
69     char necklace[2*n+5];
70     char buf2[n+1];
71
72     fgets(necklace,n+1,fin);
73
74     strcpy(buf2,necklace);
75
76     strcat(necklace,buf2);
77     int i;
78     /*
79     for(i=0;i<2*n;i++){
80         printf("%c",necklace[i]);
81     }
82     printf("\n");
83     */
84     int max;
85     max=findmax(necklace,2*n);
86
87     //itoa(max,res,10);
88     sprintf(res,"%d\n",max);
89     fputs(res,fout);
90     //printf("%d\n",max);
91
92     return 0;
93 }
时间: 2024-12-11 10:46:23

USACO section1.1 Broken Necklace的相关文章

USACO Section1.1PROB Broken Necklace

有点麻烦的一道模拟(官方题解好像有复杂度为$O(n)$DP的姿势?,感觉好烦,以后再细看~ 在一些细节上调试了很久很久,囧RZ /* ID: jusonal1 PROG: beads LANG: C++ */ #include <iostream> #include <fstream> #include <string> #include <cstdio> #include <algorithm> #include <map> #in

USACO Section1.1 Broken Necklace 解题报告

beads解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------------------------------------------------------------------------------------------[题目] 输入文件:第一行N:第二行一个字符串A,长度为N.字符串中,仅有r.w.b三种字符,分别代表红.白.蓝. A代表一串项链,有三种颜

Section1.1 -- Broken Necklace

Broken Necklace You have a necklace of N red, white, or blue beads (3<=N<=350) some of which are red, others blue, and others white, arranged at random. Here are two examples for n=29: 1 2 1 2 r b b r b r r b r b b b r r b r r r w r b r w w b b r r

USACO 1.1 Broken Necklace

Broken Necklace You have a necklace of N red, white, or blue beads (3<=N<=350) some of which are red, others blue, and others white, arranged at random. Here are two examples for n=29: 1 2 1 2 r b b r b r r b r b b b r r b r r r w r b r w w b b r r

USACO 1.1 Broken Necklace(USACO官方)

本题我不会写,囧,看了官方的代码,算法复杂度为O(n^2),学习下: /* ID:twd30651 PROG:beads LANG:C++ */ #include<iostream> #include<fstream> #include<string.h> using namespace std; int N; char s[400]; int len; int mod(int n,int m) { while(n<0)n+=m; return n%m;//值得学

洛谷 P1203 [USACO1.1]坏掉的项链Broken Necklace

P1203 [USACO1.1]坏掉的项链Broken Necklace 题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A 中的项链可以用下面的字符串表示: brbrrrbbbrrrrrbrrbbrbbbbrrrrb 假如你要在一些点打破项链,展开成一条直线,然后从一端开始收集同颜色的珠子直到你遇到一个不同的颜色珠子,在另一端做同样的事(颜色可能与在这之前收

P1203 [USACO1.1]坏掉的项链Broken Necklace

P1203 [USACO1.1]坏掉的项链Broken Necklace 题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A 中的项链可以用下面的字符串表示: brbrrrbbbrrrrrbrrbbrbbbbrrrrb 假如你要在一些点打破项链,展开成一条直线,然后从一端开始收集同颜色的珠子直到你遇到一个不同的颜色珠子,在另一端做同样的事(颜色可能与在这之前收

USACO Section1.4 Mother&#39;s Milk 解题报告

milk3解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------------------------------------------------------------------------------------------[题目] 有三个桶,容量分别是A.B.C,开始C桶是满的. 你可以不断将某个桶的奶倒到另一个桶里,但只允许全倒过去,或者将后者倒满,前者留下

题解 P1203 【[USACO1.1]坏掉的项链Broken Necklace】

[USACO1.1]坏掉的项链Broken Necklace 22892 破碎的项链 方法一:很容易想到枚举断点,再分别两头找,但是要注意很多细节 #include<iostream> #include<string> #include<cstdio> using namespace std; string s; int n,l,r,ll,rr,tmp,ans; inline int calc(int x) { ll=s[x],rr=s[x+1],l=x-1,r=x+2