BZOJ2330-[SCOI2011]糖果
題解:
差分約束系統,按照題意連邊,由於每個小朋友都要有糖果,所有0向所有小朋友連一條1的邊,然後做最長路就可以了。
#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的