2014icpc广州个人题解

本文分享了算法竞赛中几种常见问题的解决方法,包括语言级别排序、最短路径问题及简单的几何计算等,提供了完整的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

E C语言级别 排序一下按题目要求输出就好 随意操作完全不卡时间

#include<cstdio>

#include<cstring>

#include<algorithm>

using namespace std;

struct vi{ char s[55]; int x; }a[222];

bool cmp(vi q,vi w)

{

    if (q.x == w.x)

        return strcmp(q.s, w.s) < 0;

    return q.x > w.x;

}

int main()

{

    int n, i, m, j;

    char ss[55];

    while (scanf("%d", &n) && n)

    {

        for (i = 0; i < n; i++)

            scanf("%s%d", a[i].s, &a[i].x);

        sort(a, a + n, cmp);

        for (i = 0; i < n; i++)

            printf("%s %d\n", a[i].s, a[i].x);

        scanf("%d", &m);

        while (m--&&scanf("%s", ss))

        {

            for (i = 0; i < n; i++)

                if (strcmp(ss, a[i].s) == 0)

                    break;

            j = i - 1;

            while (a[j].x == a[i].x)

                j--;

            printf("%d", j + 2);

            if (j != i - 1)

                printf(" %d", i - j);

            puts("");

        }

    }

}

 

K 同巨水题

求去掉1点后2点间的最短路的最大值 但数据太小 暴力floyd最短路加枚举就好O(n^4) 没什么坑点 虽然很容易想到O(n^2logm)的算法

现场应该40min内写完这2题的..

#include<cstdio>

#include<cstring>

#include<algorithm>

using namespace std;

int mp[33][33], mm[33][33], i, j, k, q, ans, n, m, x, y, z;

int main()

{

    while (scanf("%d%d", &n, &m) && n + m)

    {

        for (i = 0; i <= n; i++)

            for (j = 0; j <= n; j++)

                mp[i][j] = 1 << 25;

        for (i = 0; i < m; i++)

        {

            scanf("%d%d%d", &x, &y, &z);

            mp[x][y] = mp[y][x] = min(mp[x][y], z);

        }

        ans = -1;

        for (q = 2; q < n; q++)

        {

            memcpy(mm, mp, sizeof(mm));

            for (k = 1; k <= n; k++)

                for (i = 1; i <= n; i++)

                    for (j = 1; j <= n; j++)

                        if (i != q&&j != q&&k != q&&mm[i][k]!=1<<25&&mm[k][j]!=1<<25)

                            mm[i][j] = mm[j][i] = min(mm[i][j], mm[i][k] + mm[k][j]);

            ans = max(ans, mm[1][n]);

        }

        if (ans >= 1 << 25)

            puts("Inf");

        else printf("%d\n", ans);

    }

}

 

I 简单智力题

当时的做法是倒序排序贪心 是最简单的

现在做一遍居然状态压缩啥的各种操作...

#include<cstdio>

#include<cstring>

#include<cmath>

#include<algorithm>

using namespace std;

int a[15], i, n;

double ans;

double f(int a, int b, int c)

{

    double q = (a + b + c) / 2.0;

    return sqrt(q*(q - a)*(q - b)*(q - c));

}

int cmp(int x, int y)

{

    return x > y;

}

int main()

{

    while (scanf("%d", &n) && n)

    {

        for (i = 0; i < n; i++)

            scanf("%d", a + i);

        sort(a, a + n, cmp), ans = 0;

        for (i = 2; i < n;)

            if (a[i] + a[i - 1] > a[i - 2])

                ans += f(a[i], a[i - 1], a[i - 2]), i += 3;

            else i++;

            printf("%.2lf\n", ans);

    }

}

手速铜牌题

 

D 被我很快理论ac但没模板就没写的题..

容易算出到ab2点距离比为k的范围是一个圆(高中数学) 然后套圆和多边形交的模板就好

有模板的话30min内应该可过的..

稳银牌题

 

之后是有点难的数学+数论题复杂数据结构题(玄学暴力可过)..

### 关于2024 ICPC在线竞赛题目解答 对于希望获取2024国际大学生程序设计竞赛(ICPC)网络赛题目的解答或解析,通常这类资源会在比赛结束后一段时间内由官方或其他社区成员发布。目前可利用多个平台来跟踪最新动态并参与讨论。 #### 官方渠道与社区支持 - **ICPC官方网站**:这是最权威的信息源,会公布正式的比赛结果以及可能发布的标准解法[^1]。 #### 社区贡献的解决方案 许多编程爱好者和参赛者会在赛后分享自己的思路和技术细节。可以关注以下几个活跃的技术交流网站: - **Codeforces博客板块**:这里经常有经验丰富的选手撰写详细的赛后分析文章[^3]。 - **TopCoder论坛**:尽管主要服务于自家赛事,但也涵盖了广泛的算法话题,包括对其他公开赛事的看法。 - **LeetCode Discuss**:除了日常刷题外,该区域也适合探讨各类竞赛中的难题。 #### 自学准备建议 为了更好地理解未来可能出现的标准答案,在等待期间可以通过研究过往相似类型的题目来进行预习。例如,通过访问A2 Online Judge、SPOJ等站点上的动态规划(DP)分类练习,有助于积累解决复杂问题的经验。 ```python # 示例:如何在Python中实现一个简单的动态规划求斐波那契数列函数 def fibonacci(n, memo={}): if n in memo: return memo[n] elif n <= 2: result = 1 else: result = fibonacci(n-1, memo) + fibonacci(n-2, memo) memo[n] = result return result ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值