#个人赛第七场解题总结# (FZU 1881三角形问题 找规律 &&FZU 1884 排火车 模拟)

链接:click here~~ ,密码:nyist

C - 三角形问题

Description

给你一个由无穷个节点组成的三角形(如下图),你的任务很简单——任意给你两个正整数x和y,判断它们是否相邻(重合不是相邻)。

Input

第一行T,表示T组测试数据,接下来仅有两个32位正整数x 和y。

Output

对于每组测试数据,首先输出”Case k:”,其中k表示第几组。然后如果x和y相邻,则输出“Yes”,否则输出“No”。

Sample Input

31 11 21 11

Sample Output

Case 1:NoCase 2:YesCase 3:No

【解题思路】:

模拟判断一下,具体看代码吧,脑子有点累了,,手也有点懒了,懒的写写太多没用的东西。。

代码:

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
__int64  a[100005];
int main()
{
    __int64 n,m,i,j;
    int t,tot=1;
    a[0]=1;
    for(i=1; i<100000; i++)
    {
        a[i]=i+a[i-1];
    }
    scanf("%d",&t);
    while(t--)
    {
        scanf("%I64d%I64d",&n,&m);
                if(n>m){swap(n,m);}
                printf("Case %d:",tot++);
        if(n==m)
        {
           printf("No\n");
            continue;
        }
        for(i=0; i<100000; i++)
        {
            if(n<a[i])
            {
                   break;
            }
        }
        if(n==a[i]-1)
        {
            if(m==n+i||m==n+i+1)
            {
                printf("Yes\n");
            }
            else printf("No\n");
        }
        else
        {
            if(n==m-1||n+1+i==m||n+i==m)
            {
                printf("Yes\n");
            }
            else printf("No\n");
        }
    }
    return 0;
}

D - 排火车

Description

某天,Apple问起Gaga,”扑克牌排火车有没有玩过??”,”没有-_-“。Apple感到很不可思议,他决定马上教Gaga玩这个游戏。碍于手头上没有扑克牌,Apple就剪了几张卡片,然后在卡片上写上数字,然后对Gaga说“简单来讲,就是你有一堆牌,我有一堆牌,我们轮流出,每次把牌叠在上一次出的牌的下方,如果这时发现当前的牌与前面的牌有重复,那么这之间的牌就都归你了。这样到最后谁没有牌,谁就输了。”“oh,原来如此”。Gaga觉得这个也不过如此。

于是他们开始玩排火车了。。。

现在假设Apple和Gaga各有N张牌,Apple先出牌。请你给出一轮下来Apple和Gaga各获得的牌数。

Input

第一行T,表示T组测试数据,接下来有T部分。

每部分开头是一个整数N(1 <= N <= 50000),表示Apple和Gaga的牌数。接下来有2行,给出Apple和Gaga的牌的情况。首先给出Apple的牌,有N个整数,第i个整数xi(1 <= xi <= 100000)表示Apple的第i张牌面。其次给出Gaga的牌,格式类似。

Output

对于每组测试数据,首先输出”Case k:”,其中k表示第几组。然后输出 Apple和Gaga这一轮获得的牌数。

Sample Input

331 2 31 2 341 4 6 82 5 9 1035 5 56 6 6

Sample Output

Case 1:Apple:0 Gaga:6Case 2:Apple:0 Gaga:0Case 3:Apple:3 Gaga:3

Hint

输入巨大,c++请使用scanf输入避免超时。

【解题思路】:此题真是有点险啊,最后一分种交上了,其实题目理解不难,就是我们小时候常常玩的堆火车,情景在线啊,现在想想蛮怀恋的~~

赛后看了题解报告,是用栈模拟过的,自己用的模拟,大致是发现如果前后出现相同的元素,立刻标记,然后统计数的个数,依次循环到最后。

代码:

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stack>
#include <algorithm>
using namespace std;
const int N=100005;
const double pi=acos(-1.0);
#define  LL  __int64
int a[N],b[N],c[N];
int  flag[N];
int main()
{
    int t,i,j,n,m,tot=1;
    scanf("%d",&t);
    while(t--)
    {
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        memset(flag,0,sizeof(flag));
        scanf("%d",&n);
        for(i=1; i<=n; i++)  scanf("%d",&a[i]);
        for(i=1; i<=n; i++) scanf("%d",&b[i]);
        int s1=0,s2=0,ss=1;
        for(int i=1; i<=n; i++){
            if(flag[a[i]]!=0){
                s1++;
                int temp=flag[a[i]];
                for(int k=flag[a[i]]; k<ss; k++){
                    flag[c[k]]=0;
                    s1++;
                }
                ss=temp;
            }
            else{
                flag[a[i]]=ss;
                c[ss++]=a[i];
            }
            if(flag[b[i]]!=0){
                s2++;
                int temp=flag[b[i]];
                for(int k=flag[b[i]]; k<ss; k++){
                    flag[c[k]]=0;
                    s2++;
                }

                ss=temp;
            }
            else{
                flag[b[i]]=ss;
                c[ss++]=b[i];
            }
        }
        printf("Case %d:Apple:%d Gaga:%d\n",tot++,s1,s2);
    }
    return 0;
}
时间: 2024-08-27 11:46:08

