前言

不要在意标题,既然是随记,就随性点()

今天参加了2023年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛)_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com)这个比赛,只做出来两道,赛后又补了两道,其余的也看了看大佬的代码有些能看懂,有些看不懂,也瞻仰了大佬的代码(看到最后一题有位清华大佬写了300多行代码orz)

不过这次比赛也是有点收获的,先把自己的四道题解写下来吧(或许也不能说是题解,只是做题时的思路)

A Xor B Problem

题目说了一堆,最后理解下来其实就是一个数组for循环两遍找a[i] 与a[j](i!=j)是否相同,相同的话就ans++;

不过当我看了这个数据范围后就放弃了双for

emm,我觉得应该会超时(没有双for去算),于是我去观察了一下,其实也可以用两个单独的for循环,用一个数组单独记录每个输入的数字的出现次数,然后再平方就可以了.

(值得注意的是,这个数据并不是1e5,而是要大于1e5,至少1e6,当时比赛中有通报过,否则是过不了ac的)

代码实现:

#include<bits/stdc++.h>
#define int long long
using namespace std; const int N = 1e6+10;
int n,m,a[N],b[N],suma,sumb,ans;
signed main()
{
scanf("%lld",&n);
for(int i=0;i<n;i++)
{
scanf("%lld",&m);
a[m] ++;
}
for(int i=0;i<N;i++)
ans += pow(a[i], 2);
printf("%lld",ans);
return 0;
}

吃苹果

题意就是小龙的n个苹果在早上吃还是晚上吃获得的愉悦值和最大,不过在晚上只能吃k天,于是我们只要算出晚上与白天愉悦值差(即白天减去晚上的愉悦值)最小的进行排序,然后取k天晚上的,再从k+1天取白天的就可以了.

代码实现:

#include<bits/stdc++.h>
#define int long long
using namespace std; const int N = 1e5+10;
int n,m,a[N],b[N],suma,sumb,ans;
struct ss{
int x,y;
}s[N];
bool cmpb(struct ss l,struct ss r)
{
return l.x - l.y < r.x - r.y;
}
signed main()
{
scanf("%Ld %Ld",&n,&m);
for(int i=0;i<n;i++)
{
scanf("%Ld %Ld",&s[i].x,&s[i].y);
}
sort(s,s+n,cmpb);
for(int i=0;i<m;i++)
ans += s[i].y;
for(int i=m;i<n;i++)
ans += s[i].x;
printf("%Ld\n",ans);
return 0;
}

n皇后问题

这道题也是好理解的,就是把皇后的路线(同行,同列,同斜)进行标记,之后输入的再进行判断即可.

说来惭愧,其实在我印象里我好像做过这种题,不过我当时想的是用二维数组的,(但是这个数据范围1e6肯定是不能用二维的a----), 于是我就没过.

后来看了一下别人的代码突然理解了,这里有个小技巧,那就是坐标轴上对角线的差和是不变的,于是我们可以拿这个来做标记,凡是和皇后对角线差和相同的就不能放皇后,还有就是如果对角线差事负数的话,可以加一个n或者是一个很大的数来使它变得合理.

代码实现:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e7+10;
int n,m,a[N],t,x,y,b[N],c[N],d[N];
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin >> n >> t;
while(t--)
{
cin >> x >> y;
if(!a[x] && !b[y] && !c[x+y] && !d[x-y+n])
{
a[x] = b[y] = c[x+y] = d[x-y+n] = 1;
cout << "Yes\n";
}
else
{
cout << "No\n";
} }
return 0;
}

分苹果

明明是第四题,但却是我一次就过的题...

简单说下题意吧,就是用两根棍子交叉,然后记录在这两根棍子的四个区域的苹果数量从小到大输出就行了.

可以想象成坐标轴,然后统计四个象限的苹果数量(就是把苹果坐标带进两条线的方程判断大于0和小于0)从小到大输出.

代码实现:

#include<bits/stdc++.h>
#define int long long
using namespace std; const int N = 1e5+10;
int n,m,a[N],ae,be,ce,ar,br,cr,x,y;
int frist(int c,int b)
{
return c * ae + b * be + ce;
}
int second(int c,int b)
{
return c * ar + b * br + cr;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin >> n;
cin >> ae >> be >> ce ;
cin >> ar >> br >> cr ;
while(n--)
{
cin >> x >> y;
if(frist(x,y)>0 && second(x,y)>0)
a[1] ++ ;
if(frist(x,y)>0 && second(x,y)<0)
a[2] ++ ;
if(frist(x,y)<0 && second(x,y)>0)
a[3] ++;
if(frist(x,y)<0 && second(x,y)<0)
a[4] ++ ;
}
sort(a+1,a+5);
for(int i=1;i<5;i++)
cout << a[i] << ' ';
return 0;
}

后语

没了,其他的题有些能看懂但对于蒟蒻的我还不能完全理解,就写道这儿吧.

噢,还有,今天从学长那学到个小知识:

 在使用

ios::sync_with_stdio(0);

这个优化cin的效率时不要和scanf会混用.切记!!!

否则可能会导致输入的数据错误和效率变慢;

具体的也不太懂,可以参考下面两篇文章:

cin输入的优化与cin和scanf混用时输入错误的问题 - 代码先锋网 (codeleading.com)

