首页 > 其他分享 >能力提升综合题单-模拟,前缀和差分 题解

能力提升综合题单-模拟,前缀和差分 题解

时间:2022-11-13 16:55:20浏览次数:77  
标签:xb 题解 xa 差分 综合题 ++ int && ans

好久没有写题解了,今天回来了!!

A - 铺地毯

在luogu,享受coding的快乐

见到题以后,一道水题

直接模拟二位数组。。。

《真·ACcode》:

点击查看代码
#include<bits/stdc++.h>
using namespace std;

const int maxn=100001;

int p[10001][10001]={-1};
int n;
int a[maxn],b[maxn],g[maxn],k[maxn];
int x,y;

int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i]>>b[i]>>g[i]>>k[i]; 
	}
	cin>>x>>y;
	for(int i=1;i<=n;i++){
		for(int j=a[i];j<=a[i]+g[i];i++){
			for(int l=b[i];l<=b[i]+k[i];l++){
				p[j][l]=i;
			}
		}
	}
	cout<<p[x][y];
	
	return 0;
} 

然而

AC记录

之前还有过Run Excellently

范围是 10^5...

后来

发现矩阵中大部分空间都被浪费掉了

另外一种方法是用四个数组来记录矩形的四个参数,再扫一遍数组,通过检查坐标 (x,y) 是否在Rect[i]矩形内,更新最上面的地毯。

ACcode:

点击查看代码
#include<bits/stdc++.h>
using namespace std;

const int MAXN=10005;
int a[MAXN], b[MAXN], g[MAXN], k[MAXN];

int main(){
    int n,x,y;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a[i]>>b[i]>>g[i]>>k[i];
    }
    cin>>x>>y;
    int ans=-1;
    for(int i=0;i<n;i++){
        if(x>=a[i]&&y>=b[i]&&x<=a[i]+g[i]&&y<=b[i]+k[i]){
            ans=i+1;
        }
    }
    
    cout<<ans;
    
    return 0;
}

C - 生活大爆炸版石头剪刀布

在洛谷,享受coding的快乐

没什么难的,水题

点击查看代码
#include<bits/stdc++.h>
using namespace std;

int n,na,nb,x,y,xa[201],xb[201],i,j,a,ans,bns;

int main(){
    cin>>n>>na>>nb;
    for(i=1;i<=na;i++){
        cin>>x;
        xa[i]=x;
    }
    for(j=1;j<=nb;j++){
        cin>>y;
        xb[j]=y;
    }
    ans=0;
    bns=0;
    i=0;
    j=0;
    for(a=1;a<=n;a++){
        i++;
        j++;
        if(i>na)i=1;
        if(j>nb)j=1;
        if(xa[i]==0&&xb[j]==1)bns++;
        if(xa[i]==0&&xb[j]==2)ans++;
        if(xa[i]==0&&xb[j]==3)ans++;
        if(xa[i]==0&&xb[j]==4)bns++;
        if(xa[i]==1&&xb[j]==0)ans++;
        if(xa[i]==1&&xb[j]==2)bns++;
        if(xa[i]==1&&xb[j]==3)ans++;
        if(xa[i]==1&&xb[j]==4)bns++;
        if(xa[i]==2&&xb[j]==0)bns++;
        if(xa[i]==2&&xb[j]==1)ans++;
        if(xa[i]==2&&xb[j]==3)bns++;
        if(xa[i]==2&&xb[j]==4)ans++;
        if(xa[i]==3&&xb[j]==0)bns++;
        if(xa[i]==3&&xb[j]==1)bns++;
        if(xa[i]==3&&xb[j]==2)ans++;
        if(xa[i]==3&&xb[j]==4)ans++;
        if(xa[i]==4&&xb[j]==0)ans++;
        if(xa[i]==4&&xb[j]==1)ans++;
        if(xa[i]==4&&xb[j]==2)bns++;
        if(xa[i]==4&&xb[j]==3)bns++;
        }
        cout<<ans<<" "<<bns;
        
        return 0;
}

持续更新。。。

标签:xb,题解,xa,差分,综合题,++,int,&&,ans
From: https://www.cnblogs.com/qjc0714/p/16886287.html

相关文章

  • CF1746D题解
    很好的一道贪心题。首先对于每条路径,由于要最大化权值,每条路径肯定要延伸到叶子节点。切入点肯定在\(|c_u-c_v|\leq1\),也就是说由节点\(i\)延伸下去的路径要均匀分配......
  • [CEOI2016] kangaroo题解
    P5999[CEOI2016]kangaroo一类插入式的dp。对于这道题,我们得先做出一个转化,依次考虑每个数插到哪个位置,于是变成了求\(1\)~\(n\)的排列同时满足每个位置上的元素要么......
  • P1858 多人背包 题解
    本题解灵感来源于题解P1858【多人背包】sto顾zorz本篇题解仅仅是对该题解的解释和说明。主要对原题解的解析部分加以补充:该文章中刷表的地方,是通过两个值去更新新......
  • 【题解】CSP-S2022 T2策略游戏
    简要题意有两串数A[1 n],B[1 m]A[1 n],B[1 m],有两个人小L和小QL和小Q,给出q组l1,r1,l2,r2q组l1,r1,l2,r2,对于每组,小L在A[l1 r1]A[l1 r1]中取一数x,小Q在B[l2 r2]B[l2......
  • Codeforces Round #833 (Div. 2) A-C题解
    比赛链接A、手摸不难发现,能做出的正方形大小就是当前的最大长度。所以直接输出向上取整即可。点击查看代码#include<bits/stdc++.h>usingnamespacestd;#defineN......
  • CSP-J2022题解
    CSP-J2022题解T1乘方思路非常简单,直接for循环上就行了。为什么不会炸呢?因为就算a=1e9,乘两次也炸不了longlong。代码#include<cstdio>longlonga,n,ans=1;intmai......
  • 2022/11/12 模拟测题解
    2022/11/12模拟测题解A考场上推了一下,发现这个玩意挺有意思。一共有\((n+1)(m+1)\)个字符串,减去相同的个数,即可。这个相同的个数还是很好统计的,且这里指的相同仅仅是......
  • ACM-ICPC World Finals 2022 L Where Am I? 题解
    题目链接我们要干的事情其实是对于输入矩阵中的每个位置,求出从它开始至少走几步形成的序列能跟所有位置走同样步数形成的序列不同。注意到每个位置至少走\(200^2\)步就能......
  • ACM-ICPC World Finals 2022 L Where Am I? 题解
    题目链接我们要干的事情其实是对于输入矩阵中的每个位置,求出从它开始至少走几步形成的序列能跟所有位置走同样步数形成的序列不同。注意到每个位置至少走\(200^2\)步就能......
  • 题解 AGC036D【Negative Cycle】
    problem(fromluogu)有一个\(N\)个点的有向图,节点标号为\(0\sim(N-1)\)。这张图初始时只有\(N-1\)条边,每条边从\(i\)指向\(i+1\),边权为\(0\)。对于每一......