zoukankan      html  css  js  c++  java
  • 579Div3

    自闭总结

    (A)

    这样的傻逼题我竟然调了一个小时。。。

    (B)

    我竟然傻逼的枚举面积,不就是最大的乘最小的么。
    (NO)的情况:
    (令(s)等于面积)

    (1.) (s)(val[i])除不尽。
    (2.)可以组成正方形的棍条数不一样
    (3.)没有可以与当前棍组成正方形的棍

    (C)

    (zcy)的思路:
    处理出最小的元素的约数,判断每个约数是否是所有元素的约数。
    正解思路:
    求出所有元素的(gcd),这个(gcd)的约数就是答案。

    (D)

    处理出从左到右第一个和从右到左第一个满足条件的(t)串,记录一下每个字符出现的位置。
    然后比较一下(t)串左边,和(t)串右边,和(t)串左右接起来的答案,取最大的一个。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    const int N = 2e5+100;
    int lt[N],ls[N],rt[N],rs[N],lens,lent,ans;
    char s[N],t[N];
    int main()
    {
    	cin>>s>>t;
    	lens=strlen(s); lent=strlen(t);
    	int tot=0;
    	for(int i=0;i<lens;i++)
    	{
    		if(s[i]==t[tot])
    		{	lt[tot]=i;	++tot;}
    		if(tot>=lent) break;
    	}
    	tot=lent-1;
    	for(int i=lens-1;i>=0;i--)
    	{
    		if(s[i]==t[tot])	
    		{	rt[tot]=i;	--tot;	}
    	}
    	ans=max(rt[0],lens-lt[lent-1]-1);
    	for(int i=0;i<lent;i++)//i=0时是1个字母在左边的时候,这里WA了一发  
    	 ans=max(ans,rt[i+1]-lt[i]-1);
    	printf("%d
    ",ans);
    	return 0;
    }
    

    (E)

    贪心题,(WA)了三发才(A)
    开桶记录一下每个数出现的次数,大于3的话当成3就行了(多了也没用)。
    枚举每一个数。

    如果这个数(i)出现了一次,在(i-1\,,i\,,i+1)这三个数中变成没被标记的一个,如果有多个,变成最小的一个。(忘记把它变成(i+1)的情况,(WA)了一发)。
    如果出现两次,也是尽量变成三个数中没被标记的两个,不够两个的话有几个(ans)加几,多于两个的话,变成较小的两个。
    如果出现三次,(i-1\,,i\,,i+1)这三个数中有几个没被标记,答案就加几,然后把这三个数都标记一下。

    (F)

    先处理(b)为正的的,再处理(b)为负的的,按(a+b)的值由大到小排序。

  • 相关阅读:
    基于erlang的mud游戏引擎开发
    生成数据库所有表的查询语句
    查找表字段语句
    基础算法总结 Java 版
    ArrayList源码学习
    云服务器安装 Mysql 5.7
    n个元素进栈,共有多少种出栈顺序?
    MyBatis 学习
    Spring学习笔记之AOP
    原来你是这样的 IntegerCache
  • 原文地址:https://www.cnblogs.com/karryW/p/11414135.html
Copyright © 2011-2022 走看看