好久没有写题解了,今天回来了!!
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