话题已被作者删除

这里的en单独放一个数组

@陈梓豪 我弄了结构体

吃瓜看戏

关于s的全删掉

外面添加一个函数f,用于计算最终到达的点和碰撞检测

void f(int l, int r){
	int cnt = 0, k = r+1;
	while(a[k-1].op == 1 && l < k){
		k--;
	}
	for(int i = k; i <= r; i++){
		en[++cnt] = node(w, a[i].p);
	}
	for(int i = l; i < k; i++){
		en[++cnt] = node(a[i].p, h);
	}
	for(int i = l; i <= r; i++){
		ans[a[i].id] = en[i-l+1];
	}
}

g数组不要了
这里改成

int l = 1;
hs[n+1].p = -1e18;
hs[n+1].t = 1e18;
for(int i = 2; i <= n+1; i++){
	if(a[i].cha != a[i-1].cha){
		f(l, i-1);
		l = i;
	}
}

然后这里

node结构体里添加构造函数

struct node{
	int x, y;
	node() {}
	node(int a, int b){
		x = a;
		y = b;
	}
}

接着就是这里

标 ← 的删掉
输入完之后把a数组排序,
sort(a+1, a+1+n, cmp)

bool cmp(per a, per b){
    if(a.cha == b.cha){
        if(a.op == b.op){
            if(a.op == 2){
                return a.p > b.p;
            }else{
                return b.p > a.p;
            }
        }else{
            return a.op > b.op;
        }
    }else{
        return a.cha > b.cha;
    }
}

@陈梓豪 为什么要这样?

@王钰宸涵 同上
image
image

刚上完课,咋样,现在代码给我发一下看看

@金杭东 e代码和原来一样没变

别@了好吗

o对不起好的

看不出来啥错误,我要有题目要写,回见

o好的拜拜我也还有题目

今天没人帮我调试吗? 我开始随机@人了!

@栗子酱 @稻叶昙 @2345安全卫士 @张乐凡 @董子豪 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 老师帮帮我吧 @郭子路 @桑铃茜

我自己都自顾不暇了是在帮不了你啊QWQ

@杨思越 巨佬你好得是普及+的应该比我强吧 qwq就帮帮我吧

向让你帮我调一下代码:

#define Code using
#define by namespace
#define stringdp100005 std
#include<bits/stdc++.h>
#define int long long
Code by stringdp100005;
int x,y;
int n,m,ans,cnt,ccnt; 
int f[1058428];
struct node{
	int u,v,w;
}a[1058428];
bool cmp(node x,node y){
	return x.w<y.w;
}
int fd(int x){
	if(f[x]==x) return x;
	return f[x]=fd(f[x]);
}
void jn(int x,int y){
	f[fd(x)]=fd(y);
}
void kruskal(){
	for(int i=1;i<=ccnt;i++){
		int u=fd(a[i].u),v=fd(a[i].v);
		if(u!=v){
			ans+=a[i].w;
			f[u]=v;
			if(++cnt==n-1) return ;
		} 
	}
	cout<<ans+(y-cnt)*x;exit(0);
}
signed main(){
	cin>>x>>y;
	for(int i=1;i<=y;i++) f[i]=i;
	for(int i=1;i<=y;i++){
		for(int j=1;j<=y;j++){
			int w;
			cin>>w;
			if(w){
				a[++ccnt].u=i;
				a[ccnt].v=j;
				a[ccnt].w=w;	
			}
		}
	}
	sort(a+1,a+ccnt+1,cmp);
	kruskal();
	cout<<ans+x;
	return 0;
}

84pts

@张乐凡 等一下排队哈,你是第三个来找我调题的等我解决完第二个的问题就来帮你(帮完你要帮我呦

3 3
0 4 4
4 0 4
4 4 0

正解输出 9,但我的代码输出 11