当前位置: 首页 > news >正文

寒假集训思维训练1题解

在这里插入图片描述
今日榜单,再接再厉。
每天晚上都要去补题,今天不做,明天就越欠越多

A - Easy Problem
比较简单,可以用数学公式来算,也可以循环枚举 b b b,因为 n − b n-b nb得到的 a a a要求为正整数,所以枚举 b b b 1 1 1开始到 n − 1 n-1 n1结束,得到的 a a a就是正整数,答案 n − 1 n-1 n1

B - Normal Problem
生活中的一种现象,透过玻璃去看贴纸的另一面形状,实际上是一种逆序图形翻转,同学们可以自己在草稿纸上写ABC,然后从反面观察一下

C - Hard Problem
先讨论第一行的猴子能不能都满足,如果不能都满足那么只能让 M M M个猴子坐,再讨论第二行能不能都满足,剩下的位置拿去分给第三类猴子,直到没有猴子了或者没位置了

#include<bits/stdc++.h>
using namespace std;
int main() {int t;cin>>t;for(int i=1;i<=t;i++) {int n,a,b,c;cin>>n>>a>>b>>c;if(a>=n) {a=n;}if(b>=n) {b=n;}if(c>2*n-a-b){c=2*n-a-b;}cout<<a+b+c<<endl;
}return 0;
}

D - Harder Problem
题意要读懂,意思是给定 A A A数组,问能不能构造出一个 B B B数组, B B B数组的元素值范围是 [ 1 N ] [1~N] [1 N] ,问能不能在 B [ 1 − − i ] B[1--i] B[1i]这段里面,满足 A [ i ] A[i] A[i]是众数。这是属于构造题,构造题同学们要思考的特殊一点,往往构造题的方法比较特殊,有规律。
我们可以考虑构造一个 N N N的排列,因为每个数字只出现一次,所以所有的数字都是众数,然后按A数组的元素顺序,去输出这个排列就行了。即先输出A数组中有的元素,再输出其余的元素来凑长度

#include<bits/stdc++.h>
using namespace std;
#define N 200005
long long t,vis[N],cnt,n,a[N];
int main(){cin>>t;while(t--){memset(vis,0,sizeof(vis)),cnt=0;cin>>n;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=n;i++){if(vis[a[i]]==1) cnt++;else{vis[a[i]]=1;cout<<a[i]<<" ";}}for(int i=1;i<=n;i++){if(vis[i]!=1) cout<<i<<" ";}}
}

E - Insane Problem

数据范围比较大,首先Kn 指的是 n n n个K相乘,题目的式子可以变形一下 y = x ∗ k y=x* k y=xkn
那么L2 <= y <= R2 变为 L2 <= x* Kn <= R2 令左右两边区间同时除以Kn 可以得到一个 X X X的 区间范围,
在这里插入图片描述

综合原本题目给定的 X X X范围 ,两个范围重合的部分就是题目的解。
又因为 n n n不确定,所以同学们要自己去枚举 n n n 然后去算区间交集

参考代码如下

