zoukankan      html  css  js  c++  java
  • 2018.7.20模拟赛

    欢乐赛爆零祭
    今天上午困得要死,全程划水。。
    T1:
    同gss3.最后query的时候return 的ans2,全部翻车。样例还过了。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    int n,m;
    const int N=500005;
    struct Segtree{
    	
    	int lmx,rmx,mx,l,r,sum;Segtree(){lmx=rmx=l=r=mx=sum=0;}
    }t[N<<3];
    int rd() {
    	int x=0,f=1;char ch=getchar();
    	while(ch>'9'||ch<'0') {if(ch=='-') f=-1;ch=getchar();}
    	while(ch>='0'&&ch<='9') {x=x*10+ch-'0';ch=getchar();}
    	return x*f;
    }
    void pushup(int cur) {
    	t[cur].lmx=max(t[cur<<1].lmx,t[cur<<1].sum+t[cur<<1|1].lmx);
    	t[cur].rmx=max(t[cur<<1|1].rmx,t[cur<<1|1].sum+t[cur<<1].rmx);
    	t[cur].sum=t[cur<<1].sum+t[cur<<1|1].sum;
    	t[cur].mx=max((t[cur<<1].mx),max(t[cur<<1|1].mx,t[cur<<1].rmx+t[cur<<1|1].lmx));
    }
    void build(int l,int r,int cur) {
    	t[cur].l=l,t[cur].r=r;
    	if(l==r) {
    		t[cur].sum=t[cur].lmx=t[cur].rmx=t[cur].mx=rd();
    		return;
    	}
    	build(l,l+r>>1,cur<<1);
    	build(1+(l+r>>1),r,cur<<1|1);
    	pushup(cur);
    }
    void update(int node,int cur,int c) {
    	if(t[cur].l==t[cur].r) {t[cur].lmx=t[cur].mx=t[cur].rmx=t[cur].sum=c;return;}
    	int mid=t[cur].l+t[cur].r>>1;
    	if(node<=mid) update(node,cur<<1,c);
    	else update(node,cur<<1|1,c);
    	pushup(cur);
    }
    Segtree query(int l,int r,int cur) {
    	if(t[cur].l>=l&&t[cur].r<=r) {return t[cur];}
    	int mid=t[cur].l+t[cur].r>>1;
    	if(l>mid) return query(l,r,cur<<1|1);
    	else if(r<=mid) return query(l,r,cur<<1);
    	else {
    		Segtree ans1=query(l,r,cur<<1),ans2=query(l,r,cur<<1|1),ans3;
    		ans3.lmx=max(ans1.lmx,ans1.sum+ans2.lmx),ans3.rmx=max(ans1.rmx+ans2.sum,ans2.rmx);
    		ans3.sum=ans1.sum+ans2.sum;
    		ans3.mx=max(ans1.mx,max(ans2.mx,ans1.rmx+ans2.lmx));
    		return ans3;
    	}
    }
    int main() {
    	scanf("%d%d",&n,&m);
    	build(1,n,1);
    	int opt,x,y;
    	while(m--) {
    		opt=rd(),x=rd(),y=rd();
    		if(opt==1) 
    			printf("%d
    ",query(x,y,1).mx);
    		else if(opt==2) 
    			update(x,1,y);
    	}
    	return 0;
    }
    /*
    5 3
    1 2 
    -3 4 5
    1 2 3
    2 2 -1
    1 2 3
    */
    

    开始划水。。
    T2:
    矩阵加速递推。看错题,觉得非常不可做,开始睡觉。。。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    int n,k,f[1005];
    int ans;
    int rd() {
    	int x=0,f=1;
    	char ch=getchar();
    	while(ch>'9'||ch<'0') {
    		if(ch=='-') f=-1;
    		ch=getchar();
    	}
    	while(ch>='0'&&ch<='9') {
    		x=x*10+ch-'0';
    		ch=getchar();
    	}
    	return x*f;
    }
    const int mod=7777777;
    struct Matrix {
    	long long g[11][11];
    	Matrix () {
    		memset(g,0,sizeof g);
    	}
    	Matrix operator * (const Matrix &rhs) const {
    		Matrix ans;
    		for(int i=1; i<=k; i++) {
    			for(int j=1; j<=k; j++) {
    				for(int l=1; l<=k; l++) {
    					(ans.g[i][j]+=g[i][l]*rhs.g[l][j]%mod)%=mod;
    				}
    			}
    		}
    		return ans;
    	}
    } A,B;
    Matrix ksm(Matrix d,int z) {
    	Matrix res=d;
    	z--;
    	while(z) {
    		if(z&1) res=res*d;
    		d=d*d,z>>=1;
    	}
    	return res;
    }
    bool vis[1005];
    int main() {
    	k=rd();
    	n=rd();
    //	if(k==1) {puts("1");return 0;}
    //	if(k==2&&n==4) {puts("5");return 0;}
    	for(int i=1; i<=k; i++) A.g[1][i]=1;
    	for(int i=2;i<=k;i++) A.g[i][i-1]=1;
    	B=ksm(A,n);
    	printf("%d",B.g[1][1]);
    }
    

    T3
    考场想出正解,困得不行,划水。。。

    #include <iostream>
    #include <vector>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    int rd() {
    	int x=0,f=1;
    	char ch=getchar();
    	while(ch>'9'||ch<'0') {
    		if(ch=='-') f=-1;
    		ch=getchar();
    	}
    	while(ch>='0'&&ch<='9') {
    		x=x*10+ch-'0';
    		ch=getchar();
    	}
    	return x*f;
    }
    struct Seg {
    	int xa,xb,ya,yb;
    } t[800<<3];
    vector<long long>vx,vy;
    long long ans;
    const int dx[4]= {0,1,0,-1},dy[4]= {1,0,-1,0};
    bool cmp(Seg x,Seg y) {
    	return x.xa<y.xa;
    }
    bool g[605][605];
    void add(int pos1,int pos2,int ya,int yb) {
    	if(pos1>pos2) swap(pos1,pos2);
    	if(ya>yb) swap(ya,yb);
    	for(int i=pos1; i<=pos2; i++) {
    		for(int j=ya; j<=yb; j++) {
    			g[i][j]=1;
    		}
    	}
    }
    int n;
    int main() {
    //	freopen("olddriver.in","r",stdin);
    //	freopen("olddriver.out","w",stdout);
    	n=rd();
    //	if(n<=300) {
    //		for(int i=1,xa,ya,xb,yb; i<=n; i++) {
    //			xa=rd(),ya=rd(),xb=rd(),yb=rd();
    //			xa+=300,xb+=300,ya+=300,yb+=300;
    //			t[i].xa=xa,t[i].xb=xb,t[i].ya=ya,t[i].yb=yb;
    //			add(xa,xb-1,ya,yb-1);
    //			vx.push_back(xa),vx.push_back(xb),vy.push_back(ya),vy.push_back(yb);
    //		}
    //		int ans=0;
    //		for(int i=0; i<=600; i++) {
    //			int len=0;
    //			for(int j=0; j<=600; j++) {
    //				if(g[i][j]) len++;
    //			}
    //			ans+=(len==0?0:len);
    //		}
    //		cout<<ans;
    //		return 0;
    //	}
    	for(int i=1;i<=n;i++) {
    		t[i].xa=rd();t[i].ya=rd();t[i].xb=rd();t[i].yb=rd();
    		vx.push_back(t[i].xa),vx.push_back(t[i].xb);vy.push_back(t[i].ya);vy.push_back(t[i].yb);
    	}
    	sort(vx.begin(),vx.end());
    	sort(vy.begin(),vy.end());
    	for(int i=1;i<=n;i++) {
    		int xa=lower_bound(vx.begin(),vx.end(),t[i].xa)-vx.begin();
    		int xb=lower_bound(vx.begin(),vx.end(),t[i].xb)-vx.begin();
    		int ya=lower_bound(vy.begin(),vy.end(),t[i].ya)-vy.begin();
    		int yb=lower_bound(vy.begin(),vy.end(),t[i].yb)-vy.begin();
    		for(int j=xa;j<xb;j++) 
    			for(int k=ya;k<yb;k++) 
    				g[j][k]=1;
    	}
    	ans=0;
    	for(int i=0;i<vx.size()-1;i++) 
    		for(int j=0;j<vy.size()-1;j++) 
    			if(g[i][j]) 
    				ans+=1ll*(vx[i+1]-vx[i])*(vy[j+1]-vy[j])*1ll;
    	cout<<ans;
    
    }
    //3
    //1 1 4 3
    //2 -1 3 2
    //4 0 5 2
    
    我是咸鱼。转载博客请征得博主同意Orz
  • 相关阅读:
    分布式与集群的区别是什么?
    Java NIO:IO与NIO的区别 JAVA BIO与NIO、AIO的区别
    localStorage使用总结 JS 详解 Cookie、 LocalStorage 与 SessionStorage
    tomcat+nginx+redis实现均衡负载、session共享 存储过程的优缺点 HTTP、TCP、IP协议常见面试题
    高并发下的Java数据结构(List、Set、Map)
    [剑指offer] 31. 整数中1出现的次数(从1到n整数中1出现的次数)
    [剑指offer] 30. 连续子数组的最大和
    [剑指offer] 29. 最小的K个数
    [剑指offer] 28. 数组中出现次数超过一半的数字
    [leetcode] 51. N-Queens (递归)
  • 原文地址:https://www.cnblogs.com/sdfzhsz/p/9341526.html
Copyright © 2011-2022 走看看