USACO 2024 Open Bronze铜组题解

迟到了一个月的题解......

Logical Moos:

啊这题放在铜组T1雀食有点BT......

首先,我们关注l前第一和r最后那两组。如果这俩有一个是true,那答案肯定也是true。

否则,在l和r外边的都是false。那我们就只用仔细看l和r中间的玩意儿。对于l和r中间的每一组,只要第一组和最后一组都是false,那结果肯定也是false。

所以:如果换掉的对最后结果木有影响,那就不管;如果有,就换。

对于true的查询,我们必须再次检查该段是否包含l这组的第一个false,以及r这组的最后一个false。如果不是,那么即使我们将其余部分替换为true,结果也将还是false。

对于false的查询,如果输入是false,结果将为false。

我们每次只需记录每组中最左的false和最右的false,复杂度\Theta (N+Q)

#include <bits/stdc++.h>
using namespace std;
string expr[maxn];
int group[maxn];
int main(){
	int N,Q;
	cin>>N>>Q;
	for(int i=0;i<N;i++)
		cin>>expr[i];
	int idx=0;
	for(int i=0;i<N;i++){
		if(expr[i]=="or")
			idx++;
		else{
			if(i%2==0)
				group[i]=idx;
		}
	}
	vector<int> first_false(idx+1,INF);
	vector<int> last_false(idx+1,-1);
	for(int i=0;i<N;i+=2){
		int g=group[i];
		if(expr[i]=="false"){
			if(first_false[g]==INF)
				first_false[g]=i;
			last_false[g]=i;
		}
	}
	int first_true=INF,last_true=-1;
	for(int i=0;i<=idx;i++){
		if(first_false[i]==INF){
			if(first_true==INF)
				first_true=i;
			last_true=i;
		}
	}
	while(Q--){
		int l,r;
		cin>>l>>r;
		--l;
		--r;
		string query;
		cin>>query;
		int gl=group[l],gr=group[r];
		if(first_true<gl || last_true>gr){
			cout<<(query=="true"?'Y':'N');
			continue;
		}
		if(query=="true")
			cout<<(first_false[gl]<l || last_false[gr]>r?'N':'Y');
		else
			cout<<'Y';
	}
	return 0;
}

好长啊。。。

Walking Along a Fence:

我们用一个二维矩阵记录每个点沿栅栏的距离,我们按顺序读入栅栏,当我们这样做时,我们遍历栅栏上的每个点,在数组中标记每个点0,1,2,…;同时记录周长。由于篱笆最多访问每个点一次,时间复杂度为\Theta (L^2)

#include <bits/stdc++.h>
using namespace std;
const int MAX=200005;
struct loc{
	int x;
	int y;
}posts[MAX];
int perimeter,dist[1005][1005];
void walk(loc st,loc ed){
	diff.x=ed.x-st.x,diff.y=ed.y-st.y;
	int dis=abs(diff.x)+abs(diff.y);
	diff.x=diff.x/dis,diff.y=diff.y/dis;
	for(int i=0;i<dis;i++){
		dist[st.x][st.y]=perimeter;
		perimeter++;
		st.x=st.x+diff.x,st.y=st.y+diff.y;
	}
}
int main(){
	int N,P;
	cin>>N>>P;
	for(int i=0;i<P;i++)
		cin>>posts[i].x>>posts[i].y;
	for(int i=0;i<P;i++)
		walk(posts[i],posts[(i+1)%P]);
	for(int i=0;i<N;i++){
		int x1,y1,x2,y2;
		cin>>x1>>y1>>x2>>y2;
		int p1=dist[x1][y1];
    	int p2=dist[x2][y2];
    	int ans=abs(p1-p2);
		ans=min(ans,perimeter-ans);
		cout<<ans<<endl;
	}
	return 0;
}

Farmer John's Favorite Permutation:

Farmer Nhoj????????????????????????????????????????????????????????????

Emmmmmmmmmm,\Theta (N!)暴力的话肯定是不行的。那怎么办呢?

我们会发现,不管怎么动,1,永远不会动。所以,1,必然是那个活到最后的人。h_{N-1}=1。否则直接不可以总司令然后走人。

如果不是-1,我们就把最后一个从h里踢出去,不管它。

那p的最小字典序一定满足p_1<p_N。接下来,我们会想:只有一组这样的p吗?

我们知道,h都是不同的,看起来,如果存在一些映射到h的p,p必然是唯一的。

大家可以手推一下,把h和p都算出来,可以发现这两点:

        1. 每个h里的元素都是不同的

        2. p结尾的数正好是从h里消失的两个。

所以,只要确定了p结尾的数,就可以得出整个p。

