差分約束 糖果

2022-05-12 19:40:34 字數 1750 閱讀 7300

幼兒園裡有n個小朋友,lxhgww老師現在想要給這些小朋友們分配糖果,要求每個小朋友都要分到糖果。但是小朋友們也有嫉妒心,總是會提出一些要求,比如小明不希望小紅分到的糖果比他的多,於是在分配糖果的時候,lxhgww需要滿足小朋友們的k個要求。幼兒園的糖果總是有限的,lxhgww想知道他至少需要準備多少個糖果,才能使得每個小朋友都能夠分到糖果,並且滿足小朋友們所有的要求。

經典題目;

值得吐槽的是,資料裡有乙個10w個點的鏈,已被t成狗......

只有正向從n到1向起點連邊才能過;

還有一種方法是最開始就把所有點放佇列裡;

通過率下降2個百分點;

1 #include2 #include3 #include4 #include

5 #include6 #include7 #include8 #include9 #include10 #include11 #include

12using

namespace

std;

13#define file "dealing"

14#define ll long long

15#define up(i,j,n) for(int i=j;i<=n;i++)

16#define pii pair< int , int >

17#define abs(x) (x)<0?-(x):(x)

18namespace

io21

intread()

24while(ch>='

0'&&ch<='9')

25return f?-x:x;26}

27 }using

namespace

io;28

bool chkmin(int &a,int b)

29bool chkmax(int &a,int b)

30const

int maxn(1000500),inf(100000000

);31

intn,m,s;

32struct

nodee[maxn<<2

];35

int linkk[maxn],len=0;36

void insert(int x,int y,int

v)42

int q[maxn+10],tail=0,head=0

,d[maxn],t[maxn];

43void print()

44bool

vis[maxn];

45int

main()

57if(x==3)insert(a,b,0

);58

if(x==4)62

if(x==5)insert(b,a,0

);63}64

for(int i=1;i<=n;i++)insert(0,i,1

);65 up(i,0,n)q[++tail]=i,d[i]=-inf,t[i]++,vis[i]=1;66

//關鍵中的關鍵

67 d[0]=0;68

while(head!=tail)82}

83}84 vis[x]=0;85

}86 ll ans=0;87

for(int i=1;i<=n;i++)ans+=d[i];

88 printf("

%lld\n

",ans);

89return0;

90 }

view code

差分約束 糖果

幼兒園裡有 n 個小朋友,老師現在想要給這些小朋友們分配糖果,要求每個小朋友都要分到糖果。但是小朋友們也有嫉妒心,總是會提出一些要求,比如小明不希望小紅分到的糖果比他的多,於是在分配糖果的時候,老師需要滿足小朋友們的 k 個要求。幼兒園的糖果總是有限的,老師想知道他至少需要準備多少個糖果,才能使得每...

差分約束 糖果

幼兒園裡有 nn 個小朋友,老師現在想要給這些小朋友們分配糖果,要求每個小朋友都要分到糖果。但是小朋友們也有嫉妒心,總是會提出一些要求,比如小明不希望小紅分到的糖果比他的多,於是在分配糖果的時候,老師需要滿足小朋友們的 kk 個要求。幼兒園的糖果總是有限的,老師想知道他至少需要準備多少個糖果,才能使...

分糖果 差分約束

description 幼兒園裡有n 個小朋友,lxhgww 老師現在想要給這些小朋友們分配糖果,要求每個小朋友都要分到糖果。但是小朋友們也有嫉妒心,總是會提出一些要求,比如小明不希望小紅分到的糖果比他的多,於是在分配糖果的時候,lxhgww 需要滿足小朋友們的 k個要求。幼兒園的糖果總是有限的,l...