• 1024


    问题 B: Kick Ass Biu

    时间限制: 1 Sec 内存限制: 128 MB

    提交: 113 解决: 13

    题目描述

    在玩Kick Ass的时候,可以发现子弹的发射与飞船的移动非常有趣。

    假设屏幕是个n×mn×m(竖直为n,水平为m)的矩形,以矩形左下角为原点,水平方向为x轴,向右为正方向,竖直方向为y轴,像上为正方向,建立平面直角坐标系。你的飞船在(x1,y1)点,射击目标在(x2,y2),你向目标发出了一发子弹,然而由于网页卡顿,这枚子弹并不会触碰到目标。所以,子弹将以每秒v单位的速度继续前进,若子弹移动到屏幕边缘,将自动传送到另一边并继续移动。如:向右移动到(m,0)则下一刻从(0,0)开始继续移动,同理向上移动到(0,n)则下一刻从(0,0)开始继续移动。

    现在给出nm(x1,y1)(x2,y2)v,能否通过编程回答第t秒子弹的坐标?

    输入

    多组测试数据,请处理到文件结束。

    第一行是两个正整数nm

    第二行是六个正整数x1y1x2y2vt

    0<n,m<1000000<n,m<100000

    0<x1y1x2y2vt<1000000<x1,y1,x2,y2,v,t<100000

    输出

    对于每组测试数据请在一行输出第t秒子弹的坐标xy,中间用一个空格隔开。

    结果四舍五入保留到小数点后一位

    样例输入

    3 3
    1 1 1 2 1 1
    3 3
    1 1 1 2 1 2
    3 3
    1 1 1 2 1 3
    

    样例输出

    1.0 2.0
    1.0 0.0
    1.0 1.0
    #include <stdio.h>
    #include <stdlib.h>
    #include <cmath>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #include <queue>
    #include <vector>
    #include <stack>
    #include <map>
    #include <cmath>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define N 100000
    #define mid 1e-8
    #define LL long long
    /********************************************************/
     
    int main()
    {
        double x, y, x1, x2, y1, y2, v, t, dx, vx, vy, n, m;
     
        while(~scanf("%lf%lf", &n, &m))
        {
            scanf("%lf%lf%lf%lf%lf%lf", &x1, &y1, &x2, &y2, &v, &t);
            dx=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
            vx=(x2-x1)/dx*v;
            vy=(y2-y1)/dx*v;
            x=x1+vx*t;
            y=y1+vy*t;
            while(x<0.0||fabs(x-0.0)<=mid)
            {
                x+=m;
            }
            while(y<0.0||fabs(y-0.0)<=mid)
            {
                y+=n;
            }
            while(x>m||fabs(x-m)<=mid)
            {
                x-=m;
            }
            while(y>n||fabs(y-n)<=mid)
            {
                y-=n;
            }
            printf("%.1f %.1f
    ", x, y);
        }
        return 0;
    }

    问题 D: QAQ & ORZ 的签到题

    时间限制: 1 Sec 内存限制: 128 MB

    提交: 834 解决: 204

    题目描述

    QAQ 的好朋友 ORZ,最近在做一个选拔节目的评委,对于每位选手 ORZ 想知道在这个选手以及这位选手前面的的选手中,得分最高和最低的选手的序号分别是多少....

    ORZ 找了 QAQ 帮忙,但是 QAQ 最近在追火星情报局....所以你可以帮助 QAQ 解决 ORZ 的问题吗?

    输入

    第一行一个数 T  (1T101≤T≤10),表示 T 组测试数据

    第二行一个数 n  (1n1051≤n≤105 ),表示有 n 位选手

    接下来 n 行,每行一个数 a (1a1081≤a≤108),表示第 i 位选手的得分,打分总是从第一位选手开始

    输出

    输出从 1 ~ n 位选手中 a[i],在 1 ~ i 之间的选手中得分最高和得分最低的选手的序号分别是多少

    样例输入

    1
    3
    1
    2
    3

    样例输出

    1 1
    2 1
    3 1

    #include <stdio.h>
    #include <stdlib.h>
    #include <cmath>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #include <queue>
    #include <vector>
    #include <stack>
    #include <map>
    #include <cmath>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define N 100005
    #define mid 1e-8
    #define PI 3.1415926535898
    #define LL long long
    /********************************************************/
    int a[N], min1, max1, max2, min2;
     
    int main()
    {
        int T, n;
     
        scanf("%d", &T);
        while(T--)
        {
            scanf("%d", &n);
            for(int i=1;i<=n;i++)
            {
                scanf("%d", &a[i]);
            }
            min1=a[1];
            max1=a[1];
            max2=1;
            min2=1;
            for(int i=1;i<=n;i++)
            {
                if(a[i]>max1)
                {
                    max1=a[i];
                    max2=i;
                }
                if(a[i]<min1)
                {
                    min1=a[i];
                    min2=i;
                }
                printf("%d %d
    ", max2, min2);
            }
        }
        return 0;
    }
     

    问题 E: QAQ & 君临天下 || 天行九歌

    时间限制: 1 Sec 内存限制: 128 MB

    提交: 730 解决: 222

    题目描述

    QAQ~生活之余喜欢看一些动漫,说到国产动漫,QAQ 最喜欢的就属玄机了,玄机出品的动漫都很赞的说,君临天下 和 天行九歌是 QAQ 最喜欢的两部动漫了,每次看完 QAQ 对玄机的敬佩值都会分别增加 2 与 1,QAQ 记录了自己每天看的动漫名称 由 A ~ Z 26个字母代替,J :代表 君临天下,T 代表 : 天行九歌。

    有一天,ORZ 突发奇想想帮 QAQ 测试一下 L ~ R 天里 QAQ 对玄机的敬佩值增加了多少,看 QAQ 能否清楚记得?

    问题来了 ORZ 怎么知道 QAQ 回答的对错呢 ?所以 ORZ 想请你帮忙算出 L ~ R 天里 QAQ 对玄机的敬佩值增加的正确答案。

    输入

    第一行一个 T ( 1T101≤T≤10)代表有 T 组测试数据

    第二行两个数 n ,m (1n,m1051≤n,m≤105),分别代表看了 n 天动漫,和 m 次查询

    接下来 n 行一个 A ~ Z 的字母,表示第 i 天看的动漫名称

    接下来 m 行,每行两个数 L,R (1LRn1≤L≤R≤n)

    输出

    对于每次查询,输出 L~R 天里,QAQ对玄机的敬佩值增加了多少

    样例输入

    1
    3 3
    J
    A
    T
    1 1
    1 2
    2 3
    

    样例输出

    2
    2
    1
    一开始我居然想用线段树、、、
    #include <stdio.h>
    #include <stdlib.h>
    #include <cmath>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #include <queue>
    #include <vector>
    #include <stack>
    #include <map>
    #include <cmath>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define N 100000
    #define LL long long
    /********************************************************/
     
    int main()
    {
        int a[N], T, x, y, n, m;
        char ch;
     
        scanf("%d", &T);
        while(T--)
        {
            scanf("%d%d", &n, &m);
            a[0]=0;
            for(int i=1;i<=n;i++)
            {
                getchar();
                scanf("%c", &ch);
                if(ch=='J')
                    a[i]=a[i-1]+2;
                else if(ch=='T')
                    a[i]=a[i-1]+1;
                else
                    a[i]=a[i-1];
            }
            for(int i=0;i<m;i++)
            {
                scanf("%d%d", &x, &y);
                printf("%d
    ", a[y]-a[x-1]);
            }
        }
        return 0;
    }

    问题 F: 小ho的01串

    时间限制: 1 Sec 内存限制: 128 MB

    提交: 148 解决: 59

    题目描述

    有一个由01组成的字符串,它好长呀--------一望无际

    恩,说正题,小ho的数学不太好,虽然是学计算机的但是看见01也是很头疼的,

    现在他的老师想让他计算出来包含K1的串有多少个-----呀,头要炸了!!!

    小ho知道你的数学棒棒哒,所以来找你帮忙了。

    输入

    第一行是一个数K

    第二行是一个字符串str

    0 < |str| ≤ 106

    输出

    一个数S,代表了满足条件的个数。

    样例输入

    2
    101010
    

    样例输出

    6

    #include <stdio.h>
    #include <stdlib.h>
    #include <cmath>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #include <queue>
    #include <vector>
    #include <stack>
    #include <map>
    #include <cmath>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define N 100000
    #define mid 1e-8
    #define LL long long
    /********************************************************/
     
    int main()
    {
        int n, i, sum, k, vis[N];
        char s[N];
     
        scanf("%d", &k);
        n=0;
        scanf("%s", s);
        memset(vis, 0, sizeof(vis));
        for(i=0; i<strlen(s); i++)
        {
            if(s[i]=='1')
                n++;
            else
                vis[n]++;
        }
        sum=0;
        for(i=k; i<=n; i++)
        {
            sum+=1+vis[i-k]+vis[i]+vis[i-k]*vis[i];
        }
        printf("%d
    ", sum);
        return 0;
    }
     
     
  • 相关阅读:
    Node + js实现大文件分片上传基本原理及实践(一)
    渐进式web应用开发---promise式数据库(五)
    渐进式web应用开发---使用indexedDB实现ajax本地数据存储(四)
    渐进式web应用开发--拥抱离线优先(三)
    js实现使用文件流下载csv文件
    客户端持久化数据库---indexedDB使用
    渐进式web应用开发---service worker (二)
    渐进式web应用开发---service worker 原理及介绍(一)
    浅谈NodeJS多进程服务架构基本原理
    Electron为文件浏览器创建图标(三)
  • 原文地址:https://www.cnblogs.com/zct994861943/p/7347294.html
Copyright © 2020-2023  润新知