Gravatar

积分:91
提交:27 / 155
明明输出答案是对的 非要W 求助
#include<iostream>
#include<cstdio>
#include<queue>
#include<algorithm>
#include<cstring>
using namespace std;
#define road 10000+10
#define node 1000+10
struct Edge
{
int x,y,z,next;
Edge(int x=0,int y=0,int z=0,int next=0):
x(x),y(y),z(z),next(next){}
}edge[road];
struct date
{
int x,g,h;
bool operator < (const date &a) const
{
return g+h>a.g+a.h;
}
};
int nl,m,k,x,y,z,sumedge,s,e,size;
int head[node],ans[100+10],dis[node],cnt[node];
bool vis[node];
int add(int x,int y,int z)
{
edge[++sumedge]=Edge(x,y,z,head[x]);
return head[x]=sumedge;
}
void spfa()
{
queue <int> q;
memset(dis,127/3,sizeof(dis));
dis[s]=0;vis[s]=1;q.push(s);
while(!q.empty())
{
int now=q.front();q.pop();
vis[now]=0;
for(int i=head[now];i;i=edge[i].next)
{
int to=edge[i].y;
if(dis[to]>dis[now]+edge[i].z)
{
dis[to]=dis[now]+edge[i].z;
if(!vis[to])
{
vis[to]=1;
q.push(to);
}
}
}
}
}
void Astar()
{
priority_queue <date> qq;
qq.push((date){e,0,dis[e]});
while(!qq.empty())
{
date nn=qq.top();qq.pop();
++cnt[nn.x];
if(cnt[nn.x]>k)continue;
if(nn.x==s){
ans[++size]=nn.g;
}
if(cnt[s]==k){
return;
}
for(int i=head[nn.x];i;i=edge[i].next)
{
qq.push( (date){edge[i].y,nn.g+edge[i].z,dis[edge[i].y]});
}
}
return;
}
int main()
{
// freopen("cowjog.in ","r",stdin);
// freopen("cowjog.out","w",stdout);
scanf("%d%d%d",&nl,&m,&k);
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
if(x<y)swap(x,y);
add(x,y,z);
}
s=1;e=nl;
spfa();
memset(ans,-1,sizeof(ans));
Astar();
for(int i=1;i<=k;i++)
printf("%d\n",ans[i]);
return 0;
}

Gravatar
CSU_Turkey
积分:1722
提交:614 / 1589
我用了一种完全不对的树规过了9个点...可怕

Gravatar
test
积分:1074
提交:380 / 1216
回复 @MayLava :
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#define N 100010
#define lowbit ( (i) & (-i) )
#define LL long long
using namespace std;
struct point{
int x,y;
void read(){scanf("%d%d",&x,&y);}
}p[N];
struct seg{
int h1,h2,h3,flag;
seg() {}
seg(int x,int y,int z,int a):h1(x),h2(y),h3(z),flag(a) {}
}s[N];
int tree[N],n,tot,sz,sub[N];
void Insert(int pos,int num){for(int i=pos;i<N;i+=lowbit)tree[i]+=num;}
int Query(int pos){int sum(0);for(int i=sum;i;i-=lowbit)sum+=tree[i];return sum;}
int find(int x){
return lower_bound(sub+1,sub+sz+1,x)-sub;
}
void link(int ff,int l,int r,int h){//0横线,//1竖线
if(!ff){
s[++tot]=seg(find(l),find(r),h,0);
}else {
int X=find(h);
s[++tot]=seg(X,X,l,1);
s[++tot]=seg(X,X,r,-1);
}
}
bool comp(const point & a,const point & b){return a.x==b.x?a.y<b.y:a.x<b.x;}
bool Comp(const point & a,const point & b){return a.y==b.y?a.x<b.x:a.y<b.y;}
bool COMP(const seg & a,const seg & b){
if(a.h3!=b.h3)return a.h3<b.h3;
return a.flag<b.flag;
}
void build(){
sort(p+1,p+n+1,comp);
for(int i=2;i<=n;++i)
if(p[i].x==p[i-1].x)
link(1,p[i-1].y,p[i].y,p[i].x);
sort(p+1,p+n+1,Comp);
for(int i=2;i<=n;++i)
if(p[i].y==p[i-1].y)
link(0,p[i-1].x,p[i].x,p[i].y);
sort(s+1,s+tot+1,COMP);
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i)p[i].read(),sub[++sub[0]]=p[i].x;
sort(sub+1,sub+sub[0]+1);
sz=unique(sub+1,sub+sub[0]+1)-sub-1;
build();LL Ans(0);
for(int i=1;i<=tot;++i){
if(!s[i].flag)Ans+=Query(s[i].h2)-Query(s[i].h1-1);
else {
Insert(s[i].h1,s[i].flag);
}
}cout<<Ans;
return 0;
}

题目 1 加法问题
2017-09-05 22:51:53
Gravatar
CSU_Turkey
积分:1722
提交:614 / 1589
w了一个点..

Gravatar
AAAAAAAAAA
积分:3259
提交:759 / 1404
暴力rank1

题目 2097 不平凡的boss
2017-09-05 21:53:56
Gravatar
Shirry
积分:2255
提交:554 / 1107
陷入LCA的错解中……

题目 2095 不平凡的引线
2017-09-05 21:18:42
Gravatar
JustWB
积分:619
提交:222 / 519
终于过了..........

Gravatar
Hyoi_0Koto
积分:1188
提交:297 / 652
回复 @COGS再见 :
自我检讨

Gravatar
HeHe
积分:1192
提交:426 / 866
别的不说,先打个表。。

Gravatar
kZime
积分:1101
提交:334 / 677

Gravatar
CSU_Turkey
积分:1722
提交:614 / 1589
又练习一发分块

题目 247 售票系统
2017-09-05 17:22:20
Gravatar
CSU_Turkey
积分:1722
提交:614 / 1589
说好的模板题交了n次...
建树的时候不是1—n而是1——n-1
查询的时候也有点小小的细节

Gravatar
CSU_Turkey
积分:1722
提交:614 / 1589
好气

题目 247 售票系统
2017-09-05 16:41:25
Gravatar
cstdio
积分:4745
提交:1198 / 2108
回复 @GJ-shirry :
是的……

Gravatar
cstdio
积分:4745
提交:1198 / 2108
坑点:打阶乘表算组合数,这个表应该开多大……

Gravatar
liuyu
积分:1191
提交:265 / 675
为什么我的输出和第一个点一样,却判我w

Gravatar
Shirry
积分:2255
提交:554 / 1107
写到哭

Gravatar
CSU_Turkey
积分:1722
提交:614 / 1589
离散化+差分
200t留念

Gravatar
AAAAAAAAAA
积分:3259
提交:759 / 1404
烧内存

Gravatar
AAAAAAAAAA
积分:3259
提交:759 / 1404
自己脑洞的可持久化线段树,因为缺乏理论指导,代码丑的要死

题目 2554 可持久化线段树
2017-09-05 09:55:28