题解

1323 条题解

  • -1
    @ 2020-05-11 08:34:59
    """
    author lyl913
    """
    a, b = input().split()
    print(int(a)+int(b))
    
    

    大致思想:

    1.输入a和b(此时是字符串形式,需要split分割)

    2.输出a+b(注意需要转换成int类型再输出)

  • -1
    @ 2020-05-10 09:11:17

    define真好用……

    #include <bits/stdc++.h>
    #define std using namespace std
    #define main int main()
    #define then ;
    #define start {
    #define integer int
    #define also ,
    #define input cin>>
    #define to >>
    #define output cout<<
    #define plus +
    #define finish return 0
    #define over }
    std then
    main 
    start
    integer a also b then
    input a to b then
    output a plus b then
    finish then
    over
    
  • -1
    @ 2020-05-09 12:05:59

    我谔谔

  • -1
    @ 2020-04-27 22:32:18

    这个解法不一定能AC,看你运气了。

    #include<bits/stdc++.h>
    #include<bits/extc++.h>
    #include<cstdlib>
    #include<ctime>
    using namespace std;
    int main(){
        int a,b,c;
        cin>>a>>b;
        srand((int)time(0));//随即种子
        while(1){//可怕的循环
            c=rand()%65536;//65536:题目给的两数之和的最大范围
            if(c-a==b){//如果找到了答案
                cout<<c;
                return 0;
            }
        }
    }
    
  • -1
    @ 2020-04-03 11:01:30

    各位大神都用网络流啊 最短路啊解这道题,那么既然是可以求最短路,为什么不可以从树上跑呢?

    怀着这种想法,我冥思苦想(划掉),发现,###我可以用LCA做这道题啊~

    然而鄙人不才,什么Tarjan啊ST表啊都不会,只会用一个倍增来求LCA,所以权当抛砖引玉吧。

    不过我估计应该没什么想学LCA的来这道题看LCA题解吧。所以多半是写着玩~~

    先说说思路(这还用说?):
    建一个有三个节点的树,1为树根,2 3分别是左右儿子。
    其中1 2之间的距离为a,2 3之间的距离为b,然后求1 2的LCA,和分别到LCA的距离,加起来就是1->3的最短路
    其实就是题目中所求的a+b了
    好吧闲话不说 上代码了(多半是个LCA的板子了):

    #include<cstdio>                                                  //头文件
    #define NI 2                                                          
    //从来不喜欢算log所以一般用常数 不知道算不算坏习惯 因为3个节点 所以log3(当然以2为底)上取整得2
    struct edge
    {
        int to,next,data;                                              //分别表示边的终点,下一条边的编号和边的权值
    }e[30];                                                                     //邻接表,点少边少开30是为了浪啊
    int v[10],d[10],lca[10][NI+1],f[10][NI+1],tot=0;      //数组开到10依然为了浪
    //数组还解释嘛,v表示第一条边在邻接表中的编号,d是深度,lca[x][i]表示x向上跳2^i的节点,f[x][i]表示x向上跳2^i的距离和
    void build(int x,int y,int z)                                      //建边
    {
        e[++tot].to=y; e[tot].data=z; e[tot].next=v[x]; v[x]=tot;
        e[++tot].to=x; e[tot].data=z; e[tot].next=v[y]; v[y]=tot;
    }
    void dfs(int x)                                                        //递归建树
    {
        for(int i=1;i<=NI;i++)                                   //懒,所以常数懒得优化
            f[x][i]=f[x][i-1]+f[lca[x][i-1]][i-1],
            lca[x][i]=lca[lca[x][i-1]][i-1];                   //建树的同时进行预处理
        for(int i=v[x];i;i=e[i].next)                              //遍历每个连接的点
        {
            int y=e[i].to;
            if(lca[x][0]==y) continue;
            lca[y][0]=x;                                       //小技巧:lca[x][0]即为x的父亲~~(向上跳2^0=1不就是父节点嘛)
            f[y][0]=e[i].data;
            d[y]=d[x]+1;
            dfs(y);                                            //再以这个节点为根建子树【这里真的用得到嘛??】
        }
    }
    int ask(int x,int y)                                             //询问,也是关键
    {                                                                        
        if(d[x]<d[y]) {int t=x;x=y;y=t;}                  //把x搞成深的点
        int k=d[x]-d[y],ans=0;
        for(int i=0;i<=NI;i++)
            if(k&(1<<i))                                      //若能跳就把x跳一跳
                ans+=f[x][i],                              //更新信息
                x=lca[x][i];
        for(int i=NI;i>=0;i--)                                  //不知道能不能正着循环,好像倒着优,反正记得倒着就好了
            if(lca[x][i]!=lca[y][i])                            //如果x跳2^i和y跳2^j没跳到一起就让他们跳
                ans+=f[x][i]+f[y][i],
                x=lca[x][i],y=lca[y][i];
        return ans+f[x][0]+f[y][0];                           //跳到LCA上去(每步跳的时候都要更新信息,而且要在跳之前更新信息哦~)
    }
    int main()
    {
        int a,b;
        scanf("%d%d",&a,&b);
        build(1,2,a);
        build(1,3,b);                                                       //分别建1 2、1 3之间的边
        dfs(1);                                                                //以1为根建树
        printf("%d",ask(2,3));                                         //求解2 3到它们的LCA的距离和并输出
    }
    
  • -1

    啦啦啦啦啦
    #include <iostream>

    using namespace std;

    int main()
    {
    int a, b;
    cin >> a >> b;
    cout << a + b << endl;
    }

  • -1

    #include <iostream>

    using namespace std;

    int main()
    {
    int a, b;
    cin >> a >> b;
    cout << a + b << endl;
    }

  • -1
    @ 2020-03-02 14:47:38

    PHP:
    <?php

    fscanf(STDIN, "%d %d\n", \(a, \)b);
    echo (\(a + \)b) . "\n";

  • -1
    @ 2020-02-29 11:52:06

    无关这个
    死循环
    package main

    import "fmt"

    func main() {
    for true {
    fmt.Printf("这是无限循环。\n");
    }
    }
    Go语言

  • -1
    @ 2020-02-29 11:43:14

    发现了函数后用了函数:
    #include<iostream>
    using namespace std;
    int s(int x,int y){
    return x+y;}
    int main(){
    int a,b;
    cin>>a>>b;
    cout<<s(a,b);
    return 0;}

  • -1
    @ 2020-02-02 18:31:47
    #include <stdio.h>
    int main () {
        int a,b;
        scanf ("%d%d",&a,&b);
        printf ("%d\n",a+b);
        return 0;
    }
    
  • -1
    @ 2020-02-02 15:00:19

    什么都不想说,上代码(其实这种题。。。发不发题解都没啥必要)(划掉);

    #include<iostream>
    using namespace std;
    
    int main(){
        int a,b;
        cin>>a>>b;
        cout<<a+b<<endl;
        return 0;
    }
    
  • -1
    @ 2020-01-03 20:31:47
    #include <bits/stdc++.h>
    
    int main(int a, int b, int k)
    {
        if (k) scanf("%d%d", &a, &b);
        b == 0 ? printf("%d\n", a) : main(a ^ b, (a & b) << 1, 0);
    }
    

    main递归 + 模拟位运算

  • -1
    @ 2019-11-21 12:29:00

    216
    4165

  • -1
    @ 2019-11-20 13:03:52

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
    int a,b;
    cin>>a>>b;
    cout<<a+b;
    return 0;

    }

  • -1
    @ 2019-11-17 10:09:24

    作死ing

    #include<bits/stdc++.h>
    using namespace std;
    char s[10001],ss[10001];
    int a[10001],b[10001],c[10001],j;
    bool x=false;
    int main() {
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        memset(c,0,sizeof(c));
        scanf("%s%s",s,ss);
        a[0]=strlen(s);
        b[0]=strlen(ss);
        for(int i=1; i<=a[0]; i++) a[i]=s[a[0]-i]-'0';
        for(int i=1; i<=b[0]; i++) b[i]=ss[b[0]-i]-'0';
        for(j=1; j<=max(a[0],b[0])+1; j++) {
            c[j]=a[j]+b[j];
            if(c[j]>=10) {
                c[j]%=10;
                a[j+1]++;
            }
        }
        c[0]=j;
        if(c[j+1]>0) c[0]++;
        for(int i=c[0]; i>=1; i--) {
            if(x==false&&c[i]==0) continue;
            x=true;
            cout<<c[i];
        }
        printf("\n");
        return 0;
    }
    
  • -1
    @ 2019-11-17 10:07:35

    本蒟蒻的第一篇题解

    结构体+选排

    #include<bits/stdc++.h>
    using namespace std;
    struct eee
    {
        char xibu,ganbu;
        string name;
        int pjcj,pycj,lws;
        long long RMB=0;
    };
    eee a[101];
    int n;
    long long sum=0;
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i].name;
            cin>>a[i].pjcj>>a[i].pycj;
            cin>>a[i].ganbu>>a[i].xibu;
            cin>>a[i].lws;
            if(a[i].lws>=1&&a[i].pjcj>=81) a[i].RMB+=8000;
            if(a[i].pjcj>85&&a[i].pycj>80) a[i].RMB+=4000;
            if(a[i].pjcj>90) a[i].RMB+=2000;
            if(a[i].pjcj>85&&a[i].xibu=='Y') a[i].RMB+=1000;
            if(a[i].ganbu=='Y'&&a[i].pycj>80) a[i].RMB+=850;
            sum+=a[i].RMB;
        }
        for(int i=1;i<=n-1;i++)
            for(int j=i+1;j<=n;j++)
                if(a[i].RMB<a[j].RMB)
                {
                    swap(a[i].ganbu,a[j].ganbu);
                    swap(a[i].lws,a[j].lws);
                    swap(a[i].name,a[j].name);
                    swap(a[i].pjcj,a[j].pjcj);
                    swap(a[i].pycj,a[j].pycj);
                    swap(a[i].RMB,a[j].RMB);
                    swap(a[i].xibu,a[j].xibu);
                }
        cout<<a[1].name<<endl;
        cout<<a[1].RMB<<endl;
        cout<<sum<<endl;
        return 0;
    }
    
  • -1
    @ 2019-11-13 21:30:54

    dalao们求一发模拟退火的题解OuO

  • -1
    @ 2019-10-26 14:17:06

    本题链接:https://vijos.org/p/1000
    JieKe08的第1篇题解!

    for beginners,特设此题,^_^

    #include<bits/stdc++.h>//多美妙的万能头
    using namespace std;
    int main()
    {
        int a,b;//定义变量
        cin>>a>>b;//输入
        cout<<a+b;//输出,最后的换行可有可无
        return 0;//题目给的代码没有这个,但考试最好加上 
    }
    

    感谢您花费1分钟阅读鄙人的题解!

  • -1
    @ 2019-09-25 20:22:56

    快读你们懂得吧
    cpp
    #include<bits/stdc++.h>
    using namespace std;
    int a,b;
    inline int read(){
    int ret=0,f=1;char ch=getchar();
    while(!isdigit(ch)) f=(ch=='-'?-f:f),ch=getchar();
    while(isdigit(ch)) ret=ret*10+ch-'0',ch=getchar();
    return ret*f;
    }
    int main(){
    a=read(),b=read();
    printf("%d\n",a+b);
    return 0;
    }

信息

ID
1000
难度
9
分类
(无)
标签
(无)
递交数
74450
已通过
28496
通过率
38%
被复制
223