弱鸡记录一道模拟题
admin
2024-03-13 06:55:15

前言:
这不能算是题解,只是日记+笔记而已
如果您想看正经规范的题解,请移步
题解
最近女赛寄了,并不是因为队员的原因,因为疫情??
我们组没能凑齐最终上场的队员,最后相当于是两个菜鸡上的,我+另外一个已经保研的学姐,这种组合让我成功输掉了比赛,不然总归是能拿个银??
唉,算了不想了
从最基础的开始做吧
真的在比赛的时候就有个怪圈,平时又是练习图论,又是练习数学,最后上场跟榜走的时候竟然只能从模拟这种题(就比较水的开始写起)偏偏还不太擅长做这种题,(平时都不练啊,就很奇怪
所以今天来练练
果然就寄了hh
P1003 [NOIP2011 提高组] 铺地毯
这道题之前做过,之前过的时候数据量没有这么大然后那次比较那啥,用的线段树过的,之后也没看题解,自己当时应该是做麻烦了,毕竟只是一道简单题hh
如果是线段树的话,说一下思路,线段树也是需要使用二维的线段树的,也就是使用二维数组,不能用两个一维数组组在一起,不然的话比如说更新同一段x的不同y值就会出问题
我想的二维线段树解法是,在x方向先找到要更新的段
然后从入口进去
入口就是:

if(l>=L&&r<=R)

函数是:

update(int L,int R,int l,int r,int cnt,int v)
{  update(L,R,l,(l+r)/2,cnt*2,v);update(L,R,(l+r)/2+1,r,cnt*2+1,v);
}//伪代码

然后从上面提到的那个入口进去让他去更新y值
可以这么写

if(l>=L&&r<=R)
update(tree[cnt],y1,y2,1,n,1,v);

这样的话就相当于更新tree[x_l~tree_r]段的y值,之后查询再返回相应的值
但是有个问题
这个题的数据量是五次方,之前怕超时,现在不超时了,超内存了,得,于是我们换一个方法
当然是看了题解之后
直接存储矩形的左上和右下两个顶点不就行了吗,奶奶的
然后挨个举行判断
giao
我只想到不能暴力枚举了

结果越想越麻烦
hh
贴个代码吧

#include
using namespace std;
struct point
{int x; int y;
};
struct rectangle
{point p1;point p2;
};
vector edge;
int main(void)
{int n;scanf_s("%d", &n);for (int i = 0; i < n; i++){int a, b,lenx, leny;scanf_s("%d%d%d%d", &a, &b, &lenx, &leny);edge.push_back({ {a,b},{a + lenx,b + leny} });}int x, y;scanf_s("%d%d", &x, &y);int ans = -1;for (int i = 0; i < n; i++){if (x >= edge[i].p1.x&&x <= edge[i].p2.x&&y>=edge[i].p1.y&&y<=edge[i].p2.y){ans = i + 1;}}printf("%d", ans);
}

后记:这是VS2017的代码

相关内容

热门资讯

嵩明6万盆“团圆之花”踏上新春...   虽然正值隆冬,但在嵩明县的云南省花卉示范园区内,却是一派春意盎然。近日,记者走进园区昆明缤纷园艺...
荣科科技:不存在与超聚变相关的... 来源:金综科技1月13日,荣科科技在互动平台表示,公司不存在与超聚变公司相关的重组计划,亦无任何借壳...
688005宣布:签下超120...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会!   容百科技与宁德时...
35.8亿元!2025年前11... (来源:千龙网)2025年1—11月,新疆果品出口迎来爆发式增长,累计出口各类果品28万吨,金额达3...
TCL中环:预计2025年净亏... 每经AI快讯,1月13日,TCL中环(002129.SZ)公告称,预计2025年归属于上市公司股东的...