zoukankan      html  css  js  c++  java
  • Codeforces Round #282 (Div. 2)

    也是几百年没做CF咯,这场还是赛后做的,退化很多啦

    A.Digital Counter

    找规律 可能有火柴棍丢失,问你可能组成的数字有多少种,只需要肉眼看看每个数字填上火柴棍可能形成的数字,打个表就行了

    #include <iostream>
    #include <cstdio>
    using namespace std;
    
    const int pos[] = {2, 7, 2, 3, 3, 4, 2, 5, 1, 2};
    
    int a, b;
    
    int main()
    {
    #ifdef LOCAL
        freopen("495A.in", "r", stdin);
    #endif
        a = getchar() - '0';
        b = getchar() - '0';
        printf("%d
    ", pos[a]*pos[b]);
        return 0;
    }

    B. Modular Equations

    一开始没读懂题意,还以为是同余...就是

    a / x = y ... b  给你a,b让你求x的可能个数

    因为b是余数,所以需要满足0<=b<x

    和素数只需要检查到sqrt(x)差不多,这里只需要枚举到sqrt(a-b)

    这个复杂度还是能接受的O(sqrt(a-b))

    一开始很傻逼,从sqrt(a-b)枚举到a-b...瞬间爆炸...TLE

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cmath>
    using namespace std;
    
    const int MAXN = 1e5;
    int a, b, cnt;
    int pcnt[MAXN];
    bool prime[MAXN];
    
    int main()
    {
    #ifdef LOCAL
        freopen("495B.in", "r", stdin);
    #endif
        scanf("%d%d", &a, &b);
        if(a < b)    printf("0
    ");
        else if(a == b)    printf("infinity
    "); 
        else { 
            a -= b;
            for(int i = 1, t = sqrt(a); i <= t; i++) {
                if(a % i)    continue;
                int x = i, y = a/i;
                if(x > b)    cnt++;
                if(y > b)    cnt++;
                if(x > b && x == y)    cnt--;
            }
            printf("%d
    ", cnt);
         }
        return 0;
    }

    C. Treasure

    感觉就是贪心了...一开始想法傻逼了,还去细分讨论很多,把自己绕进去了

    就是让前面的'#'填入1个')',最后一个填入剩下所需的')'

    再跑一边检查一下有没有那个位置会使得')'个数多余'('个数

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <queue>
    using namespace std;
    
    const int MAXN = 1e5+10;
    
    int mcnt, acnt, hpos, lpos, lh;
    int	inf[MAXN];
    char ins[MAXN];
    bool possible = true;
    queue<int> h;
    
    void noAnswer()
    {
    	printf("-1
    ");
    	exit(0);
    }
    
    int main()
    {
    #ifdef LOCAL
    	freopen("495C.in", "r", stdin);
    #endif
    	scanf("%s", ins);
    	for(int i = 0, t = strlen(ins); i < t; i++) {
    		if(ins[i] == '(')	mcnt++;
    		else if(ins[i] == ')')	mcnt--;
    		else {
    			lh = i;
    			mcnt--;
    			inf[i] = 1;
    			h.push(i);
    		}	
    	}		
    	if(mcnt < 0)	noAnswer();
    	inf[lh] += mcnt;	
    	mcnt = 0;
    	for(int i = 0, t = strlen(ins); i < t; i++) {
    		if(ins[i] == '(')	mcnt++;
    		else if(ins[i] == ')')	mcnt--;
    		else mcnt -= inf[i];
    		if(mcnt < 0)	noAnswer();	
    	}
    	while(!h.empty()) {
    		printf("%d
    ", inf[h.front()]);
    		h.pop();
    	}
    	return 0;
    }
    

     

    D.Obsessive String

    感觉CF的D题是足以制裁我了呢...KMP早就忘光了 更别说还要DP了 有空写写吧~

      ABC做下来感觉细节还是蛮多的,不知道是因为自己退化了,还是这次比赛偏细节

  • 相关阅读:
    算法-在字符串中删除特定的字符或字符串
    Linux 下的7种文件类型
    TCP/IP协议、三次握手、四次挥手
    8、VUE自定义组件
    7、VUE事件
    6、VUE指令
    Redis高级功能-1、高并发基本概述
    5、插值
    4、VUE生命周期
    3、Vue实例的属性
  • 原文地址:https://www.cnblogs.com/gemmeg/p/4170799.html
Copyright © 2011-2022 走看看