这道题之前没注意到at least,审题不仔细啊,两个问题解法还是有些许区别的
有at least的
#include <iostream> #include <string> #include <cstring> #include <cstdlib> #include <cstdio> #include <cmath> #include <algorithm> #include <stack> using namespace std; #define mem(a,b) memset(a,b,sizeof(a)) #define pf printf #define sf scanf #define debug printf("!\n") #define INF 10000 #define MAX(a,b) a>b?a:b #define blank pf("\n") #define LL long long int a[5],b[5],tt[5]; int main() { int i,j,r,t; int res=0; mem(tt,0); for(i=0;i<3;i++) { sf("%d",&a[i]); } for(i=0;i<3;i++) { sf("%d",&b[i]); } //pf("sum%d\n",sum); for(i=0;i<3;i++) { int tmp = a[i]-b[i]; //pf("tmp%d\n",tmp); if(tmp<0) tt[i]=tmp; else { res+=tmp/2; tt[i]=0; } } for(i = 0;i<3;i++) res+=tt[i]; //pf("n%d p%d\n",n,p); if(res>=0) pf("Yes\n"); else pf("No\n"); return 0;
无at least的,即exactly(应该是对的)
#include <iostream> #include <string> #include <cstring> #include <cstdlib> #include <cstdio> #include <cmath> #include <algorithm> #include <stack> using namespace std; #define mem(a,b) memset(a,b,sizeof(a)) #define pf printf #define sf scanf #define debug printf("!\n") #define INF 10000 #define MAX(a,b) a>b?a:b #define blank pf("\n") #define LL long long int a[5],b[5]; int main() { int i,j,r,t; int suma=0,sumb=0,sum,res=0,p=0,n=0; for(i=0;i<3;i++) { sf("%d",&a[i]); suma+=a[i]; } for(i=0;i<3;i++) { sf("%d",&b[i]); sumb+=b[i]; } sum=suma-sumb; //pf("sum%d\n",sum); for(i=0;i<3;i++) { int tmp = a[i]-b[i]; //pf("tmp%d\n",tmp); if(tmp<0) n+=abs(tmp); else { if(tmp%2==0) p+=tmp/2; else { p+=(tmp+1)/2; n++; } } } //pf("n%d p%d\n",n,p); if(n==p && n==sum) pf("Yes\n"); else pf("No\n"); return 0; }
时间: 2024-11-01 04:59:54