zoukankan      html  css  js  c++  java
  • 1.28 noip t1难度模拟赛

    1 0pts

    2 10pts

    3 100pts

    本想装个逼,从后面开始做,确实t3第一个AC,获得了紫色high light,BUT,第二题自己造的极端数据都过了,结果上讲台看,0分!!怎么可能?!检查了一下精度问题,没毛病啊,在最后两分钟发现我把题读错了……我以为必须要是升序的数列……被坑惨了,两分钟改了一下,得了10pts呵呵.t1没时间调了,死循环


    t1迷宫

    注意用dp做啊!dfs会爆,bfs懒得写……

    #include <bits/stdc++.h>
    #define rep(i,a,b) for(int i=a;i<=b;i++)
    using namespace std;
    const int N=30;
    int mapp[N][N];
    int f[N*N][N][N];
    int dx[]={0,0,1,-1};
    int dy[]={1,-1,0,0};
    int n,ex,ey,sx,sy;
    
    void readdata()
    {
        char c;
        scanf("%d
    ",&n);
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                scanf("%c",&c);
                if(c!='X')mapp[i][j]=1;
                if(c=='X')mapp[i][j]=0;
                if(c=='S'){sx=i;sy=j;}
                if(c=='E'){ex=i;ey=j;}
            }   
            scanf("
    ");
        }
    }
     
    void work()
    {
        f[0][sx][sy]=1;
        rep(t,1,n*n)
        	rep(i,1,n)
        		rep(j,1,n)
                	if(mapp[i][j])
                    {
                        for(int k=0;k<4;k++)
                        {
                            int nx=i+dx[k],ny=j+dy[k];
                            if(mapp[nx][ny] && nx>=1 && ny>=1 && nx<=n && ny<=n)
                            {
                                f[t][i][j]=f[t][i][j]+f[t-1][nx][ny];
                            }
                        }
                    }
    				 
        rep(t,1,n*n)
            if(f[t][ex][ey])
            {
                printf("%d
    %d",t,f[t][ex][ey]);
                break;
            }
    }
     
    int main()
    {
        readdata();
        work();
        return 0;
    }
    

    t2 最大数列


    前缀和这波操作是真的不懂……(这是wolf gang的代码)

    #include<bits/stdc++.h>
    using namespace std;
    #define N 100010
    #define inf 0x3f3f3f3f
    
    int n,a[N],f[N],h[N],t[N];
    
    int read()
    {
        int x=0,f=1;char c=getchar();
        while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
        while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
        return x*f;
    }
     
    int main()
    {
        n=read();
    	
    	t[n+1]=h[0]=0;
    	
        for(int i=1;i<=n;i++)
        {
            a[i]=read();
            h[i]=h[i-1]+a[i];//前缀 
        }
        
        for(int i=n;i>0;i--)
        	t[i]=t[i+1]+a[i];//后缀
        	
        int mi=0;f[0]=-inf;
        
        for(int i=1;i<=n;i++)//求左区间
        {
            f[i]=h[i]-mi;
            f[i]=max(f[i],f[i-1]);
            mi=min(mi,h[i]);
        }
        int ma=-inf,ans=-inf;mi=0;
        
    	for(int i=n;i>=2;i--)
        {
            ma=max(ma,t[i]-mi);
            ans=max(ans,ma+f[i-1]);//加答案 
            mi=min(t[i],mi);
        }
        printf("%d",ans);
        return 0;
    }
    

    T3 安装服务器

    1.感觉这题比前两题简单啊但我还是调了接近一个小时

    2.刘汝佳,蓝书,第六页,打钱,有一个棒棒的证明

    3.算法:带权中位数(模版提难度吧)

    #include <bits/stdc++.h>
    #define rep(i,a,b) for(int i=a;i<=b;i++)
    #define N 100010
    using namespace std;
    
    int T,quan,xx,yy,cnt=0;
    
    int read()
    {
        int x=0,f=1;char c=getchar();
        while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
        while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
        return x*f;
    }
    
    struct city{ 
    	int x,y,v; //v:k*p
    }C[N];
    
    bool cmpx(city a,city b){return a.x<b.x;}
    bool cmpy(city a,city b){return a.y<b.y;}
    
    int main()
    {
    	//freopen("read.txt","r",stdin);
    	T=read();
    	
    	rep(i,1,T)
    	{
    		int x,y,p,k;
    		x=read(),y=read(),k=read(),p=read();
    		C[i]=(city){x,y,k*p};
    		quan+=k*p;
    	}
    	
    	
    	sort(C+1,C+T+1,cmpx);
    	quan=(quan+1)>>1;
    	
    	rep(i,1,T)
    	{
    		cnt+=C[i].v;
    		
    		if(cnt>=quan)
    		{
    			xx=C[i].x;
    			break;
    		}
    	}
    	
    	sort(C+1,C+T+1,cmpy);
    	
    	cnt=0;
    	rep(i,1,T)
    	{
    		cnt+=C[i].v;
    		
    		if(cnt>=quan)
    		{
    			yy=C[i].y;
    			break;
    		}
    	}
    	
    	printf("%d %d",xx,yy);
    	return 0;
    }
    
  • 相关阅读:
    mysql总结
    git总结
    转:如何判断一家公司的好坏
    路越走越窄,尤其做技术的
    百度面试总结
    背叛
    which和whereis 命令
    bzoj3263 陌上花开 CDQ模板
    bzoj 2653middle
    暑假第十九测
  • 原文地址:https://www.cnblogs.com/sjsjsj-minus-Si/p/11635629.html
Copyright © 2011-2022 走看看