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

2025 吉林CCPC

文章目录

  • 2025 吉林CCPC
    • A.交互题
    • F.字符串(暴力、后缀和)
    • D.互质(最大素数间隔)
    • 总结

2025 吉林CCPC

题目链接:

Dashboard - The 18th Jilin Provincial Collegiate Programming Contest - Codeforces

sdccpc20250527 - Virtual Judge

A.交互题

实质上就是两个分数比大小。

虽然没写出来,不过自己的思路是正确的,值得庆幸。

不然,连一个分数比较大小都没想到解决办法,那更丢人了。

  • a,b,c,d 都是正整数。
  • 真分数来比较更优
  • 分数越大,倒数越小,成反比
  • 如果是99/100 可以换成 1/100,来比较相当于一个二分(这种循环进行400次就够了)

这样就形成初步的思路。

还有几个注意事项:

运算过程不能溢出,一旦出现“err”就会WA

起初我是通过判断是否溢出,来确定谁大谁小,这种方法不可取。

注意次数!!!

超过6666,就会err

次数太少就会找不到答案!

整除!!!分子变成0啦

具体:

在循环中,将其换成真分数,如果a/b不等于 c/d ,直接得出答案

**考虑整除使得分子变成 0 **

其中一个变成0 ,就确定了分数大小。

将分数换成倒数,这时候又变成了假分数。

不断循环。

分子分母颠倒,改变变量,不改变值,减少操作次数。循环里询问9次,循环大概需要进行737~740次。

这个数据范围很重要!!!

string check(){string s;cin >> s;return s;
}
void solve(){int f=0,p=740;string t ,tt;char aa='a',bb='b',cc='c',dd='d';while(p--){cout << "/ r0 "<<aa<<' '<<bb<< endl;check();cout << "/ r1 "<<cc<<" "<<dd << endl;check();cout << "? r0 r1" << endl;t=check();if(t!="="){if(f==0) cout << "! " << t << endl;else{if(t=="<") cout << "! >"<< endl;else cout << "! <"<< endl;}check();return ;}cout << "* r1 r1 "<<dd << endl;check();cout << "* r0 r0 "<<bb << endl;check();	cout << "- "<<aa<<' '<<aa<<" r0"<< endl;check();cout << "- "<<cc<<' '<<cc<<" r1"<< endl;check();cout<<"? "<<aa<<" r2"<<endl;t=check();cout<<"? "<<cc<<" r2"<<endl;tt=check();if(t=="="&&tt=="="){cout<<"! ="<<endl;check();return;}else if(t=="="){if(f==0)cout<<"! <"<<endl;elsecout<<"! >"<<endl;check();return;}	 	 else if(tt=="="){if(f==0)cout<<"! >"<<endl;elsecout<<"! <"<<endl;check();return;}f^=1;char w;w=aa;aa=bb,bb=w;w=cc;cc=dd;dd=w;	 }cout<<"* "<<aa<<" "<<aa<<" "<< dd<<endl; check();cout<<"* "<<cc<<" "<<cc<<" "<< bb<<endl; check();cout<<"? "<<aa<<' '<< cc<<endl;   t=check();if(f==0) cout<<"! "<<t<<endl;else{if(t=="<") cout << "! >"<< endl;else if(t==">") cout << "! <"<< endl;else cout<<"! ="<<endl;}check();return ;
}

F.字符串(暴力、后缀和)

题目数据比较水,暴力就可以过,O(n*n)

可以优化为O(n) ,用两次后缀和

int a[N];
void solve()
{ int n,ans=0;cin>>n;string s;cin>>s;fir_(i,n-1,0){if(s[i]=='f')a[i]+=1;a[i]+=a[i+1];//计算后缀f的数量}fir_(i,n-2,0){a[i]+=a[i+1];//计算后缀f 的总距离if(s[i]=='e')ans+=a[i+1];}cout<<ans<<'\n';
}

D.互质(最大素数间隔)

暴力可解

在1e15范围内,出现最大素数间隔才 1132.

4e7范围内,最大220.

素数之间的间隔很小

总结

赛时:6道

A题不可惜,因为赛后WA了好几发才A.

今天的题目比较简单,大家过题数差不多,

同样凡过的题都没有WA

http://www.xdnf.cn/news/9220.html

相关文章:

  • 【数据结构】 时间复杂度
  • 浙大版《Python 程序设计》题目集6-3,6-4,6-5,6-6列表或元组的数字元素求和及其变式(递归解法)
  • 前端生成UUID
  • 5.27 打卡
  • 哪些技术要素决定了多媒体数字沙盘的呈现效果与用户体验?
  • Cursor 与DeepSeek的完美契合
  • 树莓派超全系列教程文档--(49)远程访问树莓派
  • 5.27 day 30
  • SQL计算列
  • 数据要素配置如何驱动城市经济韧性的多元模式
  • 【leetcode】209. 长度最小的子数组
  • LeetCode 高频 SQL 50 题(基础版)之 【连接】部分 · 上
  • 车载网关策略 --- 车载网关通信故障处理机制深度解析
  • ElasticSearch整合SpringBoot
  • 《深入解析UART协议及其硬件实现》-- 第一篇:UART基础与协议层详解
  • 一张Billing项目的流程图
  • 16. Git从入门到实践
  • Java-Set集合遍历的全面指南
  • 贝壳后端golang面经
  • 【信号与系统】【转载记录】漫谈《信号与系统》
  • 体绘制学习
  • Android开机向导定制(2)开机向导配置
  • 【免费】【无需登录/关注】多点矩阵计算器,计算任何坐标系转换
  • 【无标题】C++单例模式详解
  • 二次封装 Vuex for Uniapp 微信小程序开发
  • linux如何查看网络设备类型
  • 学者观察 | Web3.0的技术革新与挑战——北京理工大学教授沈蒙
  • 机器学习中的关键术语及其含义
  • 打造自己的开源组件:如何将 Starter 发布到 Maven Central?
  • 人工智能100问☞第34问:什么是语音识别与合成?