2021 CCCC天梯赛补题

article/2025/7/2 0:09:13

前言不想看请直接跳过~~~~
前言+检讨:天梯赛我拉垮了,我拖了队伍后腿,我有罪。
分析原因,首先是前一个星期训练量不够,没有跟上队友训练的进度,一些基础的STL的用法使用的也不熟练。
第二,没有把STL用熟,或者是没有真正会用导致比赛时思路有些混乱,打断了思路的连贯性。
第三,把过多时间精力消耗在Debug上,消磨了自己的心态和时间,比如L1-8这道题其实双指针就可以轻松解决的,我非耍小聪明整STL装逼,结果最后调不出来还得再用双指针,分也没拿全,我有罪,拖了全队的后腿。
第四,L2的dfs用的不熟,没有将算法熟练于心像Hello World那些轻松敲出来,反映出近期学习不踏实,有些知识点看似掌握了写了题解,其实换个壳子还是不会。
第五,客观的因素比如电脑死机啥的我就不谈了,就是我水平不够罢了。
今后继续努力!!!


L1前几题太水了,从小干货开始

天梯赛题目目录

  • L1-078 吉老师的回归 (15 分)
    • 思想
    • AC代码
  • L1-079 天梯赛的善良 (20 分)
    • 思想
    • AC代码
  • L1-080 乘法口诀数列 (20 分)
    • 思想
    • Half-AC代码(两个点没过)
    • AC代码
  • L2-037 包装机 (25 分)
    • 思想
    • AC代码
  • L2-038 病毒溯源 (25 分)
    • AC代码


L1-078 吉老师的回归 (15 分)

在这里插入图片描述

输入样例 1:

5 1
L1-1 is a qiandao problem.
L1-2 is so...easy.
L1-3 is Easy.
L1-4 is qianDao.
Wow, such L1-5, so easy.

输出样例 1:

L1-4 is qianDao.

输入样例 2:

5 4
L1-1 is a-qiandao problem.
L1-2 is so easy.
L1-3 is Easy.
L1-4 is qianDao.
Wow, such L1-5, so!!easy.

输出样例 2:

Wo AK le

思想

这道题恶心在哪呢?其实就是输入的时候如果用了scanf注意前面加getchar就完事了。
想法的话这道题很简单,就是在遍历的时候标记哪些题目是跳过的,如果跳不过的题则消耗一次m,如果某次循环m为0,而且此时做的题目无法跳过,那么就直接输出这道题。如果循环结束后m还大于或等于0(可能最后一次简单题消耗掉了),那么就输出Wo AK le。

AC代码

