輸入輸出
1.解決輸出的第一,二行,如果要把所以的命題都推一遍,可能要把所有入度為0的命題當成公理,所以先把入度0的命題當公理,入隊
2.將佇列裡面的公理跑單源最短路,就可以知道每個點最少需要幾次推理出來
">#define maxn 500010
using namespace std;
inline int read()//快讀
while(isdigit(ch))
return res*f;
}int dis[maxn];//最短路儲存
int n,head[maxn],tot,m,vis[maxn],qvis[maxn],nans[maxn],ans;
struct node
edge[maxn];
inline void add(int x,int y)//建邊 鄰接鍊錶
int du[maxn];
queueq;
inline void spfa()
}} }}
int main()
for(int i=1;i<=n;i++)
if(du[i]==0)q.push(i),nans[++ans]=i;//找入度為零的點,作為答案
spfa();
cout<
for(int i=1;i<=ans;i++)cout<
cout<
for(int i=1;i<=n;i++)cout<
return 0;
}
小W與身高
這道題需要二分在我前面第乙個比我高的人的位置,用二分是因為二分的時間複雜度較低這裡的check就是判斷當前這個是否大於a,題目說要用快讀,第一次竟然沒看到 快讀就是用char把要讀的東西讀進來,然後在轉成int,比普通的要快 include define ll long long using nam...
命題與命題的思考與應用
什麼是命題 命題的本質是什麼,自語言產生以來 人們的認識結果的一種展現,無論對錯。邏輯是命題組合後,一件事仍可行的的一種判斷 我們需要從它的實際應用中來窺得命題與邏輯的發展動力。命題是宣告了一種事實,並且能夠判斷真假的陳述句。生活中,數學上等都會遇到命題 由於有時候我們並不關心命題的內容,只關心它們...
小W的數字
如果設step n 表示n減到0的最小操作次數,顯然step有單調性。我們設f mx,n 表示把n減到0的最小操作次數,mx表示的是比n最高位還高的那些位的最大值。現在我們可以固定最高位,把剩餘位減到0,也就是遞迴計算,返回二元組 cost,dp 表示操作次數為cost,最終還可以額外減掉乙個dp。...