#include <bits/stdc++.h>
using namespace std;
int main(){
	int T;
	cin>>T;
	while(T--){
		int N;
		cin>>N;
		vector<int> h(N-1);
		for(auto &x:h)
			cin>>x;
		vector<bool> has(N+1);
		for(int x:h)
			has[x]=true;
		vector<int> not_has;
		for(int i=1;i<=N;i++){
			if(!has[i])
				not_has.push_back(i);
		}
		int cnt_one=count(h.begin(),h.end(),1);
		if(not_has.size()>2 || h.back()!=1 || (not_has.size()==2 && cnt_one!=2)){
			cout<<-1<<endl;
			continue;
		}
		vector<int> p(N);
		if(not_has.size()==1){
			p[0]=1;
			p[N-1]=not_has[0];
		}
		else{
			p[0]=not_has[0];
			p[N-1]=not_has[1];
		}
		int l=0,r=N-1;
		for(int i=0;i<N-1;i++){
			if(p[l]>p[r])
				p[++l]=h[i];
			else
				p[--r]=h[i];
		}
		for(int i=0;i<N;i++)
			cout<<p[i];
		cout<<endl;
	}
	return 0; 
}

好了,以上就是本期的全部内容了。我们下期再见!\(^o^)/~

友情提示:本期的代码都有问题,请不要无脑Ctrl C+Ctrl V

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

三月以来的黄金暴涨 ,华尔街都看不懂

本轮黄金大幅上涨无法按照美联储政策逻辑解释&#xff0c;央行的购金需求也无法合理化金价的历史新高&#xff0c;而金价的大涨也与黄金ETF流出相背&#xff0c;推动反弹的“神秘力量”令分析师困惑不已。 黄金上涨的情况往往会出现在美联储开启降息周期后&#xff0c;如果市场…

Linux 之 定时任务调度器-crond(crontab)服务

Linux系列文章&#xff1a; Windows本地如何添加域名映射&#xff1f;&#xff08;修改hosts文件&#xff09;_本机域名映射-CSDN博客 Linux安装mysq 8.0服务端和客户端(亲测保成功&#xff09;_linux安装mysql客户端-CSDN博客 linux-man命令的使用及练习_man命令执行后无法…

微服务架构下,如何通过弱依赖原则保障系统高可用?

前言 当我初次接触高可用这个概念的时候&#xff0c;对高可用的【少依赖原则】和【弱依赖原则】的边界感模糊&#xff0c;甚至有些“傻傻分不清楚”。这两个原则都关注降低模块之间的依赖关系&#xff0c;但它们之间的确存在某些差异。 那么&#xff0c;「少依赖原则」和「弱…

Windows深度学习环境----Cuda version 10.2 pytorch3d version 0.3.0

Requirements Python version 3.8.5Pytorch version: pytorch1.6.0 torchvision0.8.2 torchaudio0.7.0 cudatoolkit10.2.89pytorch3d version 0.3.0Cuda version 10.2 感觉readme文件里的不适配&#xff0c;跟pytorch官网不同 以前的 PyTorch 版本 |PyTorch的 # CUDA 10.2 c…

面板数据回归模型(二)房价的影响因素分析

1.数据来源 本文选择我国出一线城市房价均值、新一线城市房价均值、二线城市房价均值、货币供应量和利率。选取2002-2018年的数据,共17组数据,由于数据的自然对数变换不改变原有的协整关系,并能使其趋势线性化,消除时间序列中存在的异方差现象,所以对所有数据取其自然对数…

程序员简历程序员简历.pdf

你们在制作简历时&#xff0c;是不是基本只关注两件事&#xff1a;简历模板&#xff0c;还有基本信息的填写。 当你再次坐下来更新你的简历时&#xff0c;可能会发现自己不自觉地选择了那个“看起来最好看的模板”&#xff0c;填写基本信息&#xff0c;却没有深入思考如何使简历…

聊一下Redis实现分布式锁的8大坑

前两篇文章都在讲 Redis 的 5 大常用数据类型&#xff0c;以及典型的 10 大应用场景。 那么今天就来看看 Redis 实现分布式锁。 聊一聊Redis实现分布式锁的8大坑 Redis中5大常见数据类型用法 工作中Redis用的最多的10种场景 在分布式系统中&#xff0c;保证资源的互斥访问是…

新火种AI|拳打百度,脚踢阿里...令国产大模型危机感爆棚的kimi强势上线!

作者&#xff1a;小岩 编辑&#xff1a;冰冰 Sora大火后&#xff0c;生成式AI的高光时候终于轮到了国产大模型。2024年3月&#xff0c;Kimi智能助手在市场上掀起了一股狂热的热潮。 Kimi是由时下大火的AI初创公司——北京月之暗面科技有限公司所推出的一款智能助手&#xff…

自动化测试框架 - Unittest 学习笔记速查