#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define pre(i,a,b) for(int i=a;i>=b;--i)
#define m(x) memset(x,0,sizeof x)
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define PI acos(-1)
typedef long long ll;
const int INF =  0x3f3f3f3f;
const int mod = 1e9+7;
const int maxn = 1e5+10;
string str1 = "qiandao";
string str2 = "easy";
string ans;
int main()
{int n,m;int flag = 0;cin >> n >> m;getchar();rep(i, 1, n){string str;getline(cin,str);int f = false;//cout << str << endl;//这里调用STL函数库,是简单题则f=truestring::size_type idx;idx = str.find(str1);if(idx!=string::npos)f = true;idx = str.find(str2);if(idx!=string::npos)f = true;//注意判断条件有两条,一个是m==0,第二个是不是简单题if(m==0&&f==false){flag = 1;ans = str;}//就是标记为输出非AK情况if(!f)m--;}if(flag)cout << ans << endl;else cout << "Wo AK le" << endl;return 0;
}

L1-079 天梯赛的善良 (20 分)

在这里插入图片描述
输入样例:

10
86 75 233 888 666 75 886 888 75 666

输出样例:

75 3
888 2

思想

这道题水的,暴力完事,只需拿个桶记录最大最小,以及其个数就完事了,每次更新,一次便利即可

AC代码

#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define pre(i,a,b) for(int i=a;i>=b;--i)
#define m(x) memset(x,0,sizeof x)
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define PI acos(-1)
typedef long long ll;
const int INF =  0x3f3f3f3f;
const int mod = 1e9+7;
const int maxn = 1e6+10;
int a[maxn];
int main()
{int n,x;int maxx,minn;maxx = -1;minn = INF;cin >> n;rep(i,1,n){scanf("%d",&x);if(!a[x]){maxx = max(maxx,x);minn = min(minn,x);}a[x] ++;}printf("%d %d\n",minn,a[minn]);printf("%d %d\n",maxx,a[maxx]);   return 0;
}

L1-080 乘法口诀数列 (20 分)

这道题说实话当时只拿了17分,有点失望····不知道哪个点卡了(主要切慢了···)

在这里插入图片描述
输入样例:

2 3 10

输出样例:

2 3 6 1 8 6 8 4 8 4

思想

这道题怎么说呢,说恶心其实还好吧,主要是题意要看清,之前题意没搞懂直接莽就很浪费时间····题意就是先给你两个初始数a1,a2,之后的数据通过这两个初始数计算而来,也就是a3为a1*a2,但是如果a3是多位数就得把每一位按权值高到低依次存放入a数组。具体例子看看Sample就懂了。
所以我们用双指针标记,一个是当前已经算好的新数存进stack倒一下(LIFO的原则,具体可以查看我的二进制水题那有写---->传送门)然后存入a数组,另一个指针标记当前是把哪两个数相乘,便于接下来向后移动。


Half-AC代码(两个点没过)

#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define pre(i,a,b) for(int i=a;i>=b;--i)
#define m(x) memset(x,0,sizeof x)
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define PI acos(-1)
typedef long long ll;
const int INF =  0x3f3f3f3f;
const int mod = 1e9+7;
const int maxn = 1e5+10;
int a[maxn];
int weishu(int k)
{int num = 0;while(k){k/=10;num++;}return num;
}
int main()
{int x,y,n;scanf("%d%d%d",&x,&y,&n);int index1,index2;//初始化指针index1 = 1;index2 = 3;a[1] = x;a[2] = y;if(x==0||y==0)goto out;while(index2<=n){int temp = a[index1]*a[index1+1];//如果位数就只有一位,那么直接存入此时的index2位置,同时index2向后一位if(weishu(temp)==1){a[index2++] = temp;}else{//因为算出来的多位数是要从权值高到低存放a的stack<int>s;while(temp){s.push(temp%10);temp/=10;}//然后再依次放入a树诅while(!s.empty()){a[index2++] = s.top();s.pop();//如果下一位需要存放的位置已经超出了需要输出的位数,则及时止损if(index2>n)break;}}index1++;}//输出out:rep(i, 1, n){if(i!=n)printf("%d ",a[i]);else printf("%d\n",a[i]);}return 0;
}

这道题有俩个点没过,就挺奇怪的,特判也加了·······在这里插入图片描述


AC代码

#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define pre(i,a,b) for(int i=a;i>=b;--i)
#define m(x) memset(x,0,sizeof x)
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define PI acos(-1)
typedef long long ll;
const int INF =  0x3f3f3f3f;
const int mod = 1e9+7;
const int maxn = 1e5+10;
int a[maxn];
int weishu(int k)
{int num = 0;while(k){k/=10;num++;}return num;
}
int main()
{int x,y,n;scanf("%d%d%d",&x,&y,&n);int index1,index2;//初始化指针index1 = 3;index2 = 3;a[1] = x;a[2] = y;if(x==0||y==0)goto out;do{int temp = a[index1-1]*a[index1-2];//如果位数就只有一位,那么直接存入此时的index2位置,同时index2向后一位if(temp<10){a[index2++] = temp;}else{a[index2++] = temp /10;a[index2++] = temp %10;}index1++;}while(index2<=n);//输出out:cout << a[1];for (int i = 2; i <= n; i++) {cout << " " << a[i];}cout << endl;return 0;
}

见鬼了,改了几个无关紧要的点,反而能过····无语,毒瘤测试点一生黑


L2-037 包装机 (25 分)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

输入样例:

3 4 4
GPLT
PATA
OMSA
3 2 3 0 1 2 0 2 2 0 -1

输出样例:

MATA

思想

这道题就硬模拟呗~~~用STL吧

借用朋友的代码了~~~
https://blog.csdn.net/qq_52480906/article/details/116116174


AC代码

#include<bits/stdc++.h>
using namespace std;
queue<char> q[150];
stack<char> k;
int main() {int n, m, smax;cin >> n >> m >> smax;char x;for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {cin >> x;q[i].push(x);}}//读入队列int op;while (cin >> op) {if (op == 0&&!k.empty()) {//操作符为0cout << k.top();k.pop();}else if (op != -1) {//操作符为推出物品if (q[op].empty()) {//框空就不执行continue;}char t;t = q[op].front();q[op].pop();if (k.size() >= smax) {//框满就特判cout << k.top();k.pop();k.push(t);}else {k.push(t);}}else if (op == -1) {//操作符为结束break;}}cout << endl;return 0;
}

L2-038 病毒溯源 (25 分)

在这里插入图片描述在这里插入图片描述

