思维day2

news/2025/10/30 9:41:46/文章来源:https://www.cnblogs.com/kzh221349831/p/19175788

思维day2

P7150 [USACO20DEC] Stuck in a Rut S

题面

我们可以知道奶牛的轨迹是一条线。
首先我们注意到一个性质:每只奶牛只会被不同方向的奶牛所阻碍(x,y坐标各不相同)。
观察数据范围,我们发现只能从行进方向入手。
考虑奶牛什么时候会停下:当且仅当两头方向不同的奶牛所行进的轨迹产生交点
我们只需要维护交点即可,重点既是如何记录交点以及交点需要维护哪些信息。
产生交点的条件:
1)两头奶牛的方向不同
2)假设向东的奶牛为#c_{i}#,向北的奶牛为\(c_{j}\),则产生交点的条件为:
\(c_{i}.x<c_{j}.x\)\(c_{i}.y>c_{j}.y\)
现在还要判断交点被阻挡的奶牛是哪只,只需记录两头牛的起始点与交点的距离
所以交点维护的信息已经推导完毕
(i)交点的坐标
(ii)由哪两条线相交(线的编号)
但我们会发现一个问题,我们储存的是一条射线,但实际上会有奶牛被阻碍导致射线被阻断。
我们可以设置一个删除数组,维护每一头奶牛有没有没阻碍,在判断交点时如果有其中至少一头牛被打上了删除标记,则这个交点是不存在的。
对于没有被阻碍的牛,它阻碍的牛的个数应该是:
它在此交点前挡住的牛+此交点的另一头牛阻碍的牛+1(另一头牛本身)
我们还有一个小问题:判断交点顺序
相交的距离越小的点就越先被判断,显然是左下角的点优先被判断(因为牛是往右上方走的)

点击查看代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1007;
int read(){int x=0,f=1;char ch=getchar();while(!isdigit(ch)) {if(ch=='-') f=-1;ch=getchar();}while(isdigit(ch)) {x=(x<<1)+(x<<3)+ch-48;ch=getchar();}x=(f==-1?-x:x); return x;
}
struct node{int x,y,val;
}c[N],nth[N],est[N];
struct point{int x,y,numx,numy;bool operator<(const point& o)const{if(x==o.x) return y<o.y;return x<o.x;}
}q[N*N>>2];
int n,cnt,cne,cnp,ans[N];
bool del[N];
void solve(){n=read();for(int i=1;i<=n;i++){char op;node p;op=getchar(),getchar();p=(node){read(),read(),i};if(op=='N') c[i]=p,nth[++cnt]=p;else c[i]=p,est[++cne]=p;}for(int i=1;i<=cnt;i++)for(int j=1;j<=cne;j++)if(nth[i].x>est[j].x && nth[i].y<est[j].y)q[++cnp]={nth[i].x,est[j].y,est[j].val,nth[i].val};sort(q+1,q+cnp+1);for(int i=1,dx=q[i].x-c[q[i].numx].x,dy=q[i].y-c[q[i].numy].y;i<=cnp;i++,dx=q[i].x-c[q[i].numx].x,dy=q[i].y-c[q[i].numy].y)if(del[q[i].numx] || del[q[i].numy]) continue;else if(dx<dy) {del[q[i].numy]=1,ans[q[i].numx]+=ans[q[i].numy]+1;}else if(dx>dy) {del[q[i].numx]=1,ans[q[i].numy]+=ans[q[i].numx]+1;}for(int i=1;i<=n;i++) cout<<ans[i]<<"\n";
}
int main(){ios::sync_with_stdio(false);cin.tie(0);int T=1;while(T--) solve();
}

P8266 [USACO22OPEN] Photoshoot B
题面
我们可以把题目抽象表示。
每次反转一个偶数长度的前缀事实上就是把翻转的前缀中的奇数位与偶数位翻转。
直接的说,如果我们让两个字母为一组,若翻转覆盖了这一组,则这两个字母的奇偶会交换。
显然如果两个字母是相同的,那么怎么交换都是没用的,目标是让更多的G在偶数位置上
实现:
当相邻两个字母不一样时,我们将G在左侧的看作1,反之看作0,那么我们会得到一个01串,目标是
让1翻转为0,那么题目就变成硬币翻转
这道题了。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
char s[200005];
int ans,n;
vector <int> p;
int main(){ios::sync_with_stdio(false);cin.tie(0);cin>>n;cin>>(s+1);for(int i=1;i<=n;i+=2)if(s[i]!=s[i+1])if(s[i]=='G') p.push_back(1);else p.push_back(0);for(int i=1;i<p.size();i++) if(p[i]!=p[i-1]) ans++;if(p.size()==1) cout<<ans;else cout<<ans+p[p.size()-1];
}

