zoukankan      html  css  js  c++  java
  • USACO1.1 Broken Necklace

    很简单的模拟题,但是noip的奶酪20分后我觉得模拟题也是需要认真考量的。

    写这题的时候,我的目标是一次A过,想了一些些特殊情况,真的找出了bug。

    一个字符串(3<=长度<=350),选择两个字符中间的位置作为起点,向左右分别计数相同字符的个数,左右累加为答案。求最大答案。

    共3种字符,其中'w'可表示任意字符。

    本题,一定有解,且最小解为2.

    #include<iostream>
    using namespace std;
    
    char x[400];
    int n,ans;
    
    void fix(int &x)
    {
    	if(x==-1)
    		x=n-1;
    	else if(x==n)
    		x=0;
    }
    
    void sch(int l)
    {
    	int r=l+1;fix(r);
    	char lc=x[l],rc=x[r];
    	int cnt=0;
    	while(lc=='w' or x[l]==lc or x[l]=='w')
    	{	
    		if(cnt==n)
    			break;
    		cnt++,
    		lc=(lc=='w'?x[l]:lc),
    		l--,fix(l);
    	}
    	while(rc=='w' or x[r]==rc or x[r]=='w')
    	{	
    		if(cnt==n)
    			break;
    		cnt++,
    		rc=(rc=='w'?x[r]:rc),
    		r++,fix(r);
    	}
    	ans=max(ans,cnt);
    }
    
    int main()
    {
    	ios::sync_with_stdio(0);
    	cin>>n;
    	for(int i=0;i<n;i++)
    		cin>>x[i];
    	for(int i=0;i<n;i++)
    		sch(i);
    	cout<<ans;
    	return 0;
    }
    

    特殊情况

    字符串全是'w'。答案为n,需要特判退出。

    交第一次就过啦,加上之前写的,uasco1已经写完。

  • 相关阅读:
    Java中运算符“|”和“||”以及“&”和“&&”区别
    idataway_前端
    web前端名人的博客微博Githu
    css动效库animate.css和swiper.js
    elementUI和iview兼容么
    calc
    多年未写过java了
    ajax
    commonjs
    优秀的移动端设计
  • 原文地址:https://www.cnblogs.com/syhien/p/8092675.html
Copyright © 2011-2022 走看看