输入样例:

10
3 6 4 8
0
0
0
2 5 9
0
1 7
1 2
0
2 3 1

输出样例:

4
0 4 9 1

AC代码

#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define pre(i,a,b) for(int i=a;i>=b;--i)
#define m(x) memset(x,0,sizeof x)
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define PI acos(-1)
#define pb push_back
typedef long long ll;
const int INF =  0x3f3f3f3f;
const int mod = 1e9+7;
const int maxn = 1e5+10;
vector<int> mp[maxn],ans,temp;
int vis[maxn];
int maxx = -1;
void dfs(int u, int k)
{if (k > maxx)//如果路径长度比现有长度更长{maxx = k;//更新最大长度ans = temp;//更新最大长度的序列}for (int i = 0; i < mp[u].size(); i++){temp.push_back(mp[u][i]);//模拟每一步dfs(mp[u][i], k + 1);temp.pop_back();//不要忘记pop出来}return;
}
int main()
{m(vis);int n;cin >> n;rep(i,0,n-1){int T;cin >> T;while(T--){int x;cin >> x;mp[i].pb(x);vis[x] = 1;}sort(mp[i].begin(), mp[i].end());}//    rep(i, 0, n-1)
//    {
//        for(int j=0;j<mp[i].size();j++)
//        cout << mp[i][j] << " ";
//        cout << endl;
//    }int std = 0;rep(i, 0, n-1)if(vis[i]==0){std = i;break;}dfs(std,0);cout << maxx+1 << endl;printf("%d",std);rep(i, 0, ans.size()-1){printf(" %d",ans[i]);}cout << endl;return 0;
}


http://chatgpt.dhexx.cn/article/30f09cRU.shtml

相关文章

2021年CCCC天梯赛 【部分题题解】

天梯赛有三个level&#xff0c;第一个level基本就是语法题&#xff0c;第二个level是基础算法和STL库的一些应用。 第三个level就是一些难的算法。 L3的题都不是太会&#xff0c;有思路但是写不出来。 目录 L1人与神两小时学完C语言强迫症降价提醒机器人大笨钟的心情吉老师的回…

2021年CCCC天梯赛L3 还原文件题解

题目如下 一份重要文件被撕成两半&#xff0c;其中一半还被送进了碎纸机。 我们将碎纸机里找到的纸条进行编号&#xff0c;如图 1 所示。然后根据断口的折线形状跟没有切碎的半张纸进行匹配&#xff0c;最后还原成图 2 的样子。 要求你输出还原后纸条的正确拼接顺序。 图 1…

2020CCCC天梯赛补题记录

目录 总结补题L2-035 完全二叉树的层序遍历 (25分)L2-036 网红点打卡攻略 (25分)L3-025 那就别担心了 (30分)28分版本&#xff1a;30分版本(记忆化搜索) 总结 1.口罩那题打完就只剩三十分钟了&#xff0c;之后卡在了完全二叉树的层序遍历那题&#xff0c;就没有再敢往后看&…

2021 CCCC天梯赛L1补题

前言 这次天梯赛表现没有达到预期&#xff0c;L1的分没有拿全&#xff0c;L2有2题没考虑完全&#xff0c;总之很愧疚拖了队友后腿。今天先补上L1没拿满分的题。 L1补题 前言L1-078 吉老师的回归输入样例1输出样例1输入样例2输出样例2 思路代码实现 L1-080 乘法口诀数列输入样例…

CCCC天梯赛 L2-037 包装机

CCCC天梯赛 L2-037 包装机 一种自动包装机的结构如图 1 所示。 首先机器中有 N 条轨道&#xff0c;放置了一些物品。 轨道下面有一个筐。 当某条轨道的按钮被按下时&#xff0c;活塞向左推动&#xff0c;将轨道尽头的一件物品推落筐中。 当 0 号按钮被按下时&#xff0c;机械手…

2022年CCCC天梯赛题解

L1-1今天我要赢 原题链接 代码 #include<bits/stdc.h> #define int long long #define rep(i, a, b) for(int ia;i<b;i) #define Rep(i, a, b) for(int ia;i>b;--i) using namespace std; const int N 10005; inline int read(){int s0,w1;char chgetchar();wh…

第八届cccc团体程序设计天梯赛——个人参赛总结——无代码纯粹的参赛总结

第八届cccc团体程序设计天梯赛——个人参赛总结——无代码纯粹的参赛总结 目录 第八届cccc团体程序设计天梯赛——个人参赛总结——无代码纯粹的参赛总结引言~介绍一下cccc天梯赛&#xff08;选读&#xff09;开篇介绍&#xff08;以下是个人经历部分的分享&#xff09;赛前准备…

