ACM实训冲刺第二十二天

2024-05-29 19:52
文章标签 实训 acm 冲刺 第二十二

本文主要是介绍ACM实训冲刺第二十二天,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【碎碎念】今天学习ACM时间有点紧,只有30分钟,能写到哪算哪吧


人见人爱A^B(数值运算与字符串处理)

这段代码实现的是模幂运算,具体说是计算 A^Bmod1000 的值。模幂运算是一种在计算机科学和密码学中常用的算法,特别是用于处理大整数的幂运算时,通过取模可以控制结果的大小,减少计算量和避免整数溢出。

该算法采用了循环(for 循环)来实现指数 B 次的乘法操作,并在每次乘法后都对结果取模 1000,这是快速幂算法的一个简化版本

#include<stdio.h>
#include<math.h>
int main(){int A;int B;int C=1;while(scanf("%d %d",&A,&B) && A!=0,B!=0){for(int i=0;i<B;i++){C=(C*A)%1000;}printf("%d\n",C%1000);C=1;}return 0;
}

Tokitsukaze and All Zero Sequence (数据处理与逻辑判断)

这段代码属于“数据处理与逻辑判断”题型。代码的主要功能是处理输入的数据(整数序列),并根据一定的逻辑规则判断和计算输出结果。

具体来说,程序首先读取一个整数 t,表示有 t 组测试数据。对于每组数据,程序执行以下操作:

  1. 读取一个整数 n,表示接下来要输入的整数序列长度。
  2. 读取 n 个整数并存储在数组 a 中,同时使用另一个数组记录每个数字出现的次数。
  3. 判断数组中的元素是否有重复(通过标记变量 flag),以及是否包含数字0。
  4. 根据以下逻辑输出结果:
    • 如果数组中有数字0,则输出序列中非0数字的个数。
    • 如果没有数字0且所有数字都是唯一的,则输出当前序列长度加1,意味着可以在序列末尾添加一个新数字保持唯一性。
    • 如果有重复数字(不论是否含0),则输出当前序列长度,因为已经不满足所有数字唯一的要求。
#include<stdio.h>
int main(){int t;scanf("%d",&t);for(int i=0;i<t;i++){int n;int flag=0;int ch;int a[101]={0};scanf("%d",&n) ;for(int j=0;j<n;j++){scanf("%d",&ch);a[ch]++;if(a[ch]>1)flag=1;}if(a[0]>0){printf("%d\n",n-a[0]);}else{if(flag==0)printf("%d\n",n+1);if(flag==1)printf("%d\n",n);}}return 0;
}

Aggressive cows(二分查找)

这段代码实现的是一个二分查找(Binary Search)算法的应用问题,具体是解决“最长连续子序列的最小间距”问题的一个变种。给定一个整数数组和一个整数 c,要求找到一个最小的间距 m,使得在数组中能选出 c 个不重叠的连续子序列,每个子序列中的元素之间的间距至少为 m。

代码流程如下:

  1. 输入序列长度 n 和需要放置的位置数量 c。
  2. 读取 n 个整数到数组 a 中,并对数组进行排序。
  3. 定义二分搜索的范围为数组中的最小值 l 到最大值 r。
  4. 在二分搜索的过程中,使用函数 fun() 判断以当前中点 mid 作为间距时,能否找到至少 c 个符合条件的位置。如果可以,则说明答案至少为 mid,并且在 mid 的右侧继续搜索;如果不满足条件,则在mid 的左侧搜索。
  5. 最终得到的ans 即为所求的最小间距。
#include<iostream> 
#include<cstdio>
#include<algorithm>
#include<cstdlib>
using namespace std;
int n,c;
int a[100005];
bool fun(int m) {int cnt=1,cur=0,next=1;while(next<n){next++;if(a[next]-a[cur]>=m){cnt++;cur=next;}}if(cnt>=c) return true;else return false;
}int main(){scanf("%d%d",&n,&c);for(int i=0;i<n;i++){scanf("%d",&a[i]);}int l=a[0],r=a[n-1];int ans=0;sort(a,a+n);while(l<=r){        int mid=(l+r)/2;if(fun(mid)){ans=mid;l=mid+1;}else{r=mid-1;}}printf("%d",ans);return 0;
}

题型统计

练习题名称数学计算与序列求和数值运算与字符串处理频率统计题数据处理与逻辑判断0-1背包问题最大覆盖半径二分查找
SUM Problem
A+B problem
Anton and letters
Sum of digits
寒冰王座
Charm Bracelet
Vanya and Lanterns
Anton and Danik
人见人爱A^B
Tokitsukaze and All Zero Sequence
Aggressive cows

 

