SCU4439 二分+枚举进制+思维
来源:互联网 发布:mac怎么安装word 编辑:程序博客网 时间:2024/05/29 10:26
自己比赛的时候也想了sort一下, 然后二分,但是还是没有想到枚举进位。。
这个题考虑进位的位置即可, 首先枚举进位是因为达到了10, 100, 1000..., 1e9
我还在考虑如果只按照各位排序的话,能不能推广到按10位,,100位排序, 想写个这样的sort函数,,,但其实用%100,%1000,然后创一个新的数组就可以了。。。
自己还是这些地方不好。。。
#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#include<string>#include<cstring>#include<iomanip>#include<iostream>#include<stack>#include<cmath>#include<map>#include<vector>#define ll long long#define inf 0x3f3f3f3f#define INF 1000000000#define bug1 cout<<"bug1"<<endl;#define bug2 cout<<"bug2"<<endl;#define bug3 cout<<"bug3"<<endl;using namespace std;const int maxn=1e5+5;int a[maxn],b[maxn];int main(){ int n; while(~scanf("%d",&n)){ for(int i=1;i<=n;++i)scanf("%d",&a[i]); int k=1; ll ans=0; for(int i=1;i<=9;++i){ k*=10; for(int i=1;i<=n;++i)b[i]=a[i]%k; sort(b+1,b+1+n); for(int j=1;j<=n;++j){ int l=j+1,r=n+1;//这个r要是n+1...,还不知道这是不是 左闭右开的意思。。 while(l<r){//要用自己写的二分,如果用lower——bound 的话会 int mid=(l+r)>>1; if(b[mid]+b[j]>=k) r=mid; else l=mid+1; } //ans+=n-(lower_bound(b+1,b+1+n,k-b[j])-b);//这是用lower——bound的二分,会错。。可能是因为 ans+=n-l+1; } } cout<<ans<<endl; }}
0 0
- SCU4439 二分+枚举进制+思维
- Hdu 5936 Difference【思维+折半枚举+二分】
- scu4439 Vertex Cover(二分图最小点覆盖 匈牙利)
- HDU 4430Yukari's Birthday2012现场赛K题(幂打表 思维 枚举+二分)
- hdu4346 枚举思维
- HDU5936折半枚举+思维
- SCU4439-Vertex Cover
- CodeForces807c_二分+思维
- HDU5102 Select 二分 思维
- Drying<二分,思维题>
- cf660c Select 二分 思维
- hihocoder1543(思维+ 二分)
- HRBEU 1121 二分枚举
- uval 5900 二分+枚举
- hdu2199 二分枚举
- hdu2899 二分枚举
- poj3273 二分枚举
- poj2549 枚举+二分
- 单例设计模式的应用场景
- 统计学习方法(1)——正则化、误差上界的证明等
- Java链表之输出(重点)
- 从fragment切换到 app.supportv4.fragmentFragmentTransaction
- ant 资源文件放到jar里,并且新建目录存放
- SCU4439 二分+枚举进制+思维
- mysql学习之数据备份和恢复
- upgrading to (11.2/10.2) from (9.2) or (10.1) 需要注意的connect 角色的权限差异
- pcl曲面重建模块-poisson重建算法示例
- Solidworks二次开发: VC6.0创建的插件移植到VS2013中
- linux内核中struct file_operations 结构体介绍
- redis配置用户认证密码
- NumPy 基础
- Projecting new data points