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

CF每日3题(1500-1600)

  • 1809C 神必构造题 对子数组的和考虑使用前缀和,发现逆序对的规律,构造
  • 1797C 神奇交互题 需要找特殊的点确定位置
  • 2132D 神奇数位题 需要用二分logk优化复杂度,把数位转换成能到的上限数aim

1809C 构造 前缀和 逆序对 思维 排序 1500

在这里插入图片描述

/*
神必构造题
连续子数组和-> 前缀和sj-si
和为正i>j,si>sj
和为负i>j,si<sj
问题转化成构造前缀和数组
k个正和,其他的负和,即k个正序对,其他的都是逆序对
在逆排序中怎么搞出正序对?
排序,一次交换就得一个正序对
*/
void solve(){int n,k;cin>>n>>k;vector<int>a(n+1);forr(i,0,n){a[i]=n-i+1;//生成逆序}forr(i,0,n){forr(j,i+1,n){if(k){k--;//不用判断 前面的一定是大的数,确定好的位置才是产生正序对的最小的数swap(a[j],a[i]);//插入排序 把小的往前面放,形成逆序对}}}forr(i,0,n-1){cout<<a[i+1]-a[i]<<' ';}cout<<endl;// forr(i,1,n)cout<<a[i]+b[i]<<' ';cout<<endl;
}

1797C 思维 交互 1600

在这里插入图片描述
在这里插入图片描述
参考dalao题解

void solve(){int n,m;cin>>n>>m;int a,b;cout<<"? 1 1\n";fls;cin>>a;cout<<"? 1 "<<m<<endl;fls;cin>>b;// cout<<a<<' '<<b<<endl;int tp;if(a+b==m-1){cout<<"? 1 "<<a+1<<endl;fls;cin>>tp;cout<<"! "<<tp+1<<' '<<a+1<<endl;fls;}else{cout<<"? "<<min(a,b)+1<<' '<<1<<endl;fls;cin>>tp;cout<<"! "<<min(a,b)+1<<' '<<1+tp<<endl;fls;}
}

2132D 数位dp+二分 1600

在这里插入图片描述
累死我了
数位求和使用数位dp

const int N=16,M=150,mod=998244353;
//dcnt[i]是数到i位9999...有多少数位 前缀和
int ncnt[N],dcnt[N],ten[N];
/*
dp[pos][limit][sum]
sum是本状态到底层要返回的数位和
*/
int dp[N][2][M];
void solve(){int k;cin>>k;int dig=lower_bound(dcnt+1,dcnt+16,k)-dcnt;//在前缀和中二分 到k个数有dig位// cout<<dig<<endl;int aim=ten[dig-1]-1;//到dig-1位999...k-=dcnt[dig-1];//剩下的长度// cout<<k<<endl;int tp=k/dig;aim+=tp;//继续分到dig位中k%=dig;// cout<<aim<<endl;memset(dp,-1,sizeof dp);string n=to_string(aim);auto dfs=[&](auto&& self,int pos,int limit,int sm)->int{if(pos==n.size())return sm;if(dp[pos][limit][sm]>=0)return dp[pos][limit][sm];int ans=0;int up=(limit?n[pos]-'0':9);forr(i,0,up){ans+=self(self,pos+1,limit&&i==up,sm+i);}return dp[pos][limit][sm]=ans;};int ans=dfs(dfs,0,1,0);// cout<<ans<<endl;//补全剩下的string nxt=to_string(aim+1);forr(i,0,k-1)ans+=(nxt[i]-'0');cout<<ans<<endl;}
signed main()
{ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);ten[0]=1,ncnt[1]=10,dcnt[1]=9;forr(i,2,15){ncnt[i]=ncnt[i-1]*9;dcnt[i]=ncnt[i]*i+dcnt[i-1];ncnt[i]+=ncnt[i-1];}// forr(i,1,15)cout<<dcnt[i]<<' ';cout<<endl;forr(i,1,15){ten[i]=ten[i-1]*10;}int t=1;cin>>t;while(t--) solve();} 
http://www.xdnf.cn/news/1408663.html

相关文章:

  • 阿里云创建自己的博客,部署wordpress
  • 基于Matlab元胞自动机的强场电离过程模拟与ADK模型分析
  • Scikit-learn Python机器学习 - 数据集的划分
  • 网格图--Day03--网格图DFS--2658. 网格图中鱼的最大数目,1034. 边界着色,1020. 飞地的数量
  • Cartographer中的gflag与lua文件
  • 【开题答辩全过程】以 基于Java的城市公交查询系统设计与实现为例,包含答辩的问题和答案
  • 记录测试环境hertzbeat压测cpu高,oom问题排查。jvm,mat,visulavm
  • 浏览器和 node 操作文件的 api 以及区别
  • GEE 实战:Landsat 5 月度 NDVI 数据插值填补(以 8 月为例)_后附完整代码
  • Python:如何批量下载CLMS NDVI V3数据集?
  • PyQt5 K线图实现与性能优化详解
  • 神州数码之FTP/TFTP 升级 篇
  • 深入解析Linux系统中的/etc/hosts文件
  • 在Windows的wsl中如何以root登录Ubuntu
  • OpenStack 02:使用 DevStack 单节点一体化部署
  • Kafka面试精讲 Day 3:Producer生产者原理与配置
  • Java提供高效后端支撑,Vue呈现直观交互界面,共同打造的MES管理系统,含完整可运行源码,实现生产计划、执行、追溯一站式管理,提升制造执行效率
  • isp图像处理--bayer Binning
  • isp 图像处理--DPC坏点矫正
  • 张柏芝亮相林家谦演唱会 再次演绎《任何天气》
  • 秋招笔记-8.31
  • 【ACP】2025-最新-疑难题解析- 练习一汇总
  • 矩阵待办ios app Tech Support
  • 【机器学习】-torch相关知识01
  • IO_hw_8.29
  • 8.31【A】scons,带宽,语义semantic,读论文颜色规范,系统运行命令
  • 在Ubuntu系统上安装和配置JMeter和Ant进行性能测试
  • 【数学史冷知识】关于行列式的发展史
  • kkfile一键部署-ubuntu版
  • 云计算与服务器