主页
搜索
最近更新
数据统计
申请密钥
系统公告
1
/
1
请查看完所有公告
第五次考试总结
最后更新于 2025-07-30 23:19:07
作者
hcs888
分类
算法·理论
复制 Markdown
查看原文
删除文章
更新内容
# **P1847 轰炸II** ### 轰炸!!! ### ### **思路** 二维数组不能开,一维就够了 **解析代码** ```cpp #include<bits/stdc++.h> using namespace std; int m,n,xa[2001],ya[2001],ans[2001];//用结构体也可以,只不过我认为数组更方便😁 int xb[2001],yb[2001],da[2001]; int main(){ cin>>m>>n;//输入 for(int i=1;i<=m;i++){ cin>>xa[i]>>ya[i]>>xb[i]>>yb[i];//输入 } for(int i=1;i<=n;i++){ int ax,ay;//输入关键点 cin>>ax>>ay; for(int j=1;j<=m;j++){ if(ax>=xa[j]&&ax<=xb[j]&&ay>=ya[j]&&ay<=yb[j]){ //判断关键点是否被轰炸 ans[i]++; //记数数组+1 da[i]=j;//最后一次轰炸 } } } for(int i=1;i<=n;i++){ if(ans[i]==0)cout<<"NO"<<endl;//没轰炸过输出0 else{ cout<<"YES"<<" "<<ans[i]<<" "<<da[i]<<endl;//否则输出1 } } return 0; } ``` ## **P1086 [NOIP 2004 普及组] 花生采摘** **思路** 排序后从最大的开始采取措施,他只能从最大的开始摘,所以如果最大的都摘不了,直接输出0。具体见*解析代码* **解析代码** ```cpp #include<bits/stdc++.h> using namespace std; int n,m,idx,t; struct node{//花生的结构体 int x,y,cnt; }a[410]; bool cmp(node u,node o){//排序比较函数 return u.cnt>o.cnt; }; int main(){ cin>>m>>n>>t; for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ int x; cin>>x; ++idx; a[idx]={i,j,x}; } } sort(a+1,a+idx+1,cmp);//用上了cmp if(a[1].x*2+1>t){//第一个都拿不到的话 cout<<0; }else{ t=t-a[1].x-1;//时间减少,-1是因为采摘要时间 int px=a[1].x,py=a[1].y;//更新坐标 int ans=a[1].cnt;//拿到了花生^-^ for(int i=2;i<=idx;i++){ int dx=abs(px-a[i].x)+abs(py-a[i].y);//曼哈顿距离 int back=a[i].x;、、回去要多久 if(dx+back+1>t){//再摘就回不去啦!!! break;//回去喽 }else{ t=t-dx-1;//我还要吃花生!!! ans+=a[i].cnt;//再摘 px=a[i].x,py=a[i].y;//更新坐标 } } cout<<ans;//猜猜我吃了几顿花生? } return 0; } ``` 嗝!花生吃饱了,就差被轰炸了……
正在渲染内容...
点赞
0
收藏
0