这篇关于ACM实训冲刺第二十二天的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1014484

相关文章

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

研一实训总结

说长不长说短不短的一个月,从最开始的激动到期间,要中期要兼顾找实习准备笔试面试的焦虑,再到最后一周的加班加点和总结,收获和感触还是蛮多的。 首先,这一个月让我更加全面的认知了完成一个从无到有项目的过程,激发了我对自己工程师职业生涯的向往和对自己有了更广的除了编码以外的要求。 我一直是一个结果导向和追求效率的人,所以在团队合作过程中我们也经历了最开始的不知所措,到争执,再到主动配合和贡献,这个过

【转载】ACM感悟

今天看了一篇我们学校前辈的ACM的感悟,觉得写的十分有道理,这里转载,文章还会不断的改进和更新。 原文链接:http://www.cnblogs.com/Chierush/p/3760870.html?ADUIN=1339764596&ADSESSION=1401536826&ADTAG=CLIENT.QQ.5329_.0&ADPUBNO=26349 声明:本文是写给弱校ACM新手的一点

我们依旧在追梦的路上-山东省第六届ACM比赛总结

这场比赛从结果而言达到了预期(金牌),从过程而言和我的预期相差甚远(打的太乱,个人发挥很差),还好关键时刻队友抗住压力,负责后果真的不堪设想。 热身赛 热身赛纯粹测机器的,先把A,B,C草草水过(A题小写x打成大写的也是醉了),我和老高开始各种测机器,long long不出所料是lld的,试了一下除0和数组越界的re问题,发现没有re,只有wa(甚至数组越界还AC了),至于栈深的话也没过多追

2024国赛论文拿奖快对照这几点及评阅要点,勿踩雷区!(国赛最后冲刺,提高获奖概率)

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 2024“高教社杯”全国大学生数学建模竞赛已过去第三个夜晚,小伙伴们都累了没有,如果感到思维滞涩,别忘了稍作休息,放松一下自己,准备迎接国赛非常重要的收尾阶段——论文。 国赛这几天的努力最后都

ACM东北地区程序设计大赛

不得不说随着参赛级别的提高,题目真的是越来越难啊,不过队长真是给力啊,在我们三个共同努力之下拿下了地区赛三等奖,哈哈我们可是大一唯一一只获奖队,终于在这次比赛打败了田大神。。。大神是失手了,俺和他差距还是挺大的。。。队友陈彤马上要去服兵役了,他说这是我们送给他最好的离别礼物,希望那家伙在部队好好干,以后谁干揍我!!!东北地区赛结束后,今年已经估计没机会参加亚洲区比赛了,赶紧补高数和线数啊!!别挂了

ACM比赛中如何加速c++的输入输出?如何使cin速度与scanf速度相当?什么是最快的输入输出方法?

在竞赛中,遇到大数据时,往往读文件成了程序运行速度的瓶颈,需要更快的读取方式。相信几乎所有的C++学习者都在cin机器缓慢的速度上栽过跟头,于是从此以后发誓不用cin读数据。还有人说Pascal的read语句的速度是C/C++中scanf比不上的,C++选手只能干着急。难道C++真的低Pascal一等吗?答案是不言而喻的。一个进阶的方法是把数据一下子读进来,然后再转化字符串,这种方法传说中

2014年ACM/ICPC亚洲区现场赛广州赛区总结

本来不想提这件事的,后来学姐找我谈心时提到这件事,我突然意识到在这件事情上我错了一次,明明答应的去参加这场比赛,最后临时决定不去......其实中间有很多很多原因 1:我和tyh,sxk临时不去主要是广州太远,我们身上money不够,呵呵。。。别笑我们,你以为我们是高富帅啊,去一趟广州消费要2个月的生活费,奖学金又没发,你让我找我妈要她辛辛苦苦挣来的工资吗?!从哈尔滨到广州单来回的火车票每个人就

两个月冲刺软考——逻辑地址与物理地址的转换(例题+讲解);文件类型的考点

1.已知计算机系统页面大小和进程的逻辑地址,根据页面变换表(页号-物理块号),求变换后的物理地址。 首先介绍几个公式: 逻辑地址 = 页号 + 页内地址 (默认为32机位) 物理地址 = 物理块号 + 物理地址的页内地址 其中:页内地址 = 物理地址的页内地址 解题:由于页面大小为4K,即4K=2的12次方,占0~11位;也就是页内地址有12位,故十六进制数中的C28是页内地址,那