10.29 下午考试

P74

竞赛时间:????年??月??日??:??-??:??


题目名称


名称


ha


haha


hahaha


输入


ha.in


haha.in


hahaha.in


输出


ha.out


haha.out


hahaha.out


每个测试点时限


1秒


1.5秒


1.5秒


内存限制


512MB


512MB


512MB


测试点数目


10


10


10


每个测试点分值


10


10


10


是否有部分分





题目类型


传统


传统


传统

注意事项(请务必仔细阅读):

 

【问题描述】

祖玛是一款曾经风靡全球的游戏,其玩法是:在一条轨道上初始排列着若干个彩色珠子,其中任意三个相邻的珠子不会完全同色。此后,你可以发射珠子到轨道上并加入原有序列中。一旦有三个或更多同色的珠子变成相邻,它们就会立即消失。这类消除现象可能会连锁式发生,其间你将暂时不能发射珠子。

开发商最近准备为玩家写一个游戏过程的回放工具。他们已经在游戏内完成了过程记录的功能,而回放功能的实现则委托你来完成。

游戏过程的记录中,首先是轨道上初始的珠子序列,然后是玩家接下来所做的一系列操作。你的任务是,在各次操作之后及时计算出新的珠子序列。

【输入格式】

第一行是一个由大写字母‘A‘~‘Z‘组成的字符串,表示轨道上初始的珠子序列,不同的字母表示不同的颜色。

第二行是一个数字,表示整个回放过程共有次操作。

接下来的行依次对应于各次操作。每次操作由一个数字和一个大写字母描述,以空格分隔。其中,为新珠子的颜色。若插入前共有颗珠子,则表示新珠子嵌入之后(尚未发生消除之前)在轨道上的位序。

【输出格式】

输出共行,依次给出各次操作(及可能随即发生的消除现象)之后轨道上的珠子序列。

如果轨道上已没有珠子,则以“-”表示。

【样例输入】

ACCBA

5

1 B

0 A

2 B

4 C

0 A

【样例输出】

ABCCBA

AABCCBA

AABBCCBA

-

A

【样例解释】

你以为山里又有座庙?

【数据规模与约定】

的数据满足。

 暂无

【问题描述】

栈是一种强大的数据结构,它的一种特殊功能是对数组进行排序。例如,借助一个栈,依次将数组1,3,2按顺序入栈或出栈,可对其从大到小排序:

1入栈;3入栈;3出栈;2入栈;2出栈;1出栈。

在上面这个例子中,出栈序列是3,2,1,因此实现了对数组的排序。

遗憾的是,有些时候,仅仅借助一个栈,不能实现对数组的完全排序。例如给定数组2,1,3,借助一个栈,能获得的字典序最大的出栈序列是3,1,2:

2入栈;1入栈;3入栈;3出栈;1出栈;2出栈。

请你借助一个栈,对一个给定的数组按照出栈顺序进行从大到小排序。当无法完全排序时,请输出字典序最大的出栈序列。

【输入格式】

输入共行。

第一行包含一个整数,表示入栈序列长度。

第二行包含个整数,表示入栈序列。输入数据保证给定的序列是到n的全排列,即不会出现重复数字。

【输出格式】

仅一行,共个整数,表示你计算出的出栈序列。

【样例输入】

3

2 1 3

【样例输出】

3 1 2

【样例解释】

这回山里有座塔。

【数据规模与约定】

对于的数据,。

对于的数据,。

对于的数据,。

 

