zoukankan      html  css  js  c++  java
  • Week11 作业 ABCD

    ABC题总结:

    • 可以用geiline读取一行
    • cctype中有很多字符处理函数,比如isupper(c),判断c是不是一个字母
    string s;
    getline(cin,s);
    for(auto &c:s)
        if(isupper(c)) c=mp[c]; 
    

    D题描述:

    CodeForces - 1138A

    东东和他的女朋友(幻想的)去寿司店吃晚餐(在梦中),他发现了一个有趣的事情,这家餐厅提供的 n 个的寿司被连续的放置在桌子上 (有序),东东可以选择一段连续的寿司来吃

    东东想吃鳗鱼,但是东妹想吃金枪鱼。核 平 起 见,他们想选择一段连续的寿司(这段寿司必须满足金枪鱼的数量等于鳗鱼的数量,且前一半全是一种,后一半全是另外一种)我们用1代表鳗鱼,2代表金枪鱼。

    比如,[2,2,2,1,1,1]这段序列是合法的,[1,2,1,2,1,2]是非法的。因为它不满足第二个要求。

    东东希望你能帮助他找到最长的一段合法寿司,以便自己能吃饱。

    D题思路:

    因为序列都是12交替,所以把序列抽象成整数交替即可(把连续的一段1看成一个整数),比如 111221222111可以抽象成3 2 1 3 3,然后处理相邻的每一对数,最后取max即可

    D题代码:

    #include <cstdio>
    #include <iostream>
    using namespace std;
    const int MAXN=1e5+5;	
    int seg[MAXN];
    int main()
    {
    	int N; cin>>N;
    	int last=0,tot=0;
    	for(int i=1;i<=N;i++)
    	{
    		int t; scanf("%d",&t);
    		if(t==last) seg[tot]++;
    		else tot++,seg[tot]=1,last=t;
    	}
    	int ans=0;
    	for(int i=2;i<=tot;i++)
    		ans=max(ans,(seg[i]<=seg[i-1]) ? (seg[i]*2) : (seg[i-1]*2));
    	
    	cout<<ans<<endl;
    	return 0;
    }
    

      

  • 相关阅读:
    python 去重
    怎样稳稳获得年化高收益
    module_loader.py
    mac上安装ta-lib
    mac上安装memcache
    创建widget
    smartsvn 用法
    用nifi executescript 生成3小时间隔字符串
    TclError: no display name and no $DISPLAY environment variable
    【C#】详解C#序列化
  • 原文地址:https://www.cnblogs.com/qingoba/p/12924139.html
Copyright © 2011-2022 走看看