竞赛中应该用scanf还是cin? scanf&printf与cin&cout的比较+快读快写_为什么推荐用scanf不用cin_小白还在写代码的博客-CSDN博客

2023上海理工大学校内选拔赛A-D题的更多相关文章

  1. 蓝桥校内选拔赛B题(不一定正确)

    由于没报名,只能靠别人发的截图来做了 我的思路:全排列,判断加号位置,判断/位置,看是否存在这个相等的 时间复杂度较高,在10e8左右 代码: #include<cstdio> #incl ...

  2. 2018天梯赛、蓝桥杯、(CCPC省赛、邀请赛、ICPC邀请赛)校内选拔赛反思总结!

    才四月份,上半年的比赛就告一段落了.. 天梯赛混子,三十个人分最低,把队友拖到了国三,蓝桥杯省二滚粗,止步京城,旅游选拔赛成功选为替补二队,啊! 不过既然已经过去,我们说些乐观的一面,积累了大赛经验是 ...

  3. chd校内选拔赛题目+题解

    题目链接   A. Currency System in Geraldion 有1时,所有大于等于1的数都可由1组成.没有1时,最小不幸的数就是1. #include<iostream> ...

  4. HDU 6447 - YJJ's Salesman - [树状数组优化DP][2018CCPC网络选拔赛第10题]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6447 Problem DescriptionYJJ is a salesman who has tra ...

  5. 2013 蓝桥杯校内选拔赛 java本科B组(题目+答案)

    一.标题:正则表示     正则表达式表示了串的某种规则或规律.恰当地使用正则表达式,可以使得代码简洁.事半功倍.java的很多API都支持正则表达式作为参数.其中的String.split就是这样. ...

  6. HDU 6441 - Find Integer - [费马大定理][2018CCPC网络选拔赛第4题]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6441 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...

  7. 蓝桥杯校内选拔赛/POJ 数独(深搜)

    Sudoku Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 14530   Accepted: 7178   Special ...

  8. 第五届蓝桥杯校内选拔第七题_(树型dp)

    G将军有一支训练有素的军队,这个军队除开G将军外,每名士兵都有一个直接上级(可能是其他士兵,也可能是G将军).现在G将军将接受一个特别的任务,需要派遣一部分士兵(至少一个)组成一个敢死队,为了增加敢死 ...

  9. 第五届蓝桥杯校内选拔第六题_(dfs)

    你一定听说过“数独”游戏.如[图1.png],玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列.每一个同色九宫内的数字均含1-9,不重复. 数独的答案都是唯一的,所以 ...

  10. Wiki with Alpha

    Problem G. Wiki with AlphaInput file: standard input Time limit: 1 secondOutput file: standard outpu ...

随机推荐

  1. Linux 内核:设备树中的特殊节点

    Linux 内核:设备树中的特殊节点 背景 在解析设备树dtb格式的时候,发现了这个,学习一下. 参考: https://blog.csdn.net/weixin_45309916/article/d ...

  2. [golang]在Gin框架中使用JWT鉴权

    什么是JWT JWT,全称 JSON Web Token,是一种开放标准(RFC 7519),用于安全地在双方之间传递信息.尤其适用于身份验证和授权场景.JWT 的设计允许信息在各方之间安全地. co ...

  3. .NET 6 Entity Framework Core Db First(1) 创建模型

    项目准备 1.开发环境 vs2022  .NET6 2.创建项目 新建项目 ASP.NET Core Web API,解决方案名称:EFDBFirstDemo,项目名称:EFDBFirstDemo.A ...

  4. GCC8 编译优化 BUG 导致的内存泄漏

    1. 背景 1.1. 接手老系统 最近我们又接手了一套老系统,老系统的迭代效率和稳定性较差,我们打算做重构改造,但重构周期较长,在改造完成之前还有大量的需求迭代.因此我们打算先从稳定性和迭代效率出发做 ...

  5. Python爬取小说+Servlet+C3P0+MVC构建小说api

    一.摘要: 使用python爬取网络小说数据存入数据库,利用C3P0数据库连接池获取数据库数据,采用MVC三层架构对数据库数据进行操作,输出JSON格式数据到前端页面 二.内容: 1.gitee外链消 ...

  6. influxdb得导出与导入

    转载请注明出处: 1.备份元数据 基本语法: influxd backup <path-to-backup> 备份元数据,没有任何其他参数,备份将只转移当前状态的系统元数据到path-to ...

  7. oeasy教您玩转vim - 14 - # 行头行尾

    行头行尾 回忆上节课内容 我们这次了解了 大词 和 小词 小词 就是我们常规意义的词 被 =." 等标点分开的词 大词 里面包括了 =." 等标点 只能被空格.tab.换行分割 W ...

  8. odoo 为form表单视图添加chatter功能

    实践环境 Odoo 14.0-20221212 (Community Edition) 需求描述 如图,给表单新增一个类似聊天的窗口,当记录一些表单活动(本例为自动记录当前记录状态变化) 需求实现 模 ...

  9. UE-自带的HotUpdate【转】

    原文链接:https://baijiahao.baidu.com/s?id=1745200406976270792&wfr=spider&for=pc 这是百度可以直接搜索到的 UE4 ...

  10. MFC 关于按键状态获取

    alt键会阻断消息? moousemovealt键无法判断,按下一次 并松开一次状态改变一次#define KeyState GetAsyncKeyState BOOL bCtrlDown = (Ke ...