/*
WA 0分
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 1000010
using namespace std;
int n,now,top;
int a[maxn],f[maxn];
int stack[maxn];
int init()
{
    int x=0,f=1;char c=getchar();
    while(c<‘0‘||c>‘9‘){if(c==‘-‘)f=-1;c=getchar();}
    while(c>=‘0‘&&c<=‘9‘){x=x*10+c-‘0‘;c=getchar();}
    return x*f;
}
int main()
{
    freopen("haha.in","r",stdin);
    freopen("haha.out","w",stdout);
    n=init();now=n;
    for(int i=1;i<=n;i++)
      a[i]=init();
    for(int i=1;i<=n;i++)
    {
        stack[++top]=a[i];
        f[a[i]]=1;
        while((top&&stack[top]>=now)||f[now])
        {
            printf("%d ",stack[top]);
            f[stack[top]]=0;
            top--;now--;
        }
    }
    return 0;
}

/*
刚开始 思路错了
造的数据还很简单 没看出来

正解 贪心
当栈顶元素比后面所有没进队的都大 出栈
否则 不断进栈
最后全出栈
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 1000010
using namespace std;
int n,now,top;
int a[maxn],s[maxn];
int stack[maxn];
int init()
{
    int x=0,f=1;char c=getchar();
    while(c<‘0‘||c>‘9‘){if(c==‘-‘)f=-1;c=getchar();}
    while(c>=‘0‘&&c<=‘9‘){x=x*10+c-‘0‘;c=getchar();}
    return x*f;
}
int main()
{
    freopen("haha.in","r",stdin);
    freopen("haha.out","w",stdout);
    n=init();now=n;
    for(int i=1;i<=n;i++)
      a[i]=init();
    for(int i=n;i>=1;i--)
      s[i]=max(s[i+1],a[i]);
    for(int i=1;i<=n;i++)
    {
        stack[++top]=a[i];
        while(top&&stack[top]>=s[i+1])
          printf("%d ",stack[top--]);
    }
    while(top)printf("%d ",stack[top--]);
    return 0;
}

【问题描述】

小Q对计算几何有着浓厚的兴趣。他经常对着平面直角坐标系发呆,思考一些有趣的问题。今天,他想到了一个十分有意思的题目:

首先,小Q会在轴正半轴和轴正半轴分别挑选个点。随后,他将轴的点与轴的点一一连接,形成条线段,并保证任意两条线段不相交。小Q确定这种连接方式有且仅有一种。最后,小Q会给出个询问。对于每个询问,将会给定一个点,请回答线段OP与条线段会产生多少个交点?

小Q找到了正在钻研数据结构的你,希望你可以帮他解决这道难题。

【输入格式】

第行包含一个正整数,表示线段的数量;

第行包含个正整数,表示小Q在轴选取的点的横坐标;

第行包含个正整数,表示小Q在轴选取的点的纵坐标;

第4行包含一个正整数,表示询问数量;

随后行,每行包含两个正整数,表示询问中给定的点的横、纵坐标。

【输出格式】

共行,每行包含一个非负整数,表示你对这条询问给出的答案。

【样例输入】

3

4 5 3

3 5 4

2

1 1

3 3

【样例输出】

0

3

【样例解释】

然后塔里啥都没有。

【数据规模与约定】

对于的数据,。

对于的数据,,坐标范围。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 200010
using namespace std;
int n,m,l,r,a,b,ans;
int x[maxn],y[maxn];
int init()
{
    int x=0,f=1;char c=getchar();
    while(c<‘0‘||c>‘9‘){if(c==‘-‘)f=-1;c=getchar();}
    while(c>=‘0‘&&c<=‘9‘){x=x*10+c-‘0‘;c=getchar();}
    return x*f;
}
int judge(int t)
{
    return y[t]*a>=x[t]*(y[t]-b);
}
int main()
{
    freopen("hahaha.in","r",stdin);
    freopen("hahaha.out","w",stdout);
    n=init();
    for(int i=1;i<=n;i++)
      x[i]=init();
    for(int i=1;i<=n;i++)
      y[i]=init();
    sort(x+1,x+n+1);
    sort(y+1,y+n+1);
    m=init();
    while(m--)
    {
        a=init();b=init();
        l=0,r=n;
        while(l<=r)
        {
            int mid=(l+r)/2;
            if(judge(mid))
            {
                ans=mid;
                l=mid+1;
            }
            else
              r=mid-1;
        }
        printf("%d\n",ans);
    }
    return 0;
}

/*
呵呵呵
开long long 就过了 不开就0分 ......
本来用的除法检验 不用来
后来不想用除法 移移项 结果呵呵...
全是10的8次方......

正解二分
判断一下P点是否在二分的线上方就行

*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
#define maxn 200010
using namespace std;
LL n,m,l,r,a,b,ans;
LL x[maxn],y[maxn];
LL init()
{
    LL x=0,f=1;char c=getchar();
    while(c<‘0‘||c>‘9‘){if(c==‘-‘)f=-1;c=getchar();}
    while(c>=‘0‘&&c<=‘9‘){x=x*10+c-‘0‘;c=getchar();}
    return x*f;
}
LL judge(LL t)
{
    return y[t]*a>=x[t]*(y[t]-b);
}
int main()
{
    freopen("hahaha.in","r",stdin);
    freopen("hahaha.out","w",stdout);
    n=init();
    for(LL i=1;i<=n;i++)
      x[i]=init();
    for(LL i=1;i<=n;i++)
      y[i]=init();
    sort(x+1,x+n+1);
    sort(y+1,y+n+1);
    m=init();
    while(m--)
    {
        a=init();b=init();
        l=0,r=n;
        while(l<=r)
        {
            LL mid=(l+r)/2;
            if(judge(mid))
            {
                ans=mid;
                l=mid+1;
            }
            else
              r=mid-1;
        }
        printf("%d\n",ans);
    }
    return 0;
}
时间: 2024-10-03 13:13:13

10.29 下午考试的相关文章

10.29 上午考试

P73 竞赛时间:????年??月??日??:??-??:?? 题目名称 第二题 死亡 凝视 名称 two death eyesight 输入 two.in death.in eyesight.in 输出 two.out death.out eyesight.out 每个测试点时限 1秒 1秒 1秒 内存限制 512MB 512MB 512MB 测试点数目 10 10 10 每个测试点分值 10 10 10 是否有部分分 无 无 无 题目类型 传统 传统 传统 注意事项(请务必仔细阅读):  

10.30下午考试

P76竞赛时间: ????年??月??日??:??-??:?? 题目名称 他 她 它 名称 he she it 输入 he.in she.in it.in 输出 he.out she.out it.out 每个测试点时限 1 秒 1 秒 1 秒 内存限制 512MB 512MB 512MB 测试点数目 10 10 10 每个测试点分值 10 10 10 是否有部分分 无 无 无 题目类型 传统 传统 传统   他[问题描述]一张长度为N的纸带, 我们可以从左至右编号为0 − N( 纸带最左端标号

10.31 下午考试

巧克力棒(chocolate)Time Limit:1000ms Memory Limit:64MB题目描述LYK 找到了一根巧克力棒,但是这根巧克力棒太长了, LYK 无法一口吞进去.具体地,这根巧克力棒长为 n,它想将这根巧克力棒折成 n 段长为 1 的巧克力棒,然后慢慢享用.它打算每次将一根长为 k 的巧克力棒折成两段长为 a 和 b 的巧克力棒,此时若 a=b,则LYK 觉得它完成了一件非常困难的事,并会得到 1 点成就感.LYK 想知道一根长度为 n 的巧克力棒能使它得到最多几点成就感

10.29 考试总结

10.29 考试总结 a 咋一看是暴力跑循环,实际上还是暴力循环.只不过根据题目意思,实际上公式\(f(x) + x = n\)而这个f(x)就是x各个位的和.大概脑补一下还是能算出来f(x)最大也就是9*位数就可以将整体的循环控制在几千...... b 设\(dp[i][j][k][0/1]\) 表示当前字符串s 到了第i 位,字符串t 到了第j 位,目前一共 选出了k 个子串,s[i] 与t[j] 是否都被选择的最大长度. 考虑s[i] 与t[j] ,如果我们不将它们加入选择的k 个子串,那

DP&amp;图论 DAY 6 下午 考试

DP&图论  DAY 6  下午  考试 3 5 10 3 1 3 437 1 2 282 1 5 328 1 2 519 1 2 990 2 3 837 2 4 267 2 3 502 3 5 613 4 5 132 1 3 4 10 13 4 1 6 484 1 3 342 2 3 695 2 3 791 2 8 974 3 9 526 4 9 584 4 7 550 5 9 914 6 7 444 6 8 779 6 10 350 8 8 394 9 10 3 7 10 9 4 1 2 3

4月10日下午学习日志

   2017年4月10日下午复习了高等数学,继续看了张宇高等数学基础班课程视频第四讲考研数学的基本定理串讲十大基本理论综述及其例题讲解,在此过程中能巩固之前所学内容,不懂的问题得以解决,印象也更加深刻,对复习有很大的帮助,背英语单词100个°

背水一战 Windows 10 (29) - 控件(文本类): RichTextBlock, RichTextBlockOverflow, RichEditBox

原文:背水一战 Windows 10 (29) - 控件(文本类): RichTextBlock, RichTextBlockOverflow, RichEditBox [源码下载] 作者:webabcd 介绍背水一战 Windows 10 之 控件(文本类) RichTextBlock RichTextBlockOverflow RichEditBox 示例1.RichTextBlock 的示例Controls/TextControl/RichTextBlockDemo.xaml <Page

10.28 rsync工具介绍 - 10.29/10.30 rsync常用选项 - 10.31 rsync通过ssh同步

- 10.28 rsync工具介绍 - 10.29/10.30 rsync常用选项 - 10.31 rsync通过ssh同步 # 10.28 rsync工具介绍 -/A目录 --> /B目录(A目录更新了一个文件,每次更新都需要把A目录拷贝到B目录),如果用cp命令 比较浪费时间,耗费磁盘空间,磁盘压力 读写之类的, -使用rsync -av /etc/passwd /tmp/1.txt -a选项就是包含了好几个选项  ,v 是可视化,可以看到拷贝的过程 ``` [[email protecte

八周二次课(1月30日) 10.28 rsync工具介绍 10.29/10.30 rsync常用选项 10.31 rsync通过ssh同步

八周二次课(1月30日)10.28 rsync工具介绍10.29/10.30 rsync常用选项10.31 rsync通过ssh同步===================================================================================================================================================================rsync命令:是一个远程数据同步工具,可