文章目录 UnitTest 简介UnitTest 核心UnitTest 原理UnitTest 断言函数TestCase&#xff08;用例&#xff09;基本用法执行结果 TestFixture&#xff08;夹具&#xff09;方法级夹具类级夹具模块级夹具 TestSuite&#xff08;套件&#xff09;TestLoader&#xff08;加载器&…

文件/目录的权限和归属

一.文件/目录的权限和归属的简要分析与概括 1.程序访问文件时的权限&#xff0c;取决于此程序的发起者 * 进程的发起者&#xff0c;同文件的属主&#xff1a;则应用文件属主权限 *进程的发起者&#xff0c;属于文件属组&#xff1b;则应用文件属组权限 *应用文件“其它”权…

【云贝教育】Oracle 19c OCP 083题库解析(71)

本文为云贝教育郭一军&#xff08;微信&#xff1a;guoyJoe&#xff09;原创&#xff0c;请尊重知识产权&#xff0c;转发请注明出处&#xff0c;不接受任何抄袭、演绎和未经注明出处的转载。 71、Which two are true about an Oracle gold image-based installation in Oracle…

指尖论文靠谱不 #学习方法#媒体#职场发展

指尖论文是当前市场上一款非常实用的论文写作、查重、降重工具。许多学生、研究人员和教师都已经开始使用它&#xff0c;因为它相当靠谱、方便、易用且高效。 首先&#xff0c;指尖论文的查重功能非常强大&#xff0c;能够及时准确地检测出文本中的相似内容&#xff0c;帮助用户…

源清天木生物科技带您抢先体验2024国际生物发酵展

参展企业介绍 优质的种质资源是生物产业的核心&#xff0c;也是农业的核心&#xff01; 高效的选育优质的种质资源&#xff0c;是生物产业和农业最重要工作之一。 天木生物&#xff0c;致力于高效生物育种技术开发和特色生物育种装备开 发&#xff0c;并依托自主研发的技术和装…

揭秘强大的文件同步利器Rsycn

目录 引言 一、Rsycn基础介绍 &#xff08;一&#xff09;基本概念 &#xff08;二&#xff09;特性 &#xff08;三&#xff09;同步方式 &#xff08;四&#xff09;服务备份角色 &#xff08;五&#xff09;命令工具 &#xff08;六&#xff09;配置格式 &#xff…

[C++][C++11][六] -- [线程库]

目录 1.thread类的简单介绍2.线程对象的构造方法1.无参构造2.带参构造3.移动构造4.注意 3.thread提供的成员函数4.获取线程id5.线程函数的参数问题1.指针2.借助std::ref函数3.借助lambda表达式 6.join和detach1.join()2.detach() 7.[mutex](http://在C11中&#xff0c;Mutex总共…

OAuth2.0客户端和服务端Java实现

oauth2 引言 读了《设计模式之美》和《凤凰架构》架构安全篇之后&#xff0c;决定写一个OAuth2.0的认证流程的Demo&#xff0c;也算是一个阶段性的总结&#xff0c;具体原理实现见《凤凰架构》(架构安全设计篇)。 涉及到的源码可以从https://github.com/WeiXiao-Hyy/oauth2获…

智慧农场物联网系统:重塑农业的未来

随着科技的进步&#xff0c;物联网技术正在逐渐改变我们的生活。在农业领域&#xff0c;物联网系统也正在发挥着越来越重要的作用&#xff0c;为智慧农场的发展提供了新的可能。本文将深入探讨智慧农场物联网系统的优势、应用场景、技术实现以及未来发展趋势。 一、智慧农场物…

Java Web这一路走来

大部分Java应用都是Web或网络应用&#xff0c;MVC框架在Java框架中有着举足轻重的地位&#xff0c;一开始的Web应用并不现在这样子的&#xff0c;一步一步走来&#xff0c;每一步都经历了无数的血和泪的教训&#xff0c;以史为镜可以知兴替。 1. 草莽时代 早期的Java服务端技…

只有线上出了bug,老板们才知道测试的价值?

有同学说&#xff0c;测试没价值&#xff0c;我们测试团队刚被拆散了。 也有同学说&#xff0c;公司不重视测试&#xff0c;我觉得我们就是测试得太好了。哪天线上出个bug&#xff0c;老板们就知道测试的价值了。 还有人给测试同学规划职业发展路径&#xff0c;就是不做测试&…

蓝桥杯算法题:练功

【问题描述】 小明每天都要练功&#xff0c;练功中的重要一项是梅花桩。 小明练功的梅花桩排列成 n 行 m 列&#xff0c;相邻两行的距离为 1&#xff0c;相邻两列的距离也为 1。 小明站在第 1 行第 1 列上&#xff0c;他要走到第 n 行第 m 列上。小明已经练了一段时间&#xff…