noip2011提高组day1+day2解题报告
Day1 T1铺地毯https://www.luogu.org/problem/show?pid=1003
【题目分析】
全部读入以后从最后一个往前找,找到一个矩形的范围覆盖了这个点,那这个矩形就是最上面的地毯,输出即可
#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int maxn=10010; int a[maxn],b[maxn],g[maxn],k[maxn]; int n,ans=-1; int x,y; int main() {freopen("carpet.in","r",stdin);freopen("carpet.out","w",stdout);scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d%d%d%d",&a[i],&b[i],&g[i],&k[i]);scanf("%d%d",&x,&y);int xx=n;while(xx--){if((a[xx+1]<=x)&&(a[xx+1]+g[xx+1]>=x)&&(b[xx+1]<=y)&&(b[xx+1]+k[xx+1]>=y)){ans=xx+1;break;}}printf("%d",ans); }
Day1 T2选择客栈https://www.luogu.org/problem/show?pid=1311
【题目分析】
首先说一下O(nk)的做法。zzl[i]表示第i种颜色的数量,bfh[i]表示不符合条件的酒店的数量,sum表示不符合条件的方案数,ans表示相同色调的酒店组合的所有情况
#include<cstdio> #include<cstring> #include<iostream> using namespace std; int n,k,p; const int maxn=200010; int a[maxn],b[maxn],zzl[55],bfh[55]; int ans=0,sum=0; int main() {freopen("hotel.in","r",stdin);freopen("hotel.out","w",stdout);scanf("%d%d%d",&n,&k,&p);for(int i=1;i<=n;i++){scanf("%d%d",&a[i],&b[i]);if(b[i]<=p){for(int j=0;j<k;j++){sum+=bfh[j]*(bfh[j]-1)/2;bfh[j]=0;}zzl[a[i]]++;}elsebfh[a[i]]++,zzl[a[i]]++;}for(int i=0;i<k;i++)ans+=zzl[i]*(zzl[i]-1)/2,sum+=bfh[i]*(bfh[i]-1)/2;printf("%d",ans-sum);return 0;}
//当复杂度变为O(n)...我也不太会,codevs上的题解不错 #include<iostream> using namespace std; int n,k,p,m,x,y,sum; int a[100],b[100],c[100]; int main() { cin>>n>>k>>p; for(int i=1;i<=n;i++) { cin>>x>>y; if(y<=p) m=i;//如果咖啡店的最低消费地于标准,那么记录其位置if(m>=a[x]) c[x]=b[x];//如果在当前颜色的酒店之前有出现过同样颜色的酒店那么记录当前同种颜色的酒店的出现次数 /*特注:当到COODVS上第四组数据时也许会因为“y<=p”不会记录当前的位置, 但是会记录之前有满足“y<=p”条件的位置, 也就是说两个人住的客栈之间有满足条件的咖啡馆, 那么也就可以让c数组的对应颜色加上1了,即“c[x]=b[x]” 从而使后面的总数加上1*/ a[x]=i;//记录同样颜色的酒店最后一次的出现位置 sum+=c[x]; /*每一个酒店都可以作为对应点,所以不需要再去加上任何的判断,记录住宿的方法, c数组可以理解为当前色调位置,到之前满足“y<=p”色调位置的方案 */ b[x]++;//记录出现次数的总数 } cout<<sum; return 0; }
转载于:https://www.cnblogs.com/xiaoningmeng/p/5936384.html
noip2011提高组day1+day2解题报告相关推荐
- NOIP2011 提高组 Day1
自测:8:27--11:51 实际得分:100+60+20=180 期望得分:100+60+40=200 T3读错题,失20 http://cogs.pro/cogs/page/page.php?ai ...
- NOIP2012提高组 开车旅行 解题报告
开车旅行 题目描述 样例输入 样例输出 70分算法 暴力预处理出对于每一个点他右边最近.次近的点的编号,对于每一个询问,暴力模拟开车过程即可. 100算法 和上面一样我们得预处理出每一个点最近.次近的 ...
- [NOIP2011 提高组] 铺地毯
题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 nn 张地毯,编号从 11 到 nn.现在将这些地毯按照编号从小到大的顺序 ...
- P1003 [NOIP2011 提高组] 铺地毯
题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到 n.现在将这些地毯按照编号从小到大的顺序平行于 ...
- 信息学奥赛一本通 1118:铺地毯 | 1863:【11NOIP提高组】铺地毯 | OpenJudge NOI 1.9 14 | 洛谷 P1003 [NOIP2011 提高组] 铺地毯
[题目链接] ybt 1118:铺地毯 ybt 1863:[11NOIP提高组]铺地毯 OpenJudge NOI 1.9 14:铺地毯 洛谷 P1003 [NOIP2011 提高组] 铺地毯 [题目 ...
- c/c++ 洛谷 P1003 【NOIP2011 提高组】 铺地毯
题目链接 洛谷 P1003 [NOIP2011 提高组] 铺地毯 不想戳的看下图: 样例及解释 数据范围 解题思路: 从后往前找地毯,找到了我就输出并返回. 代码如下: #include <io ...
- 【洛古 P1315】 [NOIP2011 提高组] 观光公交
[NOIP2011 提高组] 观光公交 题目背景 感谢 @Transhumanist 提供的一组 Hack 数据 题目描述 风景迷人的小城 Y 市,拥有 n n n 个美丽的景点.由于慕名而来的游客越 ...
- 洛谷P1003 铺地毯 noip2011提高组day1T1
洛谷P1003 铺地毯 noip2011提高组day1T1 洛谷原题 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n ...
- 【做题记录】[NOIP2011 提高组] 观光公交
P1315 [NOIP2011 提高组] 观光公交 我们想在 \(k\) 次加速每一次都取当前最优的方案加速. 考虑怎样计算对于每一条边如果在当前情况下使用加速器能够使答案减少的大小. 如果当前到达某 ...
最新文章
- javascript 自动按按钮
- 将构件发布到私有的nexus maven 仓库
- asp连接不到我mysql里_ASP连接MYSQL问题点解决
- 【线上分享】边缘计算与云原生
- 据说这是熟练掌握python的爷们_dongbei 是一门基于 Python 3 二次开发的东北方言编程语言...
- .Net Core3.0依赖注入DI
- 这个“专题”的导读好像忘了更新了
- 关于SqlDataReader类型的变量传值问题
- Redis 分布式客户端 Redisson 分布式锁快速入门
- unity中的UV是什么
- 学习搭建谷粒商城微服务框架(Docker配置)-01
- vulnhub:Who Wants To Be King: 1
- 观察者(observer)模式(一)
- 积分域为椭球的三重积分的求解方式----广义的极坐标变换
- 服务器系统server2008 qq,WindowsServer2008R2服务器系统安装教程
- Garrett Motion将在Auto Shanghai 2021上展示用于混合动力汽车和燃料电池汽车的下一代电动助力技术
- 大数据对人们的好处_大数据对我们有什么作用呢?
- Cadence 如何通过.dra(封装)查看使用哪个.pad(焊盘)文件
- Maven命令之--mvn help:system
- 华为S2700以及S5700系列交换机 配置(详细)