1. 程式人生 > >BZOJ2330-[SCOI2011]糖果

BZOJ2330-[SCOI2011]糖果


題解:
差分約束系統,按照題意連邊,由於每個小朋友都要有糖果,所有0向所有小朋友連一條1的邊,然後做最長路就可以了。
Code

#include<bits/stdc++.h>
#define N 100005
#define ll long long
using namespace std;
int n,k,tot,q[N],head[N],b[N],dist[N],vis[N];
long long ans;
struct node
{
    int vet,next,len;
}edge[4*N];
void add(int u,int v,int w)
{
    edge[++tot].vet=v;
    edge[tot].next
=head[u]; edge[tot].len=w; head[u]=tot; } bool spfa() { int head1=0,tail=1,u; q[0]=0;vis[0]=1;b[0]=1; while(head1!=tail) { u=q[head1++]; if(head1==N)head1=0; for(int i=head[u];i!=-1;i=edge[i].next) { int v=edge[i].vet; if(dist[u]+edge[i].len>dist[v]) { dist[v]=dist[u]+edge[i].len; if
(++b[v]>=n)return 0; if(!vis[v]) { vis[v]=1; q[tail++]=v; if(tail==N)tail=0; } } } vis[u]=0; } return 1; } int main() { scanf("%d%d",&n,&k); memset(head,-1
,sizeof(head)); while(k--) { int x,a,b; scanf("%d%d%d",&x,&a,&b); if(x==1){add(a,b,0);add(b,a,0);}else if(x==2){if(a==b){printf("-1");return 0;}add(a,b,1);}else if(x==3)add(b,a,0);else if(x==4){if(a==b){printf("-1");return 0;}add(b,a,1);}else add(a,b,0); } for(int i=n;i>0;i--)add(0,i,1); if(!spfa()){printf("-1");return 0;} for(int i=1;i<=n;i++)ans+=dist[i]; printf("%lld\n",ans); return 0; }

相關推薦

bzoj2330 [SCOI2011]糖果