怎样合理地营销推广App和吸引住大量的客户提高转化?

开发App进行后&#xff0c;一切应用软件都必须营销推广&#xff0c;尤其是在互联网技术收益消退的情况下&#xff0c;怎样合理地营销推广和吸引住大量的客户总流量早已变成很多互联网公司最关注的难题。 APP运用引流方法工作中看上去很繁杂&#xff0c;难度系数很大&#xff0…

APP在应用市场内该如何做推广

苹果应用商城的自然流量都是通过精品推荐&#xff0c;畅销排行榜和搜索来获取的&#xff0c;此外&#xff0c;应用名称、副标题、应用截图视频、应用描述、用户评论、下载量、用户留存率还有曝光量&#xff0c;这些都是影响ASO优化的关键因素。 为了防止一些应用堆砌热词&…

App推广拉新的6大方式,你都玩得转吗?

中国的互联网发展至今,除了App以外,公众号,小程序在微信生态中的独领风骚,快应用也像“太子”一样在11家国产手机厂商的簇拥下茁壮成长,而百度的百家号、头条的头条号、阿里的大鱼号也已经和微信开始“正面刚”。App这种古老的产品形态,正受到市场的不断冲击。 根据Quest…

什么是App推广技术?

在移动互联网红利消失殆尽、市场竞争日趋激烈的背景下,App的推广越来越难了,如何去有效的进行推广,吸引更多的用户流量,成为了众多互联网企业最为关注的问题。 而App 推广技术指的就是通过一些技术的方式来提高 App 推广效率,帮助众多互联网企业,解决 App 推广难的问题。…

如何正确推广App,实现高转化用户。

个性化深度链接技术的应用。深度链接使网页和App两者串联起来&#xff0c;减少了转换漏斗中的损失。再加上深度链接不仅能改善潜在用户的转化&#xff0c;对沉睡用户的唤醒同样也能发挥关键作用。 类型不含深度链接使用深度链接携带参数首页商品的id号&#xff0c;房间号&…

电商App:提高推广转化率的几件事

双十一将至&#xff0c;电商App获客却越来越难&#xff0c;成本越来越高。想要做好用户拉新并转化为有效用户&#xff0c;这里整理了一套拉新留存方法论&#xff0c;可以参考使用。 一、找准目标用户 首先明确用户群定位&#xff0c;可以从年龄范围、职业范围、性别、地域、消…

微信开放平台unionID 的利用(app推广转化率的解决方案)

打开微信公众号开发文档&#xff0c;开幕就是这段话。微信开放平台提供了unionID 一个用户虽然对多个公众号和应用有多个不同的OpenID&#xff0c;但他对所有这些同一开放平台账号下的公众号和应用&#xff0c;只有一个UnionID 正常的app推广方案有很多平台在做&#xff0c;费…

小程序手写板电子签名

本人已经全部处理好&#xff0c;可以直接粘贴文件使用不予要修改&#xff0c;可保存图片到本地&#xff0c;也可以转成base64位码。源码地址&#xff1a;https://download.csdn.net/download/zzsjsp/11816038

怎么制作电子签名?

随着科技的进步&#xff0c;电子签名应用的领域更广泛&#xff0c;尤其是电子签名的法律效力问题上&#xff0c;通过技术手段实现签名和签署人身份对应&#xff0c;利用不可被更改的内容形式&#xff0c;保障签名的电子文件是原文&#xff0c;广泛应用于电子商务的场景。 电子签…

电子签名的制作和使用

电子签名的制作和使用 一、在Word文档中插入手写签名生成电子签名1、准备好签名图片。2、用Word打开需要签名的文件&#xff0c;点菜单中的“插入>插图>图片”来选择已经写好的签名图片&#xff0c;插入后可以调整图片大小。3、点击菜单“格式>颜色>黑白”。4、点击…

签名涂鸦手写板

布局文件 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:…

手写签名转化为电子版

用手机拍摄手写签名 .进行裁剪为合适大小 重新着色 设置为透明色Ctrlc复制图片CtrlAltV 选择位图 将图片设置为 浮于文字上方 8.最终得到的结果

如何制作电子签名

如何制作电子签名 获取一张带有名字的图片使用python将图片修改为透明底致谢 获取一张带有名字的图片 首先&#xff0c;在白纸上写好你的名字&#xff0c;使用相机拍摄一张图片&#xff08;可以使用一些扫描软件进行拍摄&编辑&#xff0c;比较方便&#xff09;。将图片进行…