“现代汽车中国前瞻软件赛杯” 牛客周赛 Round 43 D、E

news/2024/11/15 13:50:39/文章来源:https://www.cnblogs.com/cmyg/p/18202790

 

那时候吃了饭后,剩下25分钟,我就把A-D都过了一遍,E不够时间。

 

D

对于x~y这个长度为k的序列:对于1~k每个数,它出现的数目。

从x~y,到x+1~y:如果一个数出现的数目从0 -> 1,出现元素数目+1;如果一个数出现的数目从1 -> 0,出现元素数目-1。

记录所有出现元素数目=k的序列。

太多人对了。

 

 1 #include <cstdio>
 2 #include <cstdlib>
 3 #include <cstring>
 4 #include <cmath>
 5 #include <cstdbool>
 6 #include <string>
 7 #include <algorithm>
 8 #include <iostream>
 9 #include <sstream>
10 #include <ctime>
11 #include <stack>
12 #include <vector>
13 #include <queue>
14 #include <set>
15 #include <map>
16 #include <array>
17 #include <bitset>
18 using namespace std;
19 #define LL long long
20 #define ULL unsigned long long
21 
22 const LL mod_1=1e9+7;
23 const LL mod_2=998244353;
24 
25 const double eps_1=1e-5;
26 const double eps_2=1e-10;
27 
28 const int maxn=1e5+10;
29 
30 LL a[maxn], hap[maxn];
31 
32 int main()
33 {
34     LL n,k,ci=0,r=0,i;
35 
36     memset(hap,0,sizeof(hap));
37 
38     cin>>n>>k;
39     for (i=1;i<=n;i++)
40         cin>>a[i];
41 
42     for (i=1;i<=n;i++)
43     {
44         if (hap[ a[i] ]==0)
45             ci++;
46         hap[ a[i] ]++;
47 
48        if (i>=k)
49         {
50             if (ci==k)
51                 r++;
52         }
53 
54         if (i>=k)
55         {
56             if (hap[ a[i-k+1] ]==1)
57                 ci--;
58             hap[ a[i-k+1] ]--;
59         }
60 
61     }
62 
63     cout<<r;
64 
65     return 0;
66 }

 

 

 

E

遍历所有边,因为点数目<=1e3,那么边数目>=1e6。

对于每条边,记录斜率y、x(斜率为y/x),长度len(长度为sqrt(len)),然后用map记录满足这个条件的b的最大值/最小值(y=k*x+b)。如果有两条边,斜率y、x、长度len都一样,那么它们可以作为平行四条行的两条边(剩下两条边也自然满足条件)。

斜率用y, x表示,长度用len表示,使得它们都是整数,这样一来,避免出现浮点数精度的错误。

 

这样写很方便:

1 typedef pair<pair<LL,LL>, LL> typ;
2 
3 map<typ, LL> m_min, m_max;

 

 

最后的结果是一个整数,如果用double、long double,只能过53%左右的样例。

 

