UESTC 1019 SSRaligun酱的魔法符文 用记忆实际区间最左min1最右max1来减小时间复

ProLightsfx 2017-7-19 154 7/19

用记忆实际区间最min1最右max1,来减小时间复杂度    但注意min1要初始化为里面可能的最大值或比最大值大一点,而max1则是最小值或比最小值小一点,这些也是要注意的吧,不小心漏掉,到时候出问题又要找bug。

       也让自己意识到了else if 重叠用的时候该注意的(程序中打★★的地方)。

SSRaligun酱的魔法符文

source

UESTC 1019

My Solution

总结出那个框框里的东西,然后就好了,反正只有0、7种情况

1可以+2、+3

2可以+3

3可以+4

4可以+5、+6

5可以+6、+2、+4

6可以+1

且L[ i ] += b+1;并且L[ i ] <= 7

具体请看下面的solve(,)函数了。
#include 
#include 
#include 
#include 
using namespace std;
const int maxn=2000+8;
int L[maxn];
int cot[9];

void solve(int i,int b)
{
    if(L[i]==0) L[i]=b;    //最开始的时候肯定是0了,所以讨论的时候这个不要漏掉
    else if(L[i]==7) ;
    else if(L[i]==6) {if(b==4||b==5||b==7||b==1) L[i]=7;}        //★★
    else if(L[i]==5) {if(b==6||b==4||b==2||b==7) L[i]=7;}        //★★
    else if(L[i]==4) {if(b==6||b==5||b==3||b==7) L[i]=7;}        //★★
    else if(L[i]==3) {if(b==4) L[i]=7;else if(b==2||b==1) L[i]+=b+1;else if(b==5||b==6||b==7) L[i]=b;}  //L[i]+=b+1
    else if(L[i]==2) {if(b==5) L[i]=7;else if(b==3||b==1) L[i]+=b+1;else if(b==4||b==6||b==7) L[i]=b;}
    else if(L[i]==1) {if(b==6) L[i]=7;else if(b==3||b==2) L[i]+=(b+1);else if(b==4||b==5||b==7) L[i]=b;}
}
int main()
{
    int T,n,m,l,r,type,min1,max1,ans,kase=0;   //关于最大值最小值的使用,要初始化对。。 及其记忆来减小复杂度
    scanf("%d",&T);
    while(T--){
        memset(L,0,sizeof(L));memset(cot,0,sizeof(cot));
        min1=n;max1=0;ans=0;                             //min1和max1的置零
        scanf("%d%d",&n,&m);
        while(m--){
            scanf("%d%d%d",&l,&r,&type);
            min1=min(min1,l);max1=max(max1,r);
            for(int i=l;i<=r;i++)
                solve(i,type);
        }
        for(int i=min1;i<=max1;i++)
            (cot[L[i]])++;//cout<<L[i]<<" ";
        for(int i=1;i<=7;i++)
               ans=max(ans,cot[i]);//cout<<cot[i]<<" ";}
        printf("Case #%d:",++kase);
        for(int i=1;i<=7;i++)
            {if(cot[i]==ans) printf(" type%d",i);}
        if(T) printf("n");
    }
    return 0;
}

 

非特殊说明,本博所有文章均为博主原创,未经许可不得转载。

https://www.prolightsfxjh.com/

Thank you!

                                                                                                                                             ------from ProLightsfx

- THE END -

ProLightsfx

11月15日12:35

最后修改:2024年11月15日
0

非特殊说明,本博所有文章均为博主原创,未经许可不得转载。

共有 0 条评论