也有 ems i++ zoj cstring page ext 最長 head 2330: [SCOI2011]糖果 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 6415 Solved: 2120[Submit][St

[BZOJ2330][SCOI2011]糖果 差分約束系統+最短路

題目中的 con blog problem 鏈接 cst pop zoj inline 題目鏈接:http://www.lydsy.com/JudgeOnline/problem.php?id=2330 類似於題目中這種含有不等式關系,我們可以建立差分約束系統來跑最長路或

bzoj2330: [SCOI2011]糖果 (利用差分約束系統將之轉換成最長路的問題)

問題 時間限制 接下來 show ems 輸入 als include while 題目 2330: [SCOI2011]糖果 時間限制: 10 Sec 內存限制: 128 MB 題目描述 幼兒園裏有N個小朋友,lxhgww老師現在想要給這些小朋友們分配糖

BZOJ2330-[SCOI2011]糖果

題解: 差分約束系統,按照題意連邊,由於每個小朋友都要有糖果,所有0向所有小朋友連一條1的邊,然後做最長路就可以了。 Code:Code: #include<bits/stdc++.h&

BZOJ2330 SCOI2011 糖果 【查分約束】

BZOJ2330 SCOI2011 糖果 Description 幼兒園裡有N個小朋友,lxhgww老師現在想要給這些小朋友們分配糖果,要求每個小朋友都要分到糖果。但是小朋友們也有嫉妒心,總是會提出一些要求,比如小明不希望小紅分到的糖果比他的多,於是

[BZOJ2330][SCOI2011]糖果(差分約束)

題目描述 傳送門 題解 差分約束系統,模型是很好建的,求最小值轉化成跑最長路。 把大於小於號都轉化為大於等於和小於等於。對於x=1的情況建立2個不等式就可以解決。 想著剛碼完資料結構就挑了

[BZOJ2330] [SCOI2011] 糖果 [差分約束][單源最短路][縮點][拓撲排序]

link SPFA 題目要求求最小值。 建原點0\mathfrak{0}0,也就是要∑dis[x]−dis[0]\mathfrak{\sum{dis[x]-dis[0]}}∑dis[x]−dis[0] 最小。 最小值受到dis[x]−dis[0]≥val[x

BZOJ2330 [SCOI2011]糖果 差分約束模板

很久以前學的差分約束,基本忘了,複習一下 a<=b+c,ins(b,a,c)是最短鏈,每個元素最大 a>=b+c,ins(b,a,c)是最長鏈,每個元素最小 #include<bits/stdc++.h> #pragma comment(link

【題解】洛谷P3275(bzoj2330)[SCOI2011]糖果 差分約束

題目連結 設每個小朋友得到的糖果數為 ccc {x=1ca−cb≥0且cb−ca≥0x=2cb−ca≥1x=3ca−cb≥0x=4ca−cb≥1x=5cb−ca≥0\begin{cases}x=1\quad c_a-c_b\geq0且c_b-c_a\geq

[luoguP3275] [SCOI2011]糖果(差分約束)

cli open inline none long cst aps ret 糖果 傳送門 差分約束裸題 但是坑! 有一個點是長為10W的鏈,需要逆序加邊才能過(真是玄學) 還有各種坑爹數據 開longlong ——代碼

[luogu P3275] [SCOI2011]糖果

blog scoi2011 i++ ons 技術分享 糖果 但是 main empty [luogu P3275] [SCOI2011]糖果 題目描述 幼兒園裏有N個小朋友,lxhgww老師現在想要給這些小朋友們分配糖果,要求每個小朋友都要分到糖果。但是小朋友們也有嫉妒

P3275 [SCOI2011]糖果

一行 adg add push 並且 輸出 div push_back 輸入輸出 題目描述 幼兒園裏有N個小朋友,lxhgww老師現在想要給這些小朋友們分配糖果,要求每個小朋友都要分到糖果。但是小朋友們也有嫉妒心,總是會提出一些要求,比如小明不希望小紅分到的糖果比他的多,於

[SCOI2011]糖果

class push radi radius ace main 個數 朋友 dig 題目描述 幼兒園裏有N個小朋友,lxhgww老師現在想要給這些小朋友們分配糖果,要求每個小朋友都要分到糖果。但是小朋友們也有嫉妒心,總是會提出一些要求,比如小明不希望小紅分到的糖果比他的多,

BZOJ 2330 [SCOI2011]糖果

差分 ans style {0} long long stream -- sha 反向 題解:差分約束 怎麽才可以卡掉Spfa與正反向建邊的關系 在不T的情況下要多入隊幾次才能判出負環 出題人SangxinBingkuang #include<iostream>

洛谷P3275 [SCOI2011]糖果 [差分約束系統]

c++ mes line blank num problem 輸入輸出格式 分析 reg   題目傳送門 糖果 題目描述 幼兒園裏有N個小朋友,lxhgww老師現在想要給這些小朋友們分配糖果,要求每個小朋友都要分到糖果。但是小朋友們也有嫉妒心,總是會提出一些要求,比如

題解:[SCOI2011]糖果

依舊是比較明顯的差分約束 注意對於五種操作分別對應的連邊方式 然後注意head的初始值判斷,要不然總是超時……今天遇到好幾次了 建圖時加個小剪枝,否則會TLE 1 #include<iostream> 2 #include<cstdio> 3 #include&

[Luogu 3275] SCOI2011 糖果

[Luogu 3275] SCOI2011 糖果 第一道差分約束。感謝 AZe。 我的理解是根據一些不等關係建一個圖,在圖上邊跑一個最長路(有時候是最短路)。 因為可能存在負環,所以必須用 SPFA! 好神奇啊,圖論好強強啊。 然而 Capella 慘慘,用上了 0 號節點卻從 1 開

【差分約束】SCOI2011糖果 P3275 [SCOI2011]糖果

P3275 [SCOI2011]糖果 快noip了我還在幹什麼啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 來我們看這道題 根據條件建圖, 因為求得是最小值, 所以要跑最長路qwq(這是我記住的QAQ 不想寫了讓我們直接看看題解吧! P3275 [SCOI2011]糖果(five20的題解) 有環

【差分約束】SCOI2011糖果

from line esp har org alt ans img i++ P3275 [SCOI2011]糖果 快noip了我還在幹什麽啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 來我們看這道題 根據條件建圖, 因為求得是最小值, 所以要跑最長路qwq(這是我記住

BZOJ2330糖果

題目連結:https://www.lydsy.com/JudgeOnline/problem.php?id=2330   差分約束系統的模板題吧,一看題目各種不等式。。。 因為是要求最小值,所以我們選擇跑最長路好了。根據題目描述建邊,這個應該不難,x=1就是建從a到b和從b到a的邊權為0的