为什么结果一定是整数,把它切成这样,就能理解了,点的x,y坐标都是整数。

 

 

  1 #include <cstdio>
  2 #include <cstdlib>
  3 #include <cstring>
  4 #include <cmath>
  5 #include <cstdbool>
  6 #include <string>
  7 #include <algorithm>
  8 #include <iostream>
  9 #include <sstream>
 10 #include <ctime>
 11 #include <stack>
 12 #include <vector>
 13 #include <queue>
 14 #include <set>
 15 #include <map>
 16 #include <array>
 17 #include <bitset>
 18 using namespace std;
 19 #define LL long long
 20 #define ULL unsigned long long
 21 
 22 const LL mod_1=1e9+7;
 23 const LL mod_2=998244353;
 24 
 25 const double eps_1=1e-5;
 26 const double eps_2=1e-10;
 27 
 28 const int maxn=1e3+10;
 29 const int maxp=1e6+10;
 30 
 31 LL x[maxn], y[maxn];
 32 
 33 typedef pair<pair<LL,LL>, LL> typ;
 34 
 35 map<typ, LL> m_min, m_max;
 36 
 37 
 38 int main()
 39 {
 40     LL n,i,j,xx,yy,len,xishu,v1,v2;
 41     typ ty;
 42     //long double r=0,b1,b2;
 43     ///变为long double,反而有一个错了
 44 
 45     ///输出全部都是整数
 46 
 47     ///也就是說,long double只是定義為至少跟double一樣精度(即是可以一樣)
 48 
 49 
 50     ///double r=0,b1,b2;
 51 
 52     LL r=0;
 53 
 54     cin>>n;
 55     for (i=1;i<=n;i++)
 56         cin>>x[i]>>y[i];
 57     for (i=1;i<=n;i++)
 58         for (j=i+1;j<=n;j++)
 59         {
 60             yy = y[i]-y[j];
 61             xx = x[i]-x[j];
 62 
 63             if (xx<0)
 64                 yy=-yy, xx=-xx;
 65 
 66             /*
 67             if (x[i]==x[j])
 68                 xishu = y[i] - 1.0*(y[i]-y[j])/(x[i]-x[j])*x[i];
 69             else
 70                 xishu = 1e18;
 71             */
 72 
 73             xishu = y[i]*xx - yy*x[i]; /// xishu/xx
 74 
 75             len = yy*yy + xx*xx;    /// sqrt(len)
 76 
 77             ty = make_pair( make_pair(yy,xx), len);
 78 
 79             if (m_max.find(ty)==m_max.end())
 80                 m_max[ty]=xishu;
 81             else
 82                 m_max[ty]=max(m_max[ty], xishu);
 83 
 84             if (m_min.find(ty)==m_min.end())
 85                 m_min[ty]=xishu;
 86             else
 87                 m_min[ty]=min(m_min[ty], xishu);
 88         }
 89 
 90 
 91 
 92     for (auto d : m_max)
 93     {
 94         v1 = d.second;
 95         ty = d.first;
 96         v2 = m_min[ty];
 97 
 98         len = ty.second;
 99         yy = ty.first.first;
100         xx = ty.first.second;
101 
102         /*
103         if (xx==0)
104             continue;
105         */
106 
107         //b1 = abs( 1.0* (v1-v2) / xx );
108         //b2 = sqrt(1.0*len);
109 
110         //r = max(r, b2 * b1 * xx / b2);
111 
112         //r = max(r, 1.0*(v1-v2));
113 
114         r = max(r, v1-v2);
115 
116     }
117 
118     if (r==0)
119         cout<<"-1";
120     else
121         cout<<r<<".0";
122 
123     /*
124     if (fabs(r)<1e-5)
125     {
126         cout<<"-1";
127         return 0;
128     }
129 
130     printf("%.1f",r);
131     */
132 
133     //printf("%.1Lf",r);
134 
135     return 0;
136 }
137 /*
138 4
139 0 0
140 0 10
141 10 0
142 10 10
143 
144 
145 
146 
147 4
148 0 0
149 10 0
150 3 5
151 13 5
152 
153 
154 
155 6
156 0 0
157 0 10
158 10 0
159 10 10
160 3 5
161 13 5
162 
163 
164 4
165 0 0
166 1 0
167 2 0
168 3 0
169 
170 4
171 0 10
172 1 10
173 2 10
174 3 10
175 
176 4
177 10 0
178 10 1
179 10 2
180 10 3
181 */

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/709440.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常回家看看之off_by_one

❗off_by_one这个漏洞比较特殊,它不像上一期的堆溢出,可以溢出很多字节,它只能溢出一个字节,在栈里面也可以通过这个漏洞修改返回地址什么的,在堆里面我们主要利用它来修改堆块的大小,形成fake_chunk也就可以进行堆的重叠,在64位的时候如果申请0x18,0x28,0x38这样的堆…

LLM实战:当网页爬虫集成gpt3.5

本文主要是通过Scrapegraph-ai集成gpt3.5实现一个简单的网页爬取并解析的demo应用,其中涉及到gpt3.5免费申请,Scrapegraph-ai底层原理简介,demo应用源码等。1. 背景 最近本qiang~关注了一个开源项目Scrapegraph-ai,是关于网页爬虫结合LLM的项目,所以想一探究竟,毕竟当下及…

