河南省第八届ACM程序设计大赛

A:挑战密室

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <stack>
#include <map>
#include <vector>
#include <queue>
using namespace std;
typedef long long LL;
#define N 600
#define met(a, b) memset(a, b, sizeof(a))
#define INF 0x3f3f3f3f

char s[N];

int Find(int x, int len)
{
    int i;

    for(i=x; i<=len; i++)
        if(s[i]==‘=‘)
        return i+1;
}
int Find2(int x, int len)
{
    int i;

    for(i=x; i<=len; i++)
        if(s[i]==‘+‘)
        return i-1;
    return len;
}

int Find1(int x)
{
    int i, len = strlen(s)-1;

    for(i=x; i<len; i++)
        if(s[i]==‘)‘)
        return i-1;

    return len;
}

int Slove(int start, int e)
{
    int k=0, sum=0, pre, i;

    for(i=start; i<=e; i++)
    {
        if(s[i]>=‘0‘ && s[i]<=‘9‘)
            k = k*10 + s[i]-‘0‘;
        else break;
    }

    for( ;i<=e; i++)
    {
        if(s[i]==‘N‘)
        {
            if(s[i+1]==‘a‘)
            {
                sum += 23;
                pre = 23;
                i++;
            }
            else
            {
                sum += 14;
                pre = 14;
            }
        }
        else if(s[i]==‘C‘)
        {
            if(s[i+1]==‘l‘)
            {
                sum += 35;
                pre = 35;
                i++;
            }
            else if(s[i+1]==‘a‘)
            {
                sum += 40;
                pre = 40;
                i++;
            }
            else
            {
                sum += 12;
                pre = 12;
            }
        }
        else if(s[i]==‘O‘)
        {
            sum += 16;
            pre = 16;
        }
        else if(s[i]==‘S‘)
        {
            sum += 32;
            pre = 32;
        }
        else if(s[i]==‘H‘)
        {
            sum += 2;
            pre = 2;
        }
        else if(s[i]==‘A‘)
        {
            sum += 27;
            pre = 27;
            i++;
        }
        else if(s[i]==‘Z‘)
        {
            sum += 65;
            pre = 65;
            i++;
        }
        else if(s[i]==‘(‘)
        {
            int Index = Find1(i);
            int w = Slove(i+1, Index);
            sum += w;
            pre =  w;
            i = Index+1;
        }
        else
        {
            int z=0;
            while(s[i]>=‘0‘ && s[i]<=‘9‘)
            {
                z = z*10 + s[i]-‘0‘;
                i++;
            }
            i--;
            sum += (z-1)*pre;
        }
    }

    if(k==0) return sum;
    else     return k*sum;
}

int main()
{
    int T;
    scanf("%d", &T);
    while(T--)
    {
        int Index1, Index2, sum, len;

        scanf("%s", s);

        len = strlen(s)-1;

        Index1 = Find(0, len);
        Index2 = Find2(Index1, len);
        sum = Slove(Index1, Index2);

        printf("%04d\n", sum);
    }
    return 0;
}

B:最大岛屿

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <stack>
#include <map>
#include <vector>
#include <queue>
using namespace std;
typedef long long LL;
#define N 550
#define met(a, b) memset(a, b, sizeof(a))
#define INF 0x3f3f3f3f

int s[N][N];
int n, m, Max, dir[8][2]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};

int DFS(int x, int y)
{
    int i, nx, ny, sum=0;

    s[x][y] = 0;
    for(i=0; i<8; i++)
    {
       nx = x + dir[i][0];
       ny = y + dir[i][1];
       if(nx>=0 && nx<n && ny>=0 && ny<m && s[nx][ny])
       {
          sum += DFS(nx, ny) + 1;
       }
    }

    return sum;
}

int main()
{
    int T;

    while(scanf("%d%d%d", &n, &m, &T)!=EOF)
    {
        int i, j, ans, sum=0, Max=0;

        met(s, 0);
        for(i=0; i<n; i++)
        for(j=0; j<m; j++)
            scanf("%1d", &s[i][j]);

        for(i=0; i<n; i++)
        for(j=0; j<m; j++)
        {
            if(s[i][j]==1)
            {
                ans = DFS(i, j) + 1;
                ///printf("%d\n", ans);
                if(ans) sum++;
                Max = max(Max, ans);
            }
        }

        printf("%d %d\n", sum, Max*T);
    }
    return 0;
}