#个人赛第七场解题总结# (FZU 1881三角形问题 找规律 &&FZU 1884 排火车 模拟)的相关文章

#个人赛第七场解题总结# (FZU 1888 三角形问题II &amp;&amp; FZU 1886 音乐 )

A  - 三角形问题II  (计算几何) Time Limit:1000MS    Memory Limit:32768KB    64bit IO Format:%I64d & %I64u SubmitStatusPracticeFZU 1888 Description 给定平面上的N 个点的坐标,现在你的任务是统计任意3个点构成的三角形的面积和的值. Input 有多组数据 数据的第一行包含一个正整数T表示数据组数(1 <= T <= 100) 接下来T组数据. 对于每组数据, 第

#个人赛第三场解题总结#

C. Monty Hall problem Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Java class name:Main SubmitStatus PID: 44578 蒙提霍尔问题,亦称为蒙特霍问题或三门问题(Monty Hall problem),是一个源自博弈论的数学游戏问题. 这个游戏的玩法是:参赛者会看见三扇关闭了的门,其中一扇的后面有一辆汽车,选中后面有车的那扇门就可

FZU - 2147 A-B Game(找规律)

A-B Game Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u Submit Status Description Fat brother and Maze are playing a kind of special (hentai) game by two integers A and B. First Fat brother write an integer A on a white p

HDU 4941 Magical Forest(map映射+二分查找)杭电多校训练赛第七场1007

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4941 解题报告:给你一个n*m的矩阵,矩阵的一些方格中有水果,每个水果有一个能量值,现在有三种操作,第一种是行交换操作,就是把矩阵的两行进行交换,另一种是列交换操作,注意两种操作都要求行或列至少要有一个水果,第三种操作是查找,询问第A行B列的水果的能量值,如果查询的位置没有水果,则输出0. 因为n和m都很大,达到了2*10^9,但水果最多一共只有10^5个,我的做法是直接用结构体存了之后排序,然后m

HDU 5371 (2015多校联合训练赛第七场1003)Hotaru&#39;s problem(manacher+二分/枚举)

HDU 5371 题意: 定义一个序列为N序列:这个序列按分作三部分,第一部分与第三部分相同,第一部分与第二部分对称. 现在给你一个长为n(n<10^5)的序列,求出该序列中N序列的最大长度. 思路: 来自官方题解:修正了一些题解错别字(误 先用求回文串的Manacher算法,求出以第i个点为中心的回文串长度,记录到数组p中 要满足题目所要求的内容,需要使得两个相邻的回文串,共享中间的一部分,也就是说,左边的回文串长度的一半,要大于等于共享部分的长度,右边回文串也是一样. 因为我们已经记录下来以

HDU 5371 (2015多校联合训练赛第七场1003)Hotaru&amp;#39;s problem(manacher+二分/枚举)

pid=5371">HDU 5371 题意: 定义一个序列为N序列:这个序列按分作三部分,第一部分与第三部分同样,第一部分与第二部分对称. 如今给你一个长为n(n<10^5)的序列,求出该序列中N序列的最大长度. 思路: 来自官方题解:修正了一些题解错别字(误 先用求回文串的Manacher算法.求出以第i个点为中心的回文串长度.记录到数组p中 要满足题目所要求的内容.须要使得两个相邻的回文串,共享中间的一部分,也就是说.左边的回文串长度的一半,要大于等于共享部分的长度,右边回文串也

近期这七场IT技术大会你会选哪场?

时间很快,油菜花又要等到明年了.而现在会议行业也进入了旺季,面对众多的会议,你是否还在观望?今天,活动家为大家整理了近期的七场IT技术大会,一起来斟酌下吧~ PS:由时间近到远排序,小伙伴们自行斟酌~ 一.SDCC系列活动 2017上海站 运维开发+数据库+应用架构实战峰会 由CSDN重磅打造的三场峰会,秉承干货实料(案例)的内容原则,这三 场峰会将邀请业内顶尖的架构师和技术专家,共同探讨运维工具研发与实践.运维自动化系统的构建.大数据与运维.云上的运维案例分析.虚拟化技术.应用性能检测与管理.

2014多校第七场1005 || HDU 4939 Stupid Tower Defense (DP)

题目链接 题意 :长度n单位,从头走到尾,经过每个单位长度需要花费t秒,有三种塔: 红塔 :经过该塔所在单位时,每秒会受到x点伤害. 绿塔 : 经过该塔所在单位之后的每个单位长度时每秒都会经受y点伤害. 蓝塔 : 经过该塔所在单位之后,再走每个单位长度的时候时间会变成t+z. 思路 : 官方题解 : 1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #define LL long long

多校第七场 DP+map模拟

HDU 4939 Stupid Tower Defense DP 推一下. #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<map> #include<queue> #include<stack> #include<vector> #include<ctype.h> #include<