zoukankan      html  css  js  c++  java
  • Comet OJ

    比赛情况

    40 + 60 + 0 = 100pts

    哎,T1做错了,没有对拍。如果发现错误 (=>) 改正 (=>) 40->100pts,160pts (=>) 就是rk11,12了(没有那么多如果拉)。T3 看不懂题目,我菜出天际。。。然而dalao们还是轻松AK了。

    比赛总结

    这场比赛还是总体偏水,比较套路。但是我的能力应该是在160pts。

    • T1 :T1比CSPD1T1可能要难一点,有套路的。考场上看到这题我就马上联想到了双指针和dp,没有太看dp的正确性就写了dp,其实这个dp是错误的。

    • T2 :T2就是一个套路题。60pts的做法我调了好一会,100pts的做法是卢卡斯定理,没得说。

    • T3 :有许些dalao切了T3,T3应该比CSPD1T3简单得多,还好没有去钻T3,因为我连题目都看不懂。

    问题1:简单的题目做错了。

    办法:做题时脑袋要清醒,冷静分析做法,努力AC D1T1;写对拍。

    问题2:调程序调得有点急躁

    办法:冷静思考问题出在哪里。

    T1 波浪

    很像双指针计数题,我们就双指针吧。

    记录 [l,r] 一个极大区间,这个区间是波浪形的(即< >=交错出现,相邻的两个符号不等),这个区间的波浪子区间数是 (r-l)*(r-l+1)/2 等差数列求和。注意 l>n-1 了就不能走了,因为这个区间至少为2

    Talk is cheap.Show me the code.

    #include<bits/stdc++.h>
    using namespace std;
    inline int read() {
    	int x=0,f=1; char ch=getchar();
    	while(ch<'0' || ch>'9') { if(ch=='-') f=-1; ch=getchar(); }
    	while(ch>='0'&&ch<='9') { x=(x<<3)+(x<<1)+(ch^48); ch=getchar(); }
    	return x * f;
    }
    typedef long long LL;
    const int N = 3e6+7;
    int n;
    int a[N],b[N];
    int main()
    {
    	n = read();
    	for(int i=1;i<=n;++i)
    		a[i] = read();
    	for(int i=1;i<=n-1;++i) b[i] = (a[i]<=a[i+1]);
    	int l = 1, r = 0; LL ans = 0;
    	while(l<=n-1) {
    		r = l+1;
    		while(r<=n-1 && b[r-1]!=b[r]) ++r;
    		ans += (r-l)*(r-l+1)/2;
    		l = r;
    	}
    	printf("%lld
    ",ans);
    	return 0;
    }
    /*
    5
    1 2 3 2 1
    
    5
    */
    

    (其实我也是T1随手切的男人啊,柯西考场降智)

    T2 小猪佩奇跳格子

    卢卡斯 Lucas定理待补充...

    T3 小猪佩奇和仙人掌

    看不懂的题目待补充...

  • 相关阅读:
    day 38
    day 37
    day 36
    day 35
    day 34
    day 33
    day 32
    day 31
    day 30
    day 29
  • 原文地址:https://www.cnblogs.com/BaseAI/p/11961368.html
Copyright © 2011-2022 走看看