D:引水工程

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<math.h>
#include<string.h>
#include<string>
#include<map>
using namespace std;
#define N 305
#define INF 0x3f3f3f3f
#define met(a, b) memset(a, b, sizeof(a))

int vis[N], G[N][N], n, dist[N];

int Prim(int s)
{
    for(int i=1; i<=n; i++)
        dist[i] = G[s][i];
    met(vis, 0);
    vis[s] = 1;
    int ans = 0;
    for(int i=1; i<=n; i++)
    {
        int Min = INF, Index = -1;
        for(int j=1; j<=n; j++)
        {
            if(!vis[j] && dist[j]<Min)
            {
                Min = dist[j];
                Index = j;
            }
        }
        if(Index == -1)break;
        vis[Index] = 1;
        ans += Min;
        for(int j=1; j<=n; j++)
        {
            if(!vis[j] && dist[j]>G[Index][j])
            {
                dist[j] = G[Index][j];
            }
        }
    }
    return ans;
}

int main()
{
    int w, T;
    scanf("%d", &T);
    while(T--)
    {
        scanf("%d", &n);

        for(int i=0; i<=n; i++)
        {
            for(int j=0; j<=n; j++)
            {
                G[i][j] = G[j][i] = INF;
            }
        }

        for(int i=1; i<=n; i++)
        {
            scanf("%d", &w);
            G[0][i] = G[i][0] = w;
        }
        for(int i=1; i<=n; i++)
        {
            for(int j=1; j<=n; j++)
            {
                scanf("%d", &w);
                G[i][j] = w;
            }
        }
        int ans = Prim(0);
        printf("%d\n", ans);
    }
    return 0;
}

F:Distribution

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<math.h>
#include<string.h>
#include<string>
#include<map>
using namespace std;
#define N 10100
#define met(a, b) memset(a, b, sizeof(a))

int main()
{
    int n, m, x[N], y[N], a, b;
    while(scanf("%d %d", &n, &m)!=EOF)
    {
        for(int i=0; i<n; i++)
        {
            scanf("%d %d", &x[i], &y[i]);
        }
        for(int i=1; i<=m; i++)
        {
            scanf("%d %d", &a, &b);
            int cnt1 = 0, cnt2 = 0;
            for(int j=0; j<n; j++)
            {
                if((x[j]>a && y[j]>b) || (x[j]<a && y[j]<b))
                    cnt1++;
                else if((x[j]<a && y[j]>b) || (x[j]>a && y[j]<b))
                    cnt2++;
            }
            printf("%d\n", cnt1-cnt2);
        }
    }
    return 0;
}

G:Interference Signal

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <stack>
#include <map>
#include <vector>
#include <queue>
using namespace std;
typedef long long LL;
#define N 1100
#define met(a, b) memset(a, b, sizeof(a))
#define INF 0x3f3f3f3f

int a[N];

int main()
{
    int T;
    scanf("%d", &T);
    while(T--)
    {
        int n, k, i, j;
        double Max=0, ans;

        scanf("%d%d", &n, &k);

        met(a, 0);
        for(i=0; i<n; i++)
            scanf("%d", &a[i]);

        for(i=0; i<n; i++)
        {
            int sum = 0;
            for(j=i; j<n; j++)
            {
                sum += a[j];
                if((j-i+1)>=k)
                {
                     ans = (sum*1.0)/(j-i+1);
                     Max = max(Max, ans);
                }
            }
        }

        printf("%d\n", (int)(Max*1000));
    }
    return 0;
}

时间: 2024-07-31 00:39:02

河南省第八届ACM程序设计大赛的相关文章

nyoj 1238 最少换乘 (河南省第八届acm程序设计大赛)

题目1238 题目信息 运行结果 本题排行 讨论区 最少换乘 时间限制:2000 ms  |  内存限制:65535 KB 难度:3 描述 欧洲某城是一个著名的旅游胜地,每年都有成千上万的人前来观光旅行.Dr. Kong决定利用暑假好好游览一番.. 年轻人旅游不怕辛苦,不怕劳累,只要费用低就行.但Dr. Kong年过半百,他希望乘坐BUS从住的宾馆到想去游览的景点,期间尽可量地少换乘车. Dr. Kon买了一张旅游地图.他发现,市政部门为了方便游客,在各个旅游景点及宾馆,饭店等地方都设置了一些公

nyoj1237 最大岛屿(河南省第八届acm程序设计大赛)

