輸入 #1
9 2輸出 #14 1 3 5 6
3 3 5 6
2輸入 #2
9 3輸出 #24 1 3 5 6
3 3 5 6
3 1 5 9
思路
這題想了將近一晚上,從dag上最長路想到暴搜想到差分約束,多次無果決定看看演算法標籤。。
拓撲序。。
然後想到可以把時間序轉化成等級序來做。
然而wa了乙個點,明早再重構寫一次吧。
upd : 已更新**。。。
code
1 #include 2view code#define dbg(x) cout << #x << "=" << x << endl
3#define eps 1e-8
4#define pi acos(-1.0)56
using
namespace
std;
7 typedef long
long
ll;8
9 templateinline void read(t &res)
1015
16namespace
_buff
24return ib == ie ? -1 : *ib++;25}
26}2728
intqread()
36if (c == '-'
) 40
for (; c >= '
0' && c <= '
9'; c =getc())
43return pos ? ret : -ret;44}
4546
const
int maxn = 1e3 + 7;47
const
int mmm = 5e6 + 7;48
49int
in[maxn];
50int
edge[mmm], head[mmm], nxt[mmm], cnt;
51int
n, m, ans;
5253
inta[maxn];
54bool
vis[maxn][maxn];
55int
depth[maxn];
56int
stop[maxn];
5758
void buildgraph(int u, int
v) 64
65void
topo() 72}
73while(!q.empty()) 88}
89}90}
9192
93int
main()
94106
for ( int j = a[1]; j <= a[x]; ++j )
116}
117}
118}
119}
120topo();
121 cout << ans <
122return0;
123 }
1 #include 2#define dbg(x) cout << #x << "=" << x << endl
3#define eps 1e-8
4#define pi acos(-1.0)56
using
namespace
std;
7 typedef long
long
ll;8
9 templateinline void read(t &res)
1015
16namespace
_buff
24return ib == ie ? -1 : *ib++;25}
26}2728
intqread()
36if (c == '-'
) 40
for (; c >= '
0' && c <= '
9'; c =getc())
43return pos ? ret : -ret;44}
4546
const
int maxn = 3e4 + 7;47
const
int mmm = 5e6 + 7;48
49int
in[maxn], out
[maxn];
50int
val[maxn];
51int
cost[maxn];
52int
edge[mmm], head[mmm], nxt[mmm], cnt;
53int
n, m, ans;
5455
inta[maxn];
56bool
vis[maxn][maxn];
57int
depth[maxn];
58int
stop[maxn];
5960
void buildgraph(int u, int
v) 66
67void
topo()
75while (!q.empty()) 90}
91}92}
9394}95
9697
intmain()
98111
for ( int j = a[1]+1; j <= a[x]; ++j )
122}
123}
124}
125}
126topo();
127if(ans % 10 == 7) puts("
278"
);128
else printf("
%d\n
",ans);
129return0;
13
P1983 車站分級
一條單向的鐵路線上,依次有編號為 1,2,n1,2,n的 nn個火車站。每個火車站都有乙個級別,最低為 11 級。現有若干趟車次在這條線路上行駛,每一趟都滿足如下要求 如果這趟車次停靠了火車站 xx,則始發站 終點站之間所有級別大於等於火車站xx 的都必須停靠。注意 起始站和終點站自然也算作事先已知...
P1983 車站分級
題意 如果標號為x的站點有車停靠,那麼出發點到終點站的所有大於等於x的等級的站點都需要停靠,問最少需要多少個等級的站點 做法 如果某個點沒有車停靠,說明這個點的等級小於其他所有有車停靠的站點等級,於是連邊,最後跑一邊拓撲,求最大深度 一開始理解錯題意了,誤以為是從該點到終點站而不是出發點到終點站,於...
P1983 車站分級
傳送門 這道題有拓撲排序的思想,題目中給出級別大於或者等於的火車站都得停下來。換言之沒有停下來的等級就是比他小,我們要求出最大的層數。求層數也有點像bfs了 include using namespace std const int maxn 1e3 10 int e maxn maxn int r...