大佬求救!第三个点WA,90分

P2761 软件补丁问题

```cpp #include<iostream> #include<cstdio> #include<cstring> #include<vector> #include<algorithm> #include<deque> #include<queue> typedef long long LL; #define Cl(X) memset(X,0,sizeof(X)) #define Lowbit(X) (X&(-X)) #define INF 0x7fffffff using namespace std; LL Mis,Mend,Time[105],B1[105],B2[105],F1[105],F2[105],Dist[(1<<20)+5]; char Ch; bool Vis[(1<<20)+5]; queue<LL>Emm; inline void SPFA() { Dist[(1<<Mis)-1]=0,Vis[(1<<Mis)-1]=true; Emm.push((1<<Mis)-1); while(!Emm.empty()) { LL Temp=Emm.front(); Emm.pop(); Vis[Temp]=false; for(LL i=1;i<=Mend;i++) { if((Temp | B1[i])!=Temp || (Temp & B2[i])) continue; LL X=Temp;X=X^(F1[i] & X);X|=F2[i]; if(Dist[Temp]+Time[i]<Dist[X]) { Dist[X]=Dist[Temp]+Time[i]; if(Vis[X]) continue; Vis[X]=true; Emm.push(X); } } } } int main(){ memset(Dist,0x3f,sizeof(Dist)); scanf("%lld %lld",&Mis,&Mend); for(LL i=1;i<=Mend;i++) { scanf("%lld",&Time[i]); for(LL j=0;j<Mis;j++) { cin>>Ch;B1[i]<<=1;B2[i]<<=1; if(Ch=='+') B1[i]++; if(Ch=='-') B2[i]++; } for(LL j=0;j<Mis;j++) { cin>>Ch;F2[i]<<=1;F1[i]<<=1; if(Ch=='+') F2[i]++; if(Ch=='-') F1[i]++; } }//1061109567 SPFA(); if(Dist[0]==0x3f3f3f3f3f3f3f3f) printf("0\n"); else printf("%lld\n",Dist[0]); return 0; } ```
by JK_LOVER @ 2019-11-30 11:10:01


LL的最大值搞错了||@[DeNeRATe](/user/38171)
by JK_LOVER @ 2019-11-30 11:10:29


你是吧dis当做int处理的
by JK_LOVER @ 2019-11-30 11:11:42


|