题目1237 题目信息 运行结果 本题排行 讨论区 最大岛屿 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 神秘的海洋,惊险的探险之路,打捞海底宝藏,激烈的海战,海盗劫富等等.加勒比海盗,你知道吧?杰克船长驾驶着自己的的战船黑珍珠1号要征服各个海岛的海盜,最后成为海盗王.  这是一个由海洋.岛屿和海盗组成的危险世界.面对危险重重的海洋与诡谲的对手,如何凭借智慧与运气,建立起一个强大的海盗帝国. 杰克船长手头有一张整个海域的海图,上面密密麻麻分布着各个海屿的位置及面

nyoj 1239 引水工程 (河南省第八届acm程序设计大赛)

题目1239 题目信息 运行结果 本题排行 讨论区 引水工程 时间限制:2000 ms  |  内存限制:65535 KB 难度:3 描述 南水北调工程是优化水资源配置.促进区域协调发展的基础性工程,是新中国成立以来投资额最大.涉及面最广的战略性工程,事关中华民族长远发展."南水北调工程",旨在缓解中国华北和西北地区水资源短缺的国家战略性工程.就是把中国长江流域丰盈的水资源抽调一部分送到华北和西北地区.我国南涝北旱,南水北调工程通过跨流域的水资源合理配置,促进南北方经济.社会与人口.资

nyoj 1239 引水project (河南省第八届acm程序设计大赛)

题目1239 pid=1239" style="color:rgb(55,119,188)">题目信息 pid=1239" style="color:rgb(55,119,188)">执行结果 pid=1239" style="color:rgb(55,119,188)">本题排行 讨论区 引水project 时间限制:2000 ms  |  内存限制:65535 KB 难度:3 描写叙述 南水北调

河南省第八届ACM程序设计大赛总结

简单的对这次省赛做个总结:总体来说这个比赛过程中做的还算比较顺利,虽然中间多多少少遇到一些坑,正式比赛开始后,我们就开始找水题,当然了我首先把英文题目翻译了一遍,发现了一道水题,这道题目其实就是判断点在二维平面坐标系中的象限位置,然后果断交给了zy去做,此时wx已经A了一道题了,至于什么情况我并不知情,然后又发现了一道较水的英文题目,是遍历连续数组子串求最大平均值的问题,我们商量好思路后,然后又果断交给了zy去做,之后交了一发,果断Wrong了,然后又看了看题目要求,好吧,输出的最后一句单词没有

“玲珑杯”郑州轻工业学院第八届ACM程序设计大赛暨河南高校邀请赛-正式赛

1874: 蛤玮学计网 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 854  Solved: 120 SubmitStatusWeb Board Description 蛤玮最近学习了关于ip的知识,于是他迫不及待的想把新知识传授给她的妹子.蛤玮的妹子随便写下了一个字符串,蛤玮现在要告诉她这个字符串是不是一个合法的ip地址. 为简单考虑,仅考虑ipv4的情况,即合法ip为形同"a1.a2.a3.a4",且0<=ai<=25

河南省第三届ACM程序设计大赛题解

光说不练是假把式,先给各大巨巨们一个刷题链接:戳我进入刷题OJ 这届比赛水题有点多,想拿奖保证好手速即可.但是想拿高名次并不太容易 A.常规做法我不太会,但是根据题目的数据发现,可以开个这么大的数组哈哈,那么万能的暴力保证1A. #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn=500; int num[maxn]; int main(){

山东省第八届ACM程序设计大赛总结

背景 第一次参加省赛的菜鸡选手 学校比较近,我们第一天热身赛和正式比赛都是打车直接回学校,并不知道传说中的宾馆房间是什么样子.不过宾馆的火爆麻辣土豆丝盒饭倒是领教了./摊手 第一天热身赛题没怎么看,一直敲模板,最后想要个气球A了两个题,结果被告知气球没了,僵硬,你们明明黑板上有贴的嘛 /阴险,A题测试案例有问题,还跟志愿者开玩笑,希望你们明天也出个坑坑一波大佬们(我这乌鸦嘴...)(宣讲会两位女士的尬聊就不提了.....) 正赛简直了,A题被山建大佬带歪了榜,F题阅读理解,第一次交考虑了0 0

河南省第五届ACM程序设计大赛

D:   遥 控 器 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #include<queue> #include<vector> #include<map> using namespace std; typedef unsigned long long LL; #define