A.当a=1就把a改成14,b=1就把b改成14,然后比较a,b大小即可。

#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
int a, b;
int main()
{
    cin >> a >> b;
    if(a==1) a=14; if(b==1) b=14;
    cout << ((a>b)?"Alice":((a==b)?"Draw":"Bob")) << endl;
}

/*
比赛的时候的代码,狠智障地把题读错了。
但居然AC啦! 很迷啊~
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
const int NICO = 200000 + 10;
int a, b;
int main()
{
    cin >> a >> b;
    int ans;
    if(a > b) ans = 1;
    if(a < b) ans = 2;
    if(a ==b) ans = 3;
    if(a==1&&b==13)ans = 1;
    if(a==13&&b==1)ans = 2;
    if(ans == 1) cout << "Alice";
    if(ans == 2) cout << "Bob";
    if(ans == 3) cout << "Draw";
}
*/

B. 数据范围这么小~ 直接暴力,用4重循环check,岂不美哉!

#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
const int NICO = 200000 + 10;
int n, m;
char s1[60][60],s2[60][60];
int main()
{
    cin >> n >> m;
    for(int i=0;i<n;i++) scanf("%s",s1[i]);
    for(int i=0;i<m;i++) scanf("%s",s2[i]);
    int ok = 0;
    for(int i=0;i<=n-m;i++)
    {
        for(int j=0;j<=n-m;j++)
        {
            int ac = 1;
            for(int a=i;a<i+m;a++)
            {
                for(int b=j;b<j+m;b++)
                {
                    if(s1[a][b] != s2[a-i][b-j])
                    {
                        ac = 0;
                    }
                }
            }
            if(ac) ok = 1;
        }
    }
    cout << (ok?"Yes":"No") << endl;
}

C.数据范围比较小的TSP,继续暴力!

不过这个dfs写得真心难看!

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <vector>
using namespace std;
const int NICO = 200000 + 10;
vector<int> vec[100];int n, m;
int res = 0, a[10];
void dfs(int used[], int x)
{
    int ok = 1;used[x] = 1;
    for(int i=1;i<=n;i++)
    {
        if(!used[i]) ok = 0;
    }
    if(ok) {res ++;return;}
    for(int i=0;i<vec[x].size();i++)
    {
        int cur = vec[x][i];
        if(used[cur]) continue;
        int b[10];for(int j=1;j<=n;j++) b[j]=used[j];
        dfs(b, cur);
    }
}
int main()
{
    cin >> n >> m;
    for(int i=1;i<=m;i++)
    {
        int a, b;cin >> a >> b;
        vec[a].push_back(b);
        vec[b].push_back(a);
    }
    dfs(a, 1);
    cout << res << endl;
}

D.活生生的一个背包, ans[i][j][k]: 表示使用前i个物品,凑成j克a物质,k克b物质最小耗费。

ans[i][j][k] = min (ans[i-1][j-a[i]][k-b[i]] + c[i], ans[i-1][j][k]);(初始化:ans[0][0][0]=0,其它为INF)

如果追求简洁の美感,可以把i省略掉,降一下ans数组的维度。

ps:降低维度的时候记得改变j, k的循环方向!喵!喵!喵!

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <vector>
using namespace std;
const int INF = 10000007;
int ans[402][402];
int n, ma, mb;
int a[42],b[42],c[42];
int main()
{
    for(int i=0;i<=400;i++)for(int j=0;j<=400;j++)ans[i][j] = INF;
    ans[0][0] = 0;
    cin >> n >> ma >> mb;
    for(int i=1;i<=n;i++)
    {
        cin >> a[i] >> b[i] >> c[i];
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=400;j>=a[i];j--)
        {
            for(int k=400;k>=b[i];k--)
            {
                ans[j][k] = min(ans[j][k], ans[j-a[i]][k-b[i]] + c[i]);
            }
        }
    }
    int res = INF;
    int A = ma, B = mb;
    while(A<=400&&B<=400)
    {
        res = min(res, ans[A][B]);
        A += ma; B += mb;
    }
    if(res == INF) cout << -1 << endl;
    else cout << res << endl;
}

  

