zoukankan      html  css  js  c++  java
  • SCP-bzoj-1000

    项目编号:bzoj-1000

    项目等级:Keter

    项目描述:

      鉴于该项目的奇特性质,任何拥有Administrator以下权限者均不予查看项目描述。如有违反,将导致AwD成功突破Site bzoj收容【数据删除】并引发XK级世界末日情景。

    特殊收容措施:

      恩。。貌似还没有人写过这题的题解。。那我就来蛤基一波吧。

      作为bzoj上唯一对新人友好的题,1000的解法也是多种多样的,主要有以下解法:

    1.模拟法

    2.汇编法

    3.网络流法

    4.二进制法

    。。。

      好,我们来分析一下各种解法的优劣性:

     

    1.模拟法

      时间复杂度: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
    ",getint()+getint()),0;
    21 }

    Python2:

    1 print eval(raw_input().replace(' ','+'))

     Python3:

    1 print sum(map(int,input().split()))

    2.汇编法

      时间复杂度:O(1)

      空间复杂度:O(1)

      额,其实内嵌汇编我也不太会,大家可以去尝试一下在g++后加参数-S输出C++的汇编代码,至于其他语言。。

     

    3.网络流法

      时间复杂度:与建图有关,一般认为O(1)

      空间复杂度:与建图有关

      这里说一个最简单的建图:从S到T连两条边,容量分别为a和b的值,然后。。流流流!

     

    4.二进制法

      时间复杂度: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
    ",(a|b)+(a&b)),0;
    7 }
    We Secure, We Contain, We Protect.
  • 相关阅读:
    将其他js类库制作成seajs模块
    Jquery 数组操作
    jquery 数组 添加元素
    Asp.net core MVC paypal支付、回调——app支付
    最近接触的几种APP支付方式——支付宝支付
    最近接触的几种APP支付方式——信用卡支付AuthorizeNet
    最近接触的几种APP支付方式——微信app支付
    微信选择图片、上传图片、下载图片、扫一扫接口调用源码
    Oracle连接查询语句
    在ps中,怎么把图片的一部分剪切出来,创建一个新的图层?
  • 原文地址:https://www.cnblogs.com/spactim/p/6262519.html
Copyright © 2011-2022 走看看