P7299 [USACO21JAN] Dance Mooves S
题面
注意到因为交换会进行无数次,所以我们考虑到:有牛A从x->y,而牛B由z->x,那么再过一轮B也会走到y
也就是A与B的运功轨迹是一样的,于是有相同运动轨迹的牛会构成一个集体,而一个集体在k分钟内的运动轨迹会形成一个环。我们可以用并查集维护这个集体,set统计集体的途径点,每个独立集体内的牛能经过的点的个数就是set维护的个数

点击查看代码
#include<bits/stdc++.h>using namespace std;
int n,k;
int x,y;
const int N=1e5+7;
int a[N],fa[N];
vector <int> v[N];
set<int> ans[N];
void init(){for(int i=1;i<=n;i++)fa[i]=a[i]=i;
}
int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);
}
int main(){ios::sync_with_stdio(false);cin.tie(0);cin>>n>>k;init();for(int i=1;i<=k;i++){int x,y;cin>>x>>y;swap(a[x],a[y]);v[a[x]].push_back(y);v[a[y]].push_back(x);}for(int i=1;i<=n;i++)v[i].push_back(i);for(int i=1;i<=n;i++){int u=find(i),v=find(a[i]);fa[u]=v;}for(int i=1;i<=n;i++)for(int j:v[a[i]])ans[find(a[i])].insert(j);for(int i=1;i<=n;i++) cout<<ans[find(i)].size()<<"\n";
}	

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

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

相关文章

光纤数据收发加速计算卡设计方案:基于 Kintex-7 XC7K325T的半高PCIe x4双路万兆光纤收发卡

基于 Kintex-7 XC7K325T的半高PCIe x4双路万兆光纤收发卡 一、板卡概述 板卡采用Xilinx公司的XC7K325T-2FFG900I芯片作为主处理器,可应用于万兆网络、高速数据采集、存储;光纤隔离网闸等领域。 二、功能和技术指标:…

2025年比较好的纳米硅防火玻璃厂家实力及用户口碑排行榜

2025年比较好的纳米硅防火玻璃厂家实力及用户口碑排行榜 在建筑安全领域,防火玻璃的应用越来越广泛,尤其是在高层建筑、商业综合体、交通枢纽等场所,防火玻璃的性能直接关系到人员安全和财产保护。纳米硅防火玻璃凭…

Gitlens破解

Gitlens 破解本文来自博客园,作者:南宫影,转载请注明原文链接:https://www.cnblogs.com/nangongying/p/19175949

2025年口碑好的家装液压铰链厂家最新权威实力榜

2025年口碑好的家装液压铰链厂家最新权威实力榜在当今家装五金领域,液压铰链作为橱柜、衣柜等家具的核心部件,其品质直接影响着家具的使用寿命和用户体验。随着消费者对家居品质要求的不断提升,液压铰链市场也呈现出…

2025 年港澳台联考培训学校最新推荐榜,聚焦机构教学实力与升学成果深度剖析

引言 港澳台联考培训行业的规范发展与机构筛选,离不开科学权威的测评体系。本次推荐榜依托教育发展协会 2024 - 2025 年度港澳台联考培训行业测评数据编制,测评涵盖全国 32 个省市共 89 家正规培训机构。测评方法采用…

第09周 预习、实验与作业:Java集合框架

第09周 预习、实验与作业:Java集合框架第09周 预习、实验与作业:Java集合框架 目录第09周 预习、实验与作业:Java集合框架0.任务完成说明1.预习1.1 学习目标1.2 预习任务1.3 课前问题列表2.实验3.课后任务(作业)3…

文件摆渡系统品牌:Ftrans 如何成为银行业的最优选择

在数字经济时代,数据已成为银行业的核心生产要素。为防范网络攻击、数据泄露等风险,银行会将内部网络隔离为生产网、办公网、研发网等不同安全级别区域。但网络隔离后,“数据要流动”的业务需求并未消失,如何选择适…

