随机挑战总结 Part3

2024-01-30 10:08
文章标签 总结 随机 挑战 part3

本文主要是介绍随机挑战总结 Part3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

今天纪中没有题目,所以闲的发慌又来随机跳题。
上次由于被 d a l a o dalao dalao们嘲讽说题目太简单了 q w q qwq qwq,所以这次跳的是3道紫题。
然而我的题目还是最简单的 q w q qwq qwq
再次准备被 d a l a o dalao dalao嘲讽 ( 2 / 2147483647 ) (2/2147483647) (2/2147483647)
主要还是太菜了。本来跳的第三题是一个分层图最短路,然后敲完样例没过,调试的我都要被恶心死了。还要跑两遍,读入字符串,而且我的方法还是会 M L E MLE MLE q w q qwq qwq然后两位大爷为了不让我这么尴尬就让我换了一道题结果又是一道水题。
随机跳题总结:我永远是最菜的OIer qwq \color{white}\texttt{随机跳题总结:我永远是最菜的OIer qwq} 随机跳题总结:我永远是最菜的OIer qwq


题目:

  1. P 3554 [ P O I 2013 ] L U K − T r i u m p h a l a r c h P3554\ [POI2013]LUK-Triumphal\ arch P3554 [POI2013]LUKTriumphal arch
  2. P 4838 P4838 P4838 P哥破解密码
  3. P 3259 [ J L O I 2014 ] P3259\ [JLOI2014] P3259 [JLOI2014]路径规划(放弃 q w q qwq qwq
  4. P 1712 [ N O I 2016 ] P1712\ [NOI2016] P1712 [NOI2016]区间

T1T2水的一匹,感觉要被嘲讽 q w q qwq qwq

在这里插入图片描述
Link:XXY巨爷的随机跳题Part3总结 \color{red}\texttt{Link:XXY巨爷的随机跳题Part3总结} Link:XXY巨爷的随机跳题Part3总结


题解

T1 P 3554 [ P O I 2013 ] L U K − T r i u m p h a l a r c h P3554\ [POI2013]LUK-Triumphal\ arch P3554 [POI2013]LUKTriumphal arch

一道很简单的二分答案+树形 d p dp dp的题目。码量还贼小。
难度☆☆,不知道怎么被评上紫题的。
戳我:Link \color{blue}\texttt{戳我:Link} 戳我:Link


T2 P 4838 P4838 P4838 P哥破解密码

显然矩阵乘法,思路也很简单,不难想,写完结构体感觉为所欲为。
难度☆☆,不知道怎么被评上紫题的。
戳我:Link \color{blue}\texttt{戳我:Link} 戳我:Link


(伪)T3 P 3259 [ J L O I 2014 ] P3259\ [JLOI2014] P3259 [JLOI2014]路径规划

发现是分成图最短路,于是赶快去洛谷敲了一发 分层图最短路的模板。
然后来做这道题,发现这不是一般的恶心啊啊啊啊啊啊啊啊啊啊啊。
难度☆☆☆☆☆,依然不知道怎么被评上紫题的不应该是黑题吗
WA代码就不放了,改天闲的发慌再来改吧。


T3 P 1712 [ N O I 2016 ] P1712\ [NOI2016] P1712 [NOI2016]区间

思维好题。退一番发现可以用线段树维护。然后就在线段树的标记细节上搞了比较久,最终总算是搞出来了。
难度☆☆☆,算是正常的紫题了。
戳我:Link \color{blue}\texttt{戳我:Link} 戳我:Link


代码

T1
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;const int N=300010;
int n,x,y,tot,l,r,mid,f[N],head[N];struct edge
{int to,next;
}e[N*2];void add(int from,int to)
{e[++tot].to=to;e[tot].next=head[from];head[from]=tot;
}void dp(int x,int fa)
{int sum=0;for (int i=head[x];~i;i=e[i].next){int y=e[i].to;if (y!=fa){dp(y,x);sum+=f[y]+1;}}f[x]=max(0,sum-mid);
}int main()
{memset(head,-1,sizeof(head));scanf("%d",&n);for (int i=1;i<n;i++){scanf("%d%d",&x,&y);add(x,y); add(y,x);}l=0; r=n-1;while (l<=r){mid=(l+r)/2;dp(1,0);if (!f[1]) r=mid-1;else l=mid+1;}printf("%d\n",r+1);return 0;
}
T2
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;const ll MOD=19260817;
int n,m;struct matrix
{ll a[4][4];
}f,A,a;matrix operator *(matrix a,matrix b)
{matrix c;memset(c.a,0,sizeof(c.a));for(int i=1;i<=3;i++)for(int j=1;j<=3;j++)for(int k=1;k<=3;k++)c.a[i][j]=(c.a[i][j]+a.a[i][k]*b.a[k][j])%MOD;return c;
}void power(int M)
{for (;M;M>>=1,a=a*a)if (M&1) f=f*a;
}int main()
{//A.a[1][3]=A.a[2][1]=A.a[3][1]=A.a[3][2]=A.a[3][3]=1;A.a[3][1]=A.a[1][2]=A.a[1][3]=A.a[2][3]=A.a[3][3]=1;scanf("%d",&m);while (m--){memcpy(a.a,A.a,sizeof(A.a));memset(f.a,0,sizeof(f.a));f.a[1][1]=f.a[1][3]=1;scanf("%d",&n);power(n-1);printf("%lld\n",(f.a[1][1]+f.a[1][2]+f.a[1][3])%MOD);}return 0;
}
T3
#include <cstdio>
#include <algorithm>
using namespace std;const int N=500010,Inf=2e9;
int n,m,maxn,ans=Inf,b[N*2];struct node
{int l,r,len;
}a[N];struct Tree
{int l,r,maxn,lazy;
}tree[N*8];bool cmp(node x,node y)
{return x.len<y.len;
}void build(int x)
{if (tree[x].l==tree[x].r) return;int mid=(tree[x].l+tree[x].r)/2;tree[x*2].l=tree[x].l;tree[x*2].r=mid;tree[x*2+1].l=mid+1;tree[x*2+1].r=tree[x].r;build(x*2); build(x*2+1);
}void pushdown(int x)
{if (tree[x].lazy){tree[x*2].lazy+=tree[x].lazy;tree[x*2+1].lazy+=tree[x].lazy;tree[x*2].maxn+=tree[x].lazy;tree[x*2+1].maxn+=tree[x].lazy;tree[x].lazy=0;}
}void add(int x,int l,int r)
{if (tree[x].l==l && tree[x].r==r){tree[x].lazy++;tree[x].maxn++;return;}pushdown(x);int mid=(tree[x].l+tree[x].r)/2;if (r<=mid) add(x*2,l,r);else if (l>mid) add(x*2+1,l,r);else add(x*2,l,mid),add(x*2+1,mid+1,r);tree[x].maxn=max(tree[x*2].maxn,tree[x*2+1].maxn);
}void del(int x,int l,int r)
{if (tree[x].l==l && tree[x].r==r){tree[x].lazy--;tree[x].maxn--;return;}pushdown(x);int mid=(tree[x].l+tree[x].r)/2;if (r<=mid) del(x*2,l,r);else if (l>mid) del(x*2+1,l,r);else del(x*2,l,mid),del(x*2+1,mid+1,r);tree[x].maxn=max(tree[x*2].maxn,tree[x*2+1].maxn);
}int main()
{scanf("%d%d",&n,&m);for (int i=1;i<=n;i++){scanf("%d%d",&a[i].l,&a[i].r);a[i].len=a[i].r-a[i].l;b[2*i-1]=a[i].l; b[2*i]=a[i].r;}sort(b+1,b+1+n+n);int tot=unique(b+1,b+1+n+n)-b-1;for (int i=1;i<=n;i++){a[i].l=lower_bound(b+1,b+1+tot,a[i].l)-b;a[i].r=lower_bound(b+1,b+1+tot,a[i].r)-b;if (a[i].r>maxn) maxn=a[i].r;}tree[1].l=1; tree[1].r=maxn;build(1);sort(a+1,a+1+n,cmp);for (int r=1,l=0;r<=n;r++){add(1,a[r].l,a[r].r);if (tree[1].maxn>=m){do{l++;del(1,a[l].l,a[l].r);}while (tree[1].maxn>=m);if (a[r].len-a[l].len<ans) ans=a[r].len-a[l].len;}}if (ans<Inf) printf("%d\n",ans);else printf("-1");return 0;
}

这篇关于随机挑战总结 Part3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

MySQL基本查询示例总结

《MySQL基本查询示例总结》:本文主要介绍MySQL基本查询示例总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Create插入替换Retrieve(读取)select(确定列)where条件(确定行)null查询order by语句li

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解