项目编号:bzoj-1000
项目等级:Keter
项目描述:
鉴于该项目的奇特性质,任何拥有Administrator以下权限者均不予查看项目描述。如有违反,将导致AwD成功突破Site bzoj收容【数据删除】并引发XK级世界末日情景。
特殊收容措施:
恩。。貌似还没有人写过这题的题解。。那我就来蛤基一波吧。
作为bzoj上唯一对新人友好的题,1000的解法也是多种多样的,主要有以下解法:
。。。
好,我们来分析一下各种解法的优劣性:
时间复杂度:O(1)
空间复杂度:与语言有关
这个没什么好说的,只要掌握基本的读入输出与+运算符就可以了。
Pascal:
1 var a,b:longint; 2 begin 3 read(a,b); writeln(a+b); 4 end.
C++:
1 #pragma GCC optimize(2) 2 #define __function__(type) __attribute__((optimize("-O2"))) inline type 3 #define __procedure__ __attribute__((optimize("-O2"))) inline void 4 using namespace std; 5 6 //quick_io { 7 #include <cctype> 8 #include <cstdio> 9 10 __function__(long long) getint() 11 { 12 char c=getchar(); for(;!isdigit(c)&&c!='-';c=getchar()); 13 short s=1; for(;c=='-';c=getchar()) s*=-1; long long r=0; 14 for(;isdigit(c);c=getchar()) r=(r<<3)+(r<<1)+c-'0'; return s*r; 15 } 16 //} quick_io 17 18 int main() 19 { 20 return printf("%lld\n",getint()+getint()),0; 21 }
Python2:
1 print eval(raw_input().replace(' ','+'))
Python3:
1 print sum(map(int,input().split()))
时间复杂度:O(1)
空间复杂度:O(1)
额,其实内嵌汇编我也不太会,大家可以去尝试一下在g++后加参数-S输出C++的汇编代码,至于其他语言。。
时间复杂度:与建图有关,一般认为O(1)
空间复杂度:与建图有关
这里说一个最简单的建图:从S到T连两条边,容量分别为a和b的值,然后。。流流流!
时间复杂度:O(1)
空间复杂度:O(1)
我们可以证明a+b=(a|b)+(a&b):
显然,对于a和b的任一二进制位ai,bi,ai+bi=(ai|bi)+(ai&bi),证明如下:
ai=bi=0时,0+0=(0|0)+(0&0)=0
ai=bi=1时,1+1=(1|1)+(1&1)=2
ai^bi=0时,1+0=(1|0)+(1&1)=1
于是,∑(ai+bi)*2i=a+b=(a|b)+(a&b)=∑((ai|bi)+(ai&bi))*2i(0<=i<log2(max(a,b)))
证毕。
C++:
1 #include <cstdio> 2 using namespace std; 3 int a,b; 4 int main() 5 { 6 return scanf("%d%d",&a,&b),printf("%d\n",(a|b)+(a&b)),0; 7 }
We Secure, We Contain, We Protect.