瞎搞-贪心-NOIP前42天-入门-喷水装置

2024-03-24 14:48

本文主要是介绍瞎搞-贪心-NOIP前42天-入门-喷水装置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作死三部曲:
Step 1

#include<bits/stdc++.h>
#define rep(i,l,r) for(int i=(l);i<=(r);i++)
#define per(i,r,l) for(int i=(r);i>=(l);i--)
#define random(l,r) ((l)+rand()%((r)-(l)+1))
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const int inf=1e9+10,N=20000;
const double eps=1e-6;
struct node{double a,b;}p[N];
bool compare(node a,node b){ return a.a<b.a;}
int t,n;
double l,w,x,r;
int main(){ios::sync_with_stdio(false); cin.tie(0);cin>>t;while(t--){memset(p,0,sizeof(p));double last=0,now=0; int ans=0;cin>>n>>l>>w;rep(i,1,n){cin>>x>>r;if(r*2<=w) continue;p[i].a=x-sqrt((double)r*r-w*w/4.0f);p[i].b=x+sqrt((double)r*r-w*w/4.0f);}sort(p+1,p+1+n,compare);rep(i,1,n){if(p[i].a>last){if(now>0) ans++,last=now,now=0;else{ans=-1;break;}}if(p[i].b>=last) now=max(now,p[i].b);}if(last<l) cout<<0<<endl;else cout<<ans<<endl;}return 0;
}

到最后的时候now里可能还有值,也就是最后的那个喷水装置没被使用,因为最后一个不会在循环中被更新。因此导致答案错误。(本来可以覆盖的结果变成不能覆盖的了)。
Step 2:

#include<bits/stdc++.h>
#define rep(i,l,r) for(int i=(l);i<=(r);i++)
#define per(i,r,l) for(int i=(r);i>=(l);i--)
#define random(l,r) ((l)+rand()%((r)-(l)+1))
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const int inf=1e9+10,N=20000;
const double eps=1e-6;
struct node{double a,b;}p[N];
bool compare(node a,node b){ return a.a<b.a;}
int t,n;
double l,w,x,r;
int main(){ios::sync_with_stdio(false); cin.tie(0);cin>>t;while(t--){memset(p,0,sizeof(p));double last=0,now=0; int ans=0;cin>>n>>l>>w;rep(i,1,n){cin>>x>>r;if(r*2<=w) continue;p[i].a=x-sqrt((double)r*r-w*w/4.0f);p[i].b=x+sqrt((double)r*r-w*w/4.0f);}sort(p+1,p+1+n,compare);rep(i,1,n){if(p[i].a>last){if(now>0) ans++,last=now,now=0;else{ans=-1;break;}}if(p[i].b>=last) now=max(now,p[i].b);}***if(now>0) ans++,last=now,now=0;***if(last<l) cout<<0<<endl;else cout<<ans<<endl;}return 0;
}

将最后本该使用的喷水装置使用了,以为要AC了,结果又WA了。。因为其实有时候最后这一个喷水装置不用的话也已经完全覆盖了,再多用答案就错了。
Step 3 AC代码:

#include<bits/stdc++.h>
#define rep(i,l,r) for(int i=(l);i<=(r);i++)
#define per(i,r,l) for(int i=(r);i>=(l);i--)
#define random(l,r) ((l)+rand()%((r)-(l)+1))
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const int inf=1e9+10,N=20000;
const double eps=1e-6;
struct node{double a,b;}p[N];
bool compare(node a,node b){ return a.a<b.a;}
int t,n;
double l,w,x,r;
int main(){ios::sync_with_stdio(false); cin.tie(0);cin>>t;while(t--){memset(p,0,sizeof(p));double last=0,now=0; int ans=0;cin>>n>>l>>w;rep(i,1,n){cin>>x>>r;if(r*2<=w) continue;p[i].a=x-sqrt((double)r*r-w*w/4.0f);p[i].b=x+sqrt((double)r*r-w*w/4.0f);}sort(p+1,p+1+n,compare);rep(i,1,n){if(p[i].a>last){if(now>0) ans++,last=now,now=0;else{ans=-1;break;}}if(p[i].b>=last) now=max(now,p[i].b);}***if((now>0)&&(last<l)) ans++,last=now,now=0;***if(last<l) cout<<0<<endl;else cout<<ans<<endl;}return 0;
}

这篇关于瞎搞-贪心-NOIP前42天-入门-喷水装置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/841919

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

电力系统中的A类在线监测装置—APView400

随着电力系统的日益复杂和人们对电能质量要求的提高,电能质量在线监测装置在电力系统中得到广泛应用。目前,市场上的在线监测装置主要分为A类和B类两种类型,A类和B类在线监测装置主要区别在于应用场景、技术参数、通讯协议和扩展性。选择时应根据实际需求和应用场景综合考虑,并定期维护和校准。电能质量在线监测装置是用于实时监测电力系统中的电能质量参数的设备。 APView400电能质量A类在线监测装置以其多核

usaco 1.3 Barn Repair(贪心)

思路:用上M块木板时有 M-1 个间隙。目标是让总间隙最大。将相邻两个有牛的牛棚之间间隔的牛棚数排序,选取最大的M-1个作为间隙,其余地方用木板盖住。 做法: 1.若,板(M) 的数目大于或等于 牛棚中有牛的数目(C),则 目测 给每个牛牛发一个板就为最小的需求~ 2.否则,先对 牛牛们的门牌号排序,然后 用一个数组 blank[ ] 记录两门牌号之间的距离,然后 用数组 an

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

poj 3190 优先队列+贪心

题意: 有n头牛,分别给他们挤奶的时间。 然后每头牛挤奶的时候都要在一个stall里面,并且每个stall每次只能占用一头牛。 问最少需要多少个stall,并输出每头牛所在的stall。 e.g 样例: INPUT: 51 102 43 65 84 7 OUTPUT: 412324 HINT: Explanation of the s

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就