当前位置: 首页 > news >正文

2024 吉林 CCPC

文章目录

  • 2024 吉林 CCPC
    • L. Recharge(思维、分配)
    • G. Platform Game(模拟)
    • E. Connect Components (排序、思维)
    • D. Parallel Lines

2024 吉林 CCPC

题目链接:

Dashboard - The 2024 CCPC National Invitational Contest (Changchun) , The 17th Jilin Provincial Collegiate Programming Contest - Codeforces

L. Recharge(思维、分配)

  • 如果k是偶数,(x+y*2)/k
  • k为奇数,优先使用y+x的组合

G. Platform Game(模拟)

按照 y 进行排序,由于数据范围比较小,可以直接枚举找到小球接下来

落到的平台。

E. Connect Components (排序、思维)

看到连通块第一想到的就是并查集,但实际上用不到。

将公式变换,以a[i]-i 从小到大排序,此时前面的i-b[i] 同样小于后面的就可以

联通。

可以用一个对顶堆来维护。

每次将后面大于当前的点,加入并查集,并弹出。

但是这样会漏掉。

如果以a[i]-ib[i]-i分别排序,进行两次就可以过。

不确定是不是卡过去,大概率不是

这里可以用小顶堆或者栈,如果后续出现一个较大的值,就将所有小于a[ i ].se的弹出去,

他们都可以形成连通块,再将最小值给推进去,这样保证每次都可以用最小值来连接。

int mod=998244353;
struct node{int l,r;
}a[N];
bool cmp(node u,node v){if(u.l==v.l)return u.r<v.r;return u.l<v.l;
}
void solve(){int n;cin>>n;for(int i=1;i<=n;i++){int x,y;cin>>x>>y;a[i].l=x-i;a[i].r=i-y;}sort(a+1,a+1+n,cmp);stack<int>q;q.push(a[1].r);for(int i=2;i<=n;i++){int f=0,tt;if(q.size()) tt=q.top();while(!q.empty()&&a[i].r>=q.top()){f=1;q.pop();}if(f==1){q.push(tt);}else{q.push(a[i].r);}}cout<<(int)q.size()<<'\n';
}  

D. Parallel Lines

题意:k条平行线 n个点。判断每一条平行线上,点的x坐标


先暴力用第一个点和所有点,计算斜率。其中必有一个斜率是平行线斜率。

  • 判断有哪几个点在一条平行线上:

可以用直线方程, y=kx+b 将 k ,x , y 带入,如果b值相同,说明在同一条直线上。

由于直接求斜率会有误差,可以两边同乘 (x1-x2)

  • 剪枝:当 b 值 大于 k 个的时候,说明这个斜率是错误的
  • 注意:一条直线上至少有两个点。
PII a[N];
void solve()
{int n,k;cin>>n>>k;fir(i,1,n)cin>>a[i].fi>>a[i].se;fir(i,2,n){int dx=a[i].fi-a[1].fi,dy=a[i].se-a[1].se;map<int,vector<int> > mp;fir(i,1,n){int x=a[i].fi*dy-a[i].se*dx;mp[x].push_back(i);if(mp.size()>k) break; }if(mp.size()==k){int f=0;for(auto it:mp){if(it.se.size()==1) f=1;}if(f) continue;for(auto it:mp){cout<<it.se.size()<<' ';for(auto ii:it.se){cout<<ii<<' ';}cout<<'\n';}return;}}         
}
http://www.xdnf.cn/news/719785.html

相关文章:

  • 【25-cv-05855】Keith律所代理Paula Alejandra Navarro 版权图
  • RAG技术:私有大模型知识更新的最佳实践
  • 简述如果要存储用户的密码散列,应该使用什么字段进行存储?
  • 数据的类型——认识你的数据
  • SpringBoot使用MQTT协议简述
  • database disk image is malformed 的解决方法
  • C++ —(详述c++特性)
  • 行锁与表锁详解:原理、区别与面试要点
  • 63、【OS】【Nuttx】任务休眠与唤醒:sleep
  • 系统提示词:Google Stitch
  • 【笔记】suna部署之获取 Daytona API key 及 Daytona Sandbox 设置
  • 在力扣刷题中触摸算法的温度
  • Codeforces Round 1024 (Div. 2)
  • 山东省申报高级职称、正高级职称条件(工业、信息化方向)
  • 大数据如何赋能市场情报分析?——精准决策,从数据开始
  • echarts主题切换实现
  • 多模态融合新方向:光学+AI如何智能分拣,提升塑料回收率?
  • 基于卫星遥感数据识别互花米草及原生植被分布及生长的技术原理、关键方法
  • 利用TOA与最小二乘法直接求解
  • React从基础入门到高级实战:React 生态与工具 - React 国际化(i18n)
  • [学习]C++ 模板探讨(代码示例)
  • Python模块中__all__变量失效问题深度解析
  • 虚幻基础:模型
  • 鲜羊奶对青少年心理健康的 “技术向” 营养支持
  • day31 5月29日
  • python打卡第36天
  • WPF中自定义消息弹窗
  • 小白畅通Linux之旅-----Linux安全管理
  • Ubuntu系统下Docker部署Dify保姆级教程:实现内网穿透远程访问
  • 超声波清洗机的作用是什么?使用超声波清洗机可以去除毛刺吗?