10.20模拟赛
T1
传送门
本题是我有史以来第一次在比赛中打出线段树,然而他MLE了。。。
正解其实很简单,就是用一个时间戳数组维护一个点上一次修改的值有没有修改,然后需要算当前点的值的时候在修改就可以了。
code
#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
//#define int long long
#define N 10000100
#define rs x<<1|1
#define ls x<<1
using namespace std;
int a[N],p,t[N],n,q,res,now;//now是上一次修改的值,a存放每一个点的值,t存放上一次修改成了什么值
inline int read(){int x=0,f=1;char ch=getchar();while(!isdigit(ch)){f=ch!='-';ch=getchar();}while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return f?x:-x;}
signed main()
{
n=read();q=read();
while(q--)
{
int op,x,y;
op=read();
if(op==1)
{
x=read();
y=read();
if(t[x]==now)res=res+(y-a[x]);//如果当前点的值是已经修改过的就直接修改
else res=res+y-p;//否则就用修改了的值计算
a[x]=y-p;//当前点的值更新一下
t[x]=now;//更新当前点上一次更新的值
printf("%lld\n",res);//输出
}
else if(op==2)
{
x=read();
y=read();
res+=y;//无论如何res都要加y
if(t[x]==now)a[x]+=y;//等于就直接加
else t[x]=now,a[x]=p+y;//否则就修改
printf("%lld\n",res);//输出
}
else if(op==3)
{
y=read();
now++;//当前点的修改次数加一
p=y;//存下修改的值
res=p*n;//更新res
printf("%lld\n",res);//输出
}
}
return 0;//好习惯
}
T2
题面
这道题一开始我看了之后就觉得不可做,所以我就直接放了。
正解需要拓扑排序,首先入度为零的话那就一定是个起点,然后根据这些起点跑一个SPFA来求最长路,遍历一下输出答案就好了。。
code
#include<bits/stdc++.h>
#define int long long
using namespace std;
struct sb{int v,next,w;}e[1000100];
int head[1000100],cnt,ru[100010];
inline void add(int u,int v,int w)//存边函数
{
e[++cnt].v=v;
e[cnt].w=w;
e[cnt].next=head[u];
head[u]=cnt;
return ;
}
int n,m,f[100010];//f是当前起点到终点的最长路
queue<int>q;//队列
signed main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int u,v,w;
cin>>u>>v>>w;
add(u,v,w);
ru[v]++;//入度
}
for(int i=1;i<=n;i++)
if(ru[i]==0)
q.push(i);//入读为零是起点入列
while(!q.empty())//不空
{
int x=q.front();//取出下标
q.pop();
for(int i=head[x];i;i=e[i].next)//遍历相连的边
{
if(f[e[i].v]<f[x]+e[i].w)//如果当前点的距离小于
f[e[i].v]=f[x]+e[i].w;//替换
ru[e[i].v]--;//入度减一
if(ru[e[i].v]==0)//入度为零了就入列
q.push(e[i].v);
}
}
int ans=0;//答案
for(int i=1;i<=n;i++)
ans=max(ans,f[i]);//遍历求最大值
cout<<ans<<endl;//输出答案
return 0;//好习惯
}
T3
作者: 北烛青澜
出处:https://www.cnblogs.com/Multitree/articles/16811571.html
本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!