#include<bits/stdc++.h>using namespace std;
int main()
{int t;cin>>t;while(t--){long long int  k,l1,r1,l2,r2;cin>>k>>l1>>r1>>l2>>r2;long long int  kn=1,ans=0;for(int n=0;r2/kn>=l1;n++)  //枚举n   {	// x的范围 [l1,r1]  以及  [l2/kn , r2/kn]  两个区间不相交  就没必要再枚举了 ans+=max(0ll,min(r2/kn,r1)-max((l2-1)/kn+1,l1)+1ll); // 计算区间交   kn*=k;}cout<<ans<<'\n';}return 0;
}

F - Minimize!
太简单了自己做

G - osu!mania
输入字符矩阵,从最后一行开始枚举,依次输出每个#所在哪一列

#include<bits/stdc++.h>
using namespace std;
char A[510][510];
int main() {int t,n;cin>>t;for(int i=1;i<=t;i++){cin>>n;for(int j=1;j<=n;j++){for(int k=1;k<=4;k++){cin>>A[j][k];}}for(int j=n;j>=1;j--){for(int k=1;k<=4;k++){if(A[j][k]=='#'){cout<<k<<' ';}}}cout<<endl;}return 0;
}

H - The Legend of Freya the Frog
思考,只考虑一个轴方向的跳跃,那么达到目标 x x x , y y y 最少要多少步 ?
很明显是利用 x x x整除 k k k ,这样子能最快到达 x x x 但是由于题目每跳跃一次,方向就要改变一次,所以说最快到达目标 x x x ,目标 y y y的时间可能不一样,所以先到的,需要等待。
我们考虑一个问题,假设最快跳跃到 x x x需要 n e e d x needx needx步,最快跳跃到 y y y需要 n e e d y needy needy步,由于跳一次要换方向,一开始从x轴开始跳,我们可以视“跳一次x,跳一次y” 为一组 ,每一组需要两步操作
那么最终得看,哪个方向最晚才能达到目标。如果x轴方向是较晚到达的,即y方向比较早到达,以后y方向的跳跃都是原地跳。那么一共需要跳 n e e d x ∗ 2 − 1 needx*2 -1 needx21 次操作才能到达 ( x , y ) (x,y) (x,y) ;如果是y方向较晚到达,那么需要 n e e d y ∗ 2 needy*2 needy2次操作,因为以 y y y结束

#include<bits/stdc++.h>
using namespace std;
int main(){int t;cin>>t;while(t--){int x,y,k;cin>>x>>y>>k;int needx=x/k+(x%k!=0);int needy=y/k+(y%k!=0);int ans;if(needy>=needx){ans=needy*2;}else{ans=needx*2-1;}cout<<ans<<'\n';}return 0;
}

I - Satyam and Counting
坐标点的 y y y轴比较特殊,所以考虑一下有几种类型的三角形,去枚举坐标点就行了

#include <bits/stdc++.h>
using namespace std;
int cnt[2][300010];
int main(){int T;cin>>T;while(T--){int n;cin>>n;memset(cnt,0,sizeof(cnt)); // 把cnt数组清零 for(int i=1;i<=n;i++){int x,y;cin>>x>>y;cnt[y][x]++;}long long int ans=0;for(int i=0;i<=n;i++){  //枚举x 坐标  if(cnt[0][i]&&cnt[1][i]){ans+=n-2;}//如果竖着的  有两个点,那么它与其他的N-2个点都可以构成直角三角形   if(i+2<=n){if(cnt[0][i]&&cnt[0][i+2]&&cnt[1][i+1]){ans++;}if(cnt[1][i]&&cnt[1][i+2]&&cnt[0][i+1]){ans++;}}}cout<<ans<<endl;}return 0;
}

http://www.mrgr.cn/news/90047.html

相关文章:

  • 独家|王兴、王莆中“牵头”,美团AI“大跃进”
  • chromium-mojo
  • pytest生成报告no tests ran in 0.01s
  • 【人工智能】Python中的序列到序列(Seq2Seq)模型:实现机器翻译
  • Pyqt QScrollArea组件
  • prometheus配置大盘与告警
  • [Meet DeepSeek] 如何顺畅使用DeepSeek?告别【服务器繁忙,请稍后再试。】
  • deepseek v3网络结构源码分析笔记
  • 5. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--Nacos
  • Win10 部署llama Factory 推荐教程和遇到的问题
  • 大数据项目4:基于spark的智慧交通项目设计与实现
  • 【通俗易懂说模型】反向传播(附多元分类与Softmax函数)
  • 【虚幻引擎UE】UE4.23到UE5.5的核心功能变化
  • LLMs之DeepSeek r1:TinyZero(复现 DeepSeek R1 Zero 的核心功能)的简介、安装和使用方法、案例应用之详细攻略
  • [概率论] 随机变量
  • CPLD实现SPI通信
  • android系统的overlay机制
  • Odoo17学习笔记
  • 题解 洛谷 Luogu P1983 [NOIP 2013 普及组] 车站分级 拓扑排序 C++
  • 【1.05版】wordpressAI插件批量生成文章、图片、长尾关键词、文章采集、AI对话等
  • fps动作系统5:角色冲刺
  • [M模拟] lc380. O(1) 时间插入、删除和获取随机元素(模拟+数据结构+脑筋急转弯+数组快捷删除技巧+项目思考)
  • Maven入门核心知识点总结
  • 【Matlab优化算法-第14期】基于智能优化算法的VMD信号去噪项目实践
  • Java虚拟机面试题:类加载机制
  • 深入理解Java三大特性:封装、继承和多态