powershell检查端口是否开放

来源:https://learn.microsoft.com/zh-cn/powershell/module/microsoft.powershell.management/test-connection?view=powershell-7.5

手把手教你用 Docker 部署 Red Hat UBI8 镜像

如果你需要一个“靠谱、安全、能长期用”的容器基础镜像,尤其是企业级场景(比如部署核心业务应用),UBI8 是首选之一。一、Red Hat UBI8 简介 Red Hat UBI8(Universal Base Image 8,通用基础镜像)是 Red Hat 官方…

ansible docekr 实例

ansible docekr 实例目录结构 hosts deployment- docker.yml roles- docker- tasks-main.yml- templater- filesvim hosts [docker] 192.168.106.130 hostname=rocky90-106-130 [timesyncclient] 192.168.106.130 host…

2025年知名的央企工装定制厂家最新实力排行

2025年知名的央企工装定制厂家最新实力排行在当今商业环境中,企业形象与专业度已成为市场竞争的重要维度,而工装作为企业文化的视觉载体,其重要性日益凸显。2025年,随着企业对品牌形象要求的提升,工装定制行业迎来…

2025年比较好的浴室专用液压浴室夹厂家最新实力排行

2025年比较好的浴室专用液压浴室夹厂家最新实力排行 在浴室装修中,液压浴室夹(缓冲合页)的选择至关重要,它直接影响浴室门的开合顺畅度、静音效果及使用寿命。随着消费者对家居品质要求的提升,具备缓冲、防夹手、…

免重启解决nvidia-smi报错:Failed to initialize NVML: Driver/library version mismatch.

解决方法参考这篇文档:https://muwaii.com/posts/cuda-nvidia-smi-nvml-driver-library-version-mismatch

远程桌面使用pads9.5报错弹出licensing note对话框解决方法

远程桌面使用pads9.5报错弹出licensing note对话框解决方法源自 pads在本地电脑打开使用没什么问题,使用微软远程桌面的时候弹出licenseing note对话框,使用向日葵等远程桌面也没有此问题。 点击对话框里面的details…

2025年热门的压花韩国绒厂家最新热销排行

2025年热门的压花韩国绒厂家最新热销排行 随着时尚产业和家居装饰市场的蓬勃发展,压花韩国绒因其独特的质感、丰富的色彩和多样的花纹设计,成为2025年最受欢迎的纺织面料之一。无论是服装、家居用品还是高端礼品包装…

回声智能:利用声学互易性进行声音映射

本文探讨了利用声学互易性原理进行声音场映射的技术,通过交换扬声器和麦克风位置来减少物理测量次数,实现精准的声学建模。该方法可应用于音乐厅、家庭影院等场景,显著提升声学环境优化效率。回声智能:利用声学互易…

2025年超微粉碎机厂家权威推荐榜单:气流粉碎机/气流分级机/废旧锂电池生产线源头厂家精选

在粉体设备行业迈向精细化、智能化的今天,一批技术实力雄厚的企业正推动着超微粉碎技术的革新与发展。 超微粉碎技术作为现代工业中不可或缺的深加工手段,其应用已遍及新能源、医药、食品、化工等多个领域。根据市场…

(转载)JavaScript 必知必会:值类型 vs. 引用类型,一文彻底搞懂!

(转载)JavaScript 必知必会:值类型 vs. 引用类型,一文彻底搞懂!Posted on 2025-10-30 09:25 lzhdim 阅读(0) 评论(0) 收藏 举报一、JavaScript数据类型的核心分类 JavaScript的数据类型分为值类型(基本类型…

高级八字算卦股市分析报告

正在进行高级市场分析...高级八字算卦股市分析报告====================================================================== 分析时间: 2025-10-30 09:24 市场类型: A股 【八字命盘分析】 当前八字: 甲辰 甲戌 己酉 …

2025年AI神器榜单:程序员、设计师都在用的AI工具_有什么好用的ai工具推荐?

2025年AI神器榜单:程序员、设计师都在用的AI工具_有什么好用的ai工具推荐?AI 工具可以帮你节省大量重复性、基础性的工作,比如文字起稿、图片生成、会议记录、代码补全等。比如有资料指出,许多 “AI 生产力工具” …