10 31 zroj 數分考試

2021-08-30 13:37:53 字數 2328 閱讀 8957

上了大學後,小s迎來了自己的第一次數分考試。一共有nn個人參加了考試。

無聊的助教決定不告訴大家每個人的名次,而是讓大家自己猜。

首先,大家知道了第ii個人的名次區間是[li,ri][li,ri]。

除此之外,又有mm條其他資訊,形如ui,viui,vi,表示第uiui個人考的要比vivi好(即排名更低)。

現在,小s想要知道,是否有乙個合法的排名,滿足上述所有的要求。如果有,請輸出任意一組解,否則輸出"-1"(不含括號)。

輸入格式

第一行兩個整數 n,mn,m,表示人數和限制條數。

接下來nn行,每行兩個正整數li,rili,ri。

接下來mm行,每行兩個正整數ui,viui,vi。

輸入格式

如果無解輸出-1。

否則輸出nn行,每行11個整數,其中第ii個表示第ii名的id。編號從1開始。

樣例1input

3 31 3

1 31 3

1 22 3

3 1output

-1樣例2

input

3 31 3

1 31 3

1 22 3

1 3output12

3限制與約定

對於 10%10% 的資料,滿足 n,m≤10n,m≤10。

對於 30%30% 的資料,滿足 n,m≤100n,m≤100。

對於 60%60% 的資料,滿足 n≤105,m≤105n≤105,m≤105。

對於 100%100% 的資料,滿足 n≤3×105,m≤106n≤3×105,m≤106。

時間限制:2 s

空間限制:512 mb

故事的後續

小s雖然考了97,但是他驚喜地發現全班的前25%25%是96分。

考慮topsort,但topsort每個位置必定不唯一,那麼我們就把i的topsort盡量移動到給定的【li,ri】裡。

假如我們的topsort已經考慮到第x位,那麼任意li用兩個priority_queue維護一下

#include#include#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int inf=0x3f3f3f3f;

inline int read()

while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();

return x*f;

}const int n=3e5+100;

const int m=1e6+100;

int l[n],r[n];

struct node

edge[m];

int head[n],cnt;

void add(int u,int v)

int in[n];

int topsort[n];

priority_queue > q;

priority_queue > qr;

int main()

for(i=1;i<=m;i++)

for(i=1;i<=n;i++) }

int cnt=1;

int x;

for(i=1;i<=n;i++)

}} else

else if(vis[x])return;

now[x]=1;

for(int i=0;ivis[x]=1;

now[x]=0;

}int main()

for(i=1;i<=n;i++)

if(!d[i]&&!vis[i])dfs(i);

for(i=1;i<=n;i++)

if(!d[i])ql.push(mp(-le[i],i));

t=1;

while(!ql.empty()&&-ql.top().fi<=t)

qr.push(mp(-ri[ql.top().se],ql.top().se)),ql.pop();

while(!qr.empty())

id[t]=x;t++;

for(i=0;iif(d[v[x][i]])

while(!ql.empty()&&-ql.top().fi<=t)

qr.push(mp(-ri[ql.top().se],ql.top().se)),ql.pop();

} for(i=1;i<=n;i++)if(!id[i])

for(i=1;i<=n;i++)printf("%d\n",id[i]);

return 0;

}

1031 素數求和問題

素數求和問題 time limit 1000ms memory limit 65536k total submit 245 accepted 160 description 現在給你n個數現在要求你寫出乙個程式,找出這n個數中的所有素數,並求和。input 第一行給出整數m 0每組測試資料第一行給你...

Python學習筆記10 31

如果您正在編寫ros節點,則需要匯入std msgs.msg匯入是為了我們可以呼叫std msgs string訊息型別 乙個簡單的字串容器 進行發布。deftalker pub rospy.publisher chatter string,queue size 10 這部分 定義了talker與r...

1031 雜湊表(上)

目錄 一 雜湊表的由來?二 如何設計雜湊函式?三 雜湊衝突的解決方法?四 思考 1.雜湊表 於陣列,它借助雜湊函式對陣列這種資料結構進行擴充套件,利用的是陣列支援按照下標隨機訪問元素的特性。2.需要儲存在雜湊表中的資料我們稱為鍵,將鍵轉化為陣列下標的方法稱為雜湊函式,雜湊函式的計算結果稱為雜湊值。3...