Poj 3685 Matrix
来源:互联网 发布:战争是必然的 知乎 编辑:程序博客网 时间:2024/05/16 08:16
题目:http://poj.org/problem?id=3685
潜意识里,我就打表找规律了,果不其然就WA了...
正确姿势是二分,因为在j确定的情况下:i2 + 100000 × i + j2 - 100000 × j + i × j 会随着i的增大而递增,也就是说我们可以很快地知道某一列有多少个数<val;
#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;#define rep(i,s,t) for(int i=s;i<t;i++)typedef long long ll;int t,n;ll m;inline ll Cal(int i,int j){ return i*1LL*i+100000*1LL*i+j*1LL*j-100000*1LL*j+i*1LL*j;}inline ll Sum(ll val){ ll num=0; rep(i,1,n+1){ int s=1,t=n; while(s<=t){ int mid=(s+t)>>1; ll v=Cal(mid,i); if(v<=val) s=mid+1; else t=mid-1; } num+=s-1; } return num;}int main(){ scanf("%d",&t); while(t--){ scanf("%d%lld",&n,&m); ll l=-1000000000000*1LL,r=1000000000000*1LL; while(l<=r){ //printf("%lld %lld ",l,r); ll mid=l+(r-l)/2; ll v=Sum(mid); if(v<m) l=mid+1; else r=mid-1; // printf("%lld %lld %lld %lld \n",l,r,mid,v); } printf("%lld\n",l); } return 0;}
0 0
- 二分-poj-3685-Matrix
- Poj 3685 Matrix
- POJ-3685-Matrix
- POJ 3685 Matrix
- POJ - 3685 Matrix 二分
- POJ 3685:Matrix 二分
- POJ-3685Matrix
- POJ - 3685 Matrix(二分)
- POJ 3685Matrix(两次二分)
- POJ 3685 - Matrix(二分搜索)
- POJ 3685 Matrix 已翻译
- POJ-3685---Matrix (二分)
- Matrix POJ
- Matrix POJ
- Matrix (POJ
- Matrix POJ
- poj 3685 Matrix (二分+枚举+二分)
- POJ 3685 Matrix 二维的二分
- 通过添加按钮打开文件选取歌曲,并且添加到列表中(listbox)并保存在数据库中
- 用户配置文件(passwd/shadow)
- Navigation Bar 修改问题(三) ----- 系统重启Launcher界面显示Nv Bar
- 装饰模式
- UVa 11205 - The broken pedometer
- Poj 3685 Matrix
- DevStore独家点评:腾讯信鸽推送服务
- 2014.05.14日志----修饰符
- ubuntu 死机重启的方式 Login timed out after 60 seconds
- VC++简单获取网页代码
- 第12周项目三
- 秀外慧中的springMVC(三)---文件的上传
- C# 编码总结
- android camera