使用RAG-GPT集成智谱AI、DeepSeek快速搭建OpenAI Cookbook智能客服

本文介绍了如何通过RAG-GPT集成智谱AI和DeepSeek,快速搭建OpenAI Cookbook智能客服系统。包括下载源代码、配置环境变量、启动服务、体验聊天效果、将聊天机器人嵌入网站等步骤。RAG-GPT具备开源免费、易于部署、功能丰富的特点,为LLM在特定领域的应用提供企业级解决方案。使…

openpyxl Worksheet

worksheet 说明 Worksheet 代表一个 Excel 工作表。 worksheet 初始化 from openpyxl import Workbook# 创建一个新的Excel工作簿 wb = Workbook()# 获取第一个工作表 worksheet = wb.active# 保存工作簿到指定的文件名 wb.save("execl_test.xlsx")# 关闭工作簿 wb.c…

C#使用开源操作库MiniExcel操作Excel

简介 MiniExcel简单、高效避免OOM的.NET处理Excel查、写、填充数据工具。 目前主流框架大多需要将数据全载入到内存方便操作,但这会导致内存消耗问题,MiniExcel 尝试以 Stream 角度写底层算法逻辑,能让原本1000多MB占用降低到几MB,避免内存不够情况。特点 低内存耗用,避免…

Django性能优化:提升加载速度

title: Django性能优化:提升加载速度 date: 2024/5/20 20:16:28 updated: 2024/5/20 20:16:28 categories:后端开发tags:缓存策略 HTTP请求 DNS查询 CDN分发 前端优化 服务器响应 浏览器缓存第一章:Django性能优化概述 1.1 性能优化的意义 性能优化是Web开发中的关键环节,它…

crypto--rsa基础(1)

在ctf---crypto中rsa应该是最常见也是现在最容易考到的密码题型吧,这篇博客就简单的介绍一下rsa和rsa的一些基本的攻击手法. 对于我们这些萌新来说要做rsa的话也必须先掌握四大基本公式就是欧拉函数,费马小定理,中国剩余定理,威尔逊定理,现在就先基本了解一下就能够做题了…

Python/Go 面试题目整理

目录一、Python 基础知识1.1 可变与不可变数据类型1.8 深浅拷贝1.2 PEP8 编程规范1.3 匿名函数1.4 装饰器1.5 迭代器1.6 生成器1.7 面向对象编程思想1.7.1 Python 中的__new__和__init__的区别1.7.2 反射1.7.3 面向对象1.7.4 鸭子类型1.7.5 你对Python的继承怎么看?1.9 GC 机制…

TypeScript入门介绍

目录TypeScript入门介绍什么是 TypeScript?发展历史优缺点应用场景开发工具环境依赖编程IDEvs调试构建工具/工程化步骤汇总第一个项目 TypeScript入门介绍 什么是 TypeScript?1.1 TypeScript 是由微软开发的一种开源的编程语言。它是 JavaScript 的一个超集,通过为 JavaScri…

Shell编程之免交互

目录1.Here Document免交互2.Here Document常规用法(1)免交互执行命令(2)免交互创建并编辑文件内容(3)tee3.Expect免交互4.编写expect免交互脚本步骤5.read 1.Here Document免交互 使用I/O重定向的方式将命令列表提供给交互式程序 标准输入的一种替代品 命令 <<标记…

jupyter notebook无法找到自己的虚拟环境

1:打开cmd/Anaconda Prompt/Anaconda Powershell Prompt2:进入虚拟环境conda activate 环境名 3:conda list查看有无ipykernel包 如果没有,安装两个包:conda install nb_conda conda install ipykernel 如果下载不了将指令换成conda install nb_conda_kernels 注:conda/…

URLSearchParams:url查询处理工具

let params=new URLSearchParams(a=1&b=2&c=3#hash) 方法和属性: .get( ).has( )  //返回true/false .append(name,value)  //向URL中添加新的参数.set(name,value)  //设置指定参数的值,如果参数不存在则添加新参数 .delete(name)  //删除指定名称的参数 .k…