论极致压行?

P5008 [yLOI2018] 锦鲤抄

~~这程序给我压行,只要2行~~
by REFLAME_ASH @ 2018-11-06 16:16:27


![Pic](https://www.superbed.cn/pic/5be14dd19dc6d6b928f19e07)
by Sue_Shallow @ 2018-11-06 16:16:56


把最后一个大括号压进去就进30了。 # 真好。 Giao。
by Sue_Shallow @ 2018-11-06 16:18:12


如果你真想压可以压到三行。 ``` 从前,压行是为了简明扼要地表示逻辑关系。 现在,压行是为了。。我TM也不知道你们这样有什么意义。 ```
by Nero_Claudius @ 2018-11-06 16:18:52


@[Yeasion_Nein](/space/show?uid=60528) %%%%%
by 皎月半洒花 @ 2018-11-06 16:21:53


我发现我真是闲啊。 我竟然则这儿卡了十来分钟的常。(笑哭
by Sue_Shallow @ 2018-11-06 16:23:45


@[Yeasion_Nein](/space/show?uid=60528) 哦 # 可这跟LZR宇宙第一有什么关系
by 皎月半洒花 @ 2018-11-06 16:26:03


要我压就这样 `#include <cstdio>` `#include <algorithm>` `using namespace std ; inline int Read() { register int X = 0 ; register char ch = getchar() ; while(ch < '0' || ch > '9') ch = getchar() ; while(ch <= '9' && ch >= '0') X = (X << 1) + (X << 3) + (ch ^ 48), ch = getchar() ; return X ; } const int MAXN = 500010, MAXM = 2000010 ; struct Node{ int From, To, Next ;} Edge[MAXM] ; int Head[MAXN], Total, Dfn[MAXN], Low[MAXN], Deep, Cnt, Flag[MAXN], N, M, K, Stack[MAXN] ; int Insta[MAXN], Top, Belong[MAXN], Est[MAXN], MIN[MAXN], Finally[MAXN], All, Data[MAXN], Ans ; inline void Tarjan(register int Now) { Dfn[Now] = Low[Now] = ++ Deep ; Stack[++ Top] = Now ; Insta[Now] = 1 ; for(register int i = Head[Now]; i; i = Edge[i].Next) if (! Dfn[Edge[i].To]) Tarjan(Edge[i].To), Low[Now] = min(Low[Now], Low[Edge[i].To]) ; else if (Insta[Edge[i].To]) Low[Now] = min(Low[Now], Dfn[Edge[i].To]) ; if(Low[Now] == Dfn[Now]) { Cnt ++ ; register int Pass ; do { Pass = Stack[Top --] ; Belong[Pass] = Cnt ; Insta[Pass] = 0 ; if (Est[Cnt] > Data[Pass]) MIN[Cnt] = Pass, Est[Cnt] = Data[Pass] ; }while (Now != Pass) ; } } int main() { N = Read(), M = Read(), K = Read() ; for (int i = 1 ; i <= N ; i ++) Est[i] = 0x7fffffff ; for(register int i = 1; i <= N; ++ i) Data[i] = Read() ; for(register int i = 1; i <= M; ++ i) { register int F = Read(), T = Read() ; Total ++ ; Edge[Total].From = F, Edge[Total].To = T, Edge[Total].Next = Head[F], Head[F] = Total ; } for(register int i = 1; i <= N; ++ i) if(! Dfn[i]) Tarjan(i) ; for(register int i = 1; i <= M; ++ i) if(Belong[Edge[i].From] != Belong[Edge[i].To]) Flag[Belong[Edge[i].To]] = 1 ; for(register int i = 1; i <= Cnt; ++ i) if(! Flag[i]) Data[MIN[i]] = - 1 ; for(register int i = 1; i <= N; ++ i) if(Data[i] != -1) Finally[++ All] = - Data[i] ; nth_element(Finally + 1, Finally + K + 1, Finally + All + 1) ; for(register int i = 1; i <= K; ++ i) Ans -= Finally[i] ; printf("%lld", Ans) ; return 0 ; }`
by NoBDKnowsBeterThanME @ 2018-11-06 16:34:50


`#include <bits/stdc++.h>` `using namespace std ; inline int Read() { register int X = 0 ; register char ch = getchar() ; while(ch < '0' || ch > '9') ch = getchar() ; while(ch <= '9' && ch >= '0') X = (X << 1) + (X << 3) + (ch ^ 48), ch = getchar() ; return X ; } const int MAXN = 500010, MAXM = 2000010 ; struct Node{ int From, To, Next ;} Edge[MAXM] ; int Head[MAXN], Total, Dfn[MAXN], Low[MAXN], Deep, Cnt, Flag[MAXN], N, M, K, Stack[MAXN] ; int Insta[MAXN], Top, Belong[MAXN], Est[MAXN], MIN[MAXN], Finally[MAXN], All, Data[MAXN], Ans ; inline void Tarjan(register int Now) { Dfn[Now] = Low[Now] = ++ Deep ; Stack[++ Top] = Now ; Insta[Now] = 1 ; for(register int i = Head[Now]; i; i = Edge[i].Next) if (! Dfn[Edge[i].To]) Tarjan(Edge[i].To), Low[Now] = min(Low[Now], Low[Edge[i].To]) ; else if (Insta[Edge[i].To]) Low[Now] = min(Low[Now], Dfn[Edge[i].To]) ; if(Low[Now] == Dfn[Now]) { Cnt ++ ; register int Pass ; do { Pass = Stack[Top --] ; Belong[Pass] = Cnt ; Insta[Pass] = 0 ; if (Est[Cnt] > Data[Pass]) MIN[Cnt] = Pass, Est[Cnt] = Data[Pass] ; }while (Now != Pass) ; } } int main() { N = Read(), M = Read(), K = Read() ; for (int i = 1 ; i <= N ; i ++) Est[i] = 0x7fffffff ; for(register int i = 1; i <= N; ++ i) Data[i] = Read() ; for(register int i = 1; i <= M; ++ i) { register int F = Read(), T = Read() ; Total ++ ; Edge[Total].From = F, Edge[Total].To = T, Edge[Total].Next = Head[F], Head[F] = Total ; } for(register int i = 1; i <= N; ++ i) if(! Dfn[i]) Tarjan(i) ; for(register int i = 1; i <= M; ++ i) if(Belong[Edge[i].From] != Belong[Edge[i].To]) Flag[Belong[Edge[i].To]] = 1 ; for(register int i = 1; i <= Cnt; ++ i) if(! Flag[i]) Data[MIN[i]] = - 1 ; for(register int i = 1; i <= N; ++ i) if(Data[i] != -1) Finally[++ All] = - Data[i] ; nth_element(Finally + 1, Finally + K + 1, Finally + All + 1) ; for(register int i = 1; i <= K; ++ i) Ans -= Finally[i] ; printf("%lld", Ans) ; return 0 ; }`
by NoBDKnowsBeterThanME @ 2018-11-06 16:36:44


# FAKE !! QAQ~ 花姐姐定理:在任何维度,都存在花姐姐使得花姐姐比LZR强。 LZR定理:在任何维度,存在LZR的宇宙级别,都相当于存在花姐姐宇宙的夸克级别或者更小。 花姐姐定律:在任何维度,都存在花姐姐最强。 LZR定律:在任何维度,都存在LZR最弱。
by Sue_Shallow @ 2018-11-06 16:37:39


| 下一页