AtCoder Beginner Contest 055题解的更多相关文章

  1. AtCoder Beginner Contest 115 题解

    题目链接:https://abc115.contest.atcoder.jp/ A Christmas Eve Eve Eve 题目: Time limit : 2sec / Memory limit ...

  2. AtCoder Beginner Contest 120 题解

    题目链接:https://atcoder.jp/contests/abc120 A Favorite Sound 分析:答案为. 代码: #include <iostream> using ...

  3. AtCoder Beginner Contest 121 题解

    题目链接:https://atcoder.jp/contests/abc121 A White Cells 分析:题目数据规模很小,直接暴力修改都可以.或者可以推出公式. 代码: #include & ...

  4. AtCoder Beginner Contest 144 题解

    传送门 $cf$ 自闭了,打 $abc$ 散散心 A - 9x9 ...这个有什么好讲的吗,题目看懂就会做了 #include<iostream> #include<cstdio&g ...

  5. AtCoder Beginner Contest 137 F

    AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...

  6. AtCoder Beginner Contest 100 2018/06/16

    A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...

  7. AtCoder Beginner Contest 052

    没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...

  8. AtCoder Beginner Contest 053 ABCD题

    A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...

  9. AtCoder Beginner Contest 136

    AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...

随机推荐

  1. System中记录体函数命名怪异

    //1019unit System; 中发现记录体函数命名怪异//乍一看,很怪异,其实是结构体里面 的变量后面直接写 函数类型了.不像传统先定义T***Event      = procedure(S ...

  2. java实现excel模板导出

    一. 准备工作 1. 点击此下载相关开发工具 2. 将poi-3.8.jxls-core-1.0两个jar包放到工程中,并引用 3. 将excel模板runRecord.xls放到RunRecordB ...

  3. 2.OC蓝牙功能

    一.  最早的蓝牙框架是GameKit,iOS7之前用的比较多,它有只能支持iOS设备间的传输,但是使用步骤简单,我们只需要搞清楚两个类就可以了. GKPeerPickerController:熟称浏 ...

  4. Hdu OJ 5965 扫雷(递推)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5965 题目大意:中文题,自己读 解图思路:对于每一列都有三种情况--0, 1, 2. 如果第一列确定地 ...

  5. BZOJ4360 : achievement

    对于$mode=0$的情况: 假设已经知道了最终要做哪些成就,那么这些成就一定是按$b$递减做的. 将成就按$b$从大到小排序,考虑往已选集合里新加一个成就. 假设该成就前面有$t$个已选成就,后面成 ...

  6. HW4.3

    public class Solution { public static void main(String[] args) { final double POUND_PER_KILOGRAM = 2 ...

  7. C#操作Office.word(一)

    该文章主要是讲述如何使用VS2010创建word文档,因为在项目中我们可能需要点击一个按钮把数据库中的项目表单或图片显示到word文档中,因此该文章主要分析如何使用VS2010创建word文档并填写相 ...

  8. C语言编写Windows服务程序

    原文:C语言编写Windows服务程序 #include <Windows.h> #include <stdio.h> #define SLEEP_TIME 5000 // 间 ...

  9. Spring第六篇【Spring AOP模块】

    前言 Spring的第五篇也算是AOP编程的开山篇了,主要讲解了代理模式-..本博文主要讲解Spring的AOP模块:注解方式和XML方式实现AOP编程.切入点表达式.. AOP的概述 Aop: as ...

  10. CAN总线学习记录之二:系统结构与帧结构

    CAN总线系统结构 CAN 控制器  接收控制单元中微处理器发出的数据,处理数据并传给 CAN 收发器 CAN 收发器 将数据传到总线 or 从总线接收数据给 CAN 控制器 CAN 数据传递终端 避 ...