主页
搜索
最近更新
数据统计
申请密钥
系统公告
1
/
1
请查看完所有公告
7.31小结
最后更新于 2025-07-31 14:14:08
作者
hxy647623
分类
个人记录
复制 Markdown
查看原文
删除文章
更新内容
巅峰见证虚假的拥护,黄昏见证真正的信徒 (不知道有什么意义,但就是要说一下) T643658 落落的去的数学题1 额,脚滑的老师居然挖坑给我跳,那我算了半天算什么啊(恼) 数学特性分析: 当a>b>c时,2^a + 2^b - 2^c = 2^c(2^{a-c} + 2^{b-c} - 1) 二进制中1的个数取决于高位1的分布情况 关键发现: 结果中1的个数等于(b-c+1),因为: 2^a会在第a位产生1 2^b会在第b位产生1 -2^c会从第c位开始产生连续的1直到b位(含) 最终1的分布是从a到b的离散点加上c到b-1的连续段 代码实现: 直接输出b-c+1,避免了大数据量计算 适用于a>b>c的所有情况(题目保证条件) 唔,代码如下: #include<bits/stdc++.h> using namespace std; int main(){ long long a,b,c; cin>>a>>b>>c; cout<<b-c+1<<endl; return 0; } T640726 落落的去的围栏 将a数组排序创造二分条件,However枚举两个颜色的交界处k,再lower_bound a数组中第一个大于等于k的下标,然后正常算即可,代码如下: #include<bits/stdc++.h> using namespace std; int t; int main(){ cin>>t; while(t--){ int n,m,a[200010],ans=0; cin>>n>>m; for(int i=1;i<=m;i++){ cin>>a[i]; } sort(a+1,a+m+1); for(int i=1;i<n;i++){ int x=lower_bound(a+1,a+m+1,i)-a-1; int y=lower_bound(a+1,a+m+1,n-i)-a-1; x=m-(m-x+1); y=m-(m-y+1); ans+=x*y-min(x,y); } cout<<ans<<endl; } return 0; } 完
正在渲染内容...
点赞
1
收藏
0