• Codeforces Round #373 (Div. 2)A B


    Codeforces Round #373 (Div. 2)

    A. Vitya in the Countryside

    这回做的好差啊,a想不到被hack的数据,b又没有想到正确的思维 = =

    【题目链接】A. Vitya in the Countryside

    【题目类型】模拟

    &题意:

    一个月30天,月亮的大小分别是上面所说的规律,求输入的下一天是变大还是变小

    &题解:
    我想的是首先n==1的时候,我想的是一定-1,但这样是错的,因为当那一个数是15或0时,那么答案就不是-1了。
    最后,只比较最后一个和倒数第二个数就好了,分4种情况。

    【时间复杂度】O(n)

    &代码:

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    #define SI(N) scanf("%d",&(N))
    #define rep(i,b) for(ll i=0;i<(b);i++)
    int n, pre, x;
    void Solve() {
    	while (~SI(n)) {
    		if (n == 1) {
    			SI(x);
    			if (x == 15) puts("DOWN");
    			else if (x == 0) puts("UP");
    			else puts("-1");
    			continue;
    		}
    		rep(i, n) {
    			pre = x;
    			SI(x);
    		}
    		if (pre < x) puts(x == 15 ? "DOWN" : "UP");
    		else puts(x != 0 ? "DOWN" : "UP");
    	}
    }
    int main() {
    	Solve();
    	return 0;
    }
    
    B. Anatoly and Cockroaches

    【题目链接】B. Anatoly and Cockroaches

    【题目类型】思维题

    &题意:
    你要弄出rb交替的字符串,对于每个给出的字符,有2中俄操作:
    1、把2个不同的位置交换。
    2、把1个位置的染成不同的颜色、

    &题解:

    标准答案一共2种,r开头和b开头,即s1和s2,就只说s1时,s2同理:
    把输入和s1比较,如果不同,要看是r还是b,之后记录不同时他们各个出现的次数,只有不同的位置才需要操作,假设r是6个b是3个,那么一定是3+3,因为要涂3个色,和交换3个。最后取最小值

    &代码:

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int INF = 0x3f3f3f3f;
    #define cle(a,val) memset(a,(val),sizeof(a))
    #define SI(N) scanf("%d",&(N))
    #define rep(i,b) for(ll i=0;i<(b);i++)
    const ll LINF = 0x3f3f3f3f3f3f3f3f;
    #define PU(x) puts(#x);
    #define PI(A) cout<<(A)<<endl;
    const int MAXN = 100000 + 5 ;
    char s1[MAXN],s2[MAXN],buf[MAXN];
    int n;
    void Solve()
    {
    	bool f=0;
    	rep(i,MAXN)
    	{
    		s1[i]=f?'r':'b';
    		f=!f;
    	}
    	f=1;
    	rep(i,MAXN)
    	{
    		s2[i]=f?'r':'b';
    		f=!f;
    	}
    	while(~SI(n)){
    		scanf("%s",buf);
    		int u=0,v=0;
    		int cr=0,cb=0;
    		rep(i,n)
    		{
    			if (s1[i]!=buf[i])
    			{
    				s1[i]=='b'?cb++:cr++;
    			}
    		}
    		u=max(cr,cb);
    		cr=0,cb=0;
    		rep(i,n)
    		{
    			if (s2[i]!=buf[i])
    			{
    				s2[i]=='b'?cb++:cr++;
    			}
    		}
    		v=max(cr,cb);
    		PI(min(u,v))
    	}
    }
    int main()
    {
    	Solve();
    	return 0;
    }
    
  • 相关阅读:
    yum---Linux软件安装与管理
    Python Cheetah01
    Python 改变字体颜色
    DenyHosts安装及配置
    Python 文件I/O
    Python 列表(List)
    Python 字符串
    Python 循环语句
    Python 条件语句
    Python 系统性能信息模块psutil
  • 原文地址:https://www.cnblogs.com/s1124yy/p/5906833.html
Copyright © 2020-2023  润新知