这里的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;
}
}
刚上完课,咋样,现在代码给我发一下看看
别@了好吗
o对不起好的
看不出来啥错误,我要有题目要写,回见
o好的拜拜我也还有题目
今天没人帮我调试吗? 我开始随机@人了!
@栗子酱 @稻叶昙 @2345安全卫士 @张乐凡 @董子豪 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 @王建力 老师帮帮我吧 @郭子路 @桑铃茜
我自己都自顾不暇了是在帮不了你啊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;
}
3 3
0 4 4
4 0 4
4 4 0
正解输出 9,但我的代码输出 11