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已经写完。

  • 相关阅读:
    Domain Logic approaches
    Comparing Spring AOP and AspectJ
    CDI Features
    Java Design Patterns
    第二阶段:代码片段
    第一阶段:学生在线系统需求分析报告
    load data语句实验报告
    Sping AOP Capabilities and Goals
    Java Design Patterns
    CDI Features
  • 原文地址:https://www.cnblogs.com/syhien/p/8092675.html
Copyright © 2011-2022 走看看