题解

1328 条题解

  • -1
    @ 2020-06-08 19:55:44

    最小生成树最好了
    ```cpp
    #include <cstdio>
    #include <algorithm>
    #define INF 2140000000
    using namespace std;
    struct tree{int x,y,t;}a[10];
    bool cmp(const tree&a,const tree&b){return a.t<b.t;}
    int f[11],i,j,k,n,m,x,y,t,ans;
    int root(int x){if (f[x]==x) return x;f[x]=root(f[x]);return f[x];}
    int main(){
    for (i=1;i<=10;i++) f[i]=i;
    for (i=1;i<=2;i++){
    scanf("%d",&a[i].t);
    a[i].x=i+1;a[i].y=1;k++;
    }
    a[++k].x=1;a[k].y=3,a[k].t=INF;
    sort(a+1,a+1+k,cmp);
    for (i=1;i<=k;i++){
    // printf("%d %d %d %d\n",k,a[i].x,a[i].y,a[i].t);
    x=root(a[i].x);y=root(a[i].y);
    if (x!=y) f[x]=y,ans+=a[i].t;
    }
    printf("%d\n",ans);
    }

  • -1
    @ 2020-06-07 16:07:49

    1

  • -1
    @ 2020-06-06 11:18:14

    再也简单不过的题了

    #include<cstdio>
    int main()
    {
        int a,b;
        scanf("%d %d",&a,&b);
      printf("%d",a+b);
    }
    
  • -1
    @ 2020-05-22 08:36:31

    各位,请不要误导新人。。。

    Python代码:

    s = input().split()
    print(int(s[0])+int(s[1]))
    
  • -1
    @ 2020-05-19 17:09:19

    递推即可

    #include<stdio.h>
    #include<stdbool.h>
    int main(){
        int a[1005],b[1005],sum[1005];
        int x,y,i;
        bool flag=0;
        scanf("%d%d",&x,&y);
        for(i=1;i<=1000;i++)a[i]=x;
        for(i=1;i<=1000;i++)b[i]=y;
        for(i=1;i<=1000;i++)sum[i]=a[i]+b[i];
        for(i=1;i<=999;i++)
            if(sum[i]!=sum[i+1]){
                printf("Impossable!");
                flag=1;
                break;
            }
        if(!flag)printf("%d",sum[1]);
        return 0;
    }
    
  • -1
    @ 2020-05-19 17:07:27

    这题得递推

    #include<stdio.h>
    #include<stdbool.h>
    int main(){
        int a[1005],b[1005],sum[1005];
        int x,y,i;
        bool flag=0;
        scanf("%d%d",&x,&y);
        for(i=1;i<=1000;i++)a[i]=x;
        for(i=1;i<=1000;i++)b[i]=y;
        for(i=1;i<=1000;i++)sum[i]=a[i]+b[i];
        for(i=1;i<=999;i++)
            if(sum[i]!=sum[i+1]){
                printf("Impossable!");
                flag=1;
                break;
            }
        if(!flag)printf("%d",sum[1]);
        return 0;
    }
    
  • -1
    @ 2020-05-12 17:15:17

    python题解水一发

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

  • -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递归 + 模拟位运算

信息

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