BestCoder Round #84 题解
2016-07-23 23:25
246 查看
Aaronson
Bellovin
Colmerauer
Dertouzos
注意特判d比较大的情况
Bellovin
Colmerauer
Dertouzos
Aaronson
注意m的范围、、#include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<functional> #include<iostream> #include<cmath> #include<cctype> #include<ctime> #include<iomanip> #include<vector> #include<string> #include<queue> #include<stack> #include<map> #include<sstream> using namespace std; #define For(i,n) for(int i=1;i<=n;i++) #define Fork(i,k,n) for(int i=k;i<=n;i++) #define Rep(i,n) for(int i=0;i<n;i++) #define ForD(i,n) for(int i=n;i;i--) #define ForkD(i,k,n) for(int i=n;i>=k;i--) #define RepD(i,n) for(int i=n;i>=0;i--) #define Forp(x) for(int p=Pre[x];p;p=Next[p]) #define Forpiter(x) for(int &p=iter[x];p;p=Next[p]) #define Lson (o<<1) #define Rson ((o<<1)+1) #define MEM(a) memset(a,0,sizeof(a)); #define MEMI(a) memset(a,127,sizeof(a)); #define MEMi(a) memset(a,128,sizeof(a)); #define INF (2139062143) #define F (100000007) #define pb push_back #define mp make_pair #define fi first #define se second #define vi vector<int> #define pi pair<int,int> #define SI(a) ((a).size()) #define Pr(kcase,ans) printf("Case #%d: %I64d\n",kcase,ans); #define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a <<endl; #define PRi2D(a,n,m) For(i,n) { \ For(j,m-1) cout<<a[i][j]<<' ';\ cout<<a[i][m]<<endl; \ } #pragma comment(linker, "/STACK:102400000,102400000") typedef long long ll; typedef long double ld; typedef unsigned long long ull; ll mul(ll a,ll b){return (a*b)%F;} ll add(ll a,ll b){return (a+b)%F;} ll sub(ll a,ll b){return ((a-b)%F+F)%F;} void upd(ll &a,ll b){a=(a%F+b%F)%F;} int read() { int x=0,f=1; char ch=getchar(); while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();} while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();} return x*f; } int main() { // freopen("A.in","r",stdin); // freopen(".out","w",stdout); int T=read(); while(T--) { ll n=read(),m=min(100,read()); ll p=0; For(i,m) { p+=n&1; n>>=1; } cout<<p+n<<endl; } return 0; }
Bellovin
#include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<functional> #include<iostream> #include<cmath> #include<cctype> #include<ctime> #include<iomanip> #include<vector> #include<string> #include<queue> #include<stack> #include<map> #include<sstream> using namespace std; #define For(i,n) for(int i=1;i<=n;i++) #define Fork(i,k,n) for(int i=k;i<=n;i++) #define Rep(i,n) for(int i=0;i<n;i++) #define ForD(i,n) for(int i=n;i;i--) #define ForkD(i,k,n) for(int i=n;i>=k;i--) #define RepD(i,n) for(int i=n;i>=0;i--) #define Forp(x) for(int p=Pre[x];p;p=Next[p]) #define Forpiter(x) for(int &p=iter[x];p;p=Next[p]) #define Lson (o<<1) #define Rson ((o<<1)+1) #define MEM(a) memset(a,0,sizeof(a)); #define MEMI(a) memset(a,127,sizeof(a)); #define MEMi(a) memset(a,128,sizeof(a)); #define INF (2139062143) #define F (100000007) #define pb push_back #define mp make_pair #define fi first #define se second #define vi vector<int> #define pi pair<int,int> #define SI(a) ((a).size()) #define Pr(kcase,ans) printf("Case #%d: %I64d\n",kcase,ans); #define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a <<endl; #define PRi2D(a,n,m) For(i,n) { \ For(j,m-1) cout<<a[i][j]<<' ';\ cout<<a[i][m]<<endl; \ } #pragma comment(linker, "/STACK:102400000,102400000") typedef long long ll; typedef long double ld; typedef unsigned long long ull; ll mul(ll a,ll b){return (a*b)%F;} ll add(ll a,ll b){return (a+b)%F;} ll sub(ll a,ll b){return ((a-b)%F+F)%F;} void upd(ll &a,ll b){a=(a%F+b%F)%F;} int read() { int x=0,f=1; char ch=getchar(); while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();} while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();} return x*f; } #define MAXN (100000+10) int a[MAXN],n,f[MAXN],b[MAXN]; int main() { // freopen("B.in","r",stdin); // freopen(".out","w",stdout); int T=read(); while(T--) { n=read(); For(i,n) a[i]=read(); int ans=0; MEMI(f) For(i,n) { int p=lower_bound(f+1,f+1+n,a[i])- (f+1); f[p+1]=a[i]; b[i]=p+1; ans=max(ans,p+1); } PRi(b,n) } return 0; }
Colmerauer
#include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<functional> #include<iostream> #include<cmath> #include<cctype> #include<ctime> #include<iomanip> #include<vector> #include<string> #include<queue> #include<stack> #include<map> #include<sstream> using namespace std; #define For(i,n) for(int i=1;i<=n;i++) #define Fork(i,k,n) for(int i=k;i<=n;i++) #define Rep(i,n) for(int i=0;i<n;i++) #define ForD(i,n) for(int i=n;i;i--) #define ForkD(i,k,n) for(int i=n;i>=k;i--) #define RepD(i,n) for(int i=n;i>=0;i--) #define Forp(x) for(int p=Pre[x];p;p=Next[p]) #define Forpiter(x) for(int &p=iter[x];p;p=Next[p]) #define Lson (o<<1) #define Rson ((o<<1)+1) #define MEM(a) memset(a,0,sizeof(a)); #define MEMI(a) memset(a,127,sizeof(a)); #define MEMi(a) memset(a,128,sizeof(a)); #define INF (2139062143) #define F (100000007) #define pb push_back #define mp make_pair #define fi first #define se second #define vi vector<int> #define pi pair<int,int> #define SI(a) ((a).size()) #define Pr(kcase,ans) printf("Case #%d: %I64d\n",kcase,ans); #define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a <<endl; #define PRi2D(a,n,m) For(i,n) { \ For(j,m-1) cout<<a[i][j]<<' ';\ cout<<a[i][m]<<endl; \ } #pragma comment(linker, "/STACK:102400000,102400000") typedef long long ll; typedef long double ld; typedef unsigned long long ull; ll mul(ll a,ll b){return (a*b)%F;} ll add(ll a,ll b){return (a+b)%F;} ll sub(ll a,ll b){return ((a-b)%F+F)%F;} void upd(ll &a,ll b){a=(a%F+b%F)%F;} int read() { int x=0,f=1; char ch=getchar(); while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();} while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();} return x*f; } #define MAXN (1000+10) unsigned int a[MAXN][MAXN],n,m,f[MAXN][MAXN],l[MAXN][MAXN],u[MAXN][MAXN],r[MAXN][MAXN],d[MAXN][MAXN],g[MAXN][MAXN]; int main() { // freopen("C.in","r",stdin); // freopen(".out","w",stdout); int T=read(); MEM(f) For(i,1000) For(j,1000) f[i][j]=1; For(i,1000) For(j,1000) f[i][j]=f[i-1][j]+f[i][j-1]-f[i-1][j-1]+f[i][j]; For(i,1000) For(j,1000) f[i][j]=f[i-1][j]+f[i][j-1]-f[i-1][j-1]+f[i][j]; For(i,1000) For(j,1000) f[i][j]=f[i-1][j]+f[i][j-1]-f[i-1][j-1]+f[i][j]; while(T--) { n=read(),m=read(); For(i,n) For(j,m) a[i][j]=read(); For(i,n) For(j,m) { l[i][j]=i; if (i>1 && a[i-1][j]<a[i][j]) { l[i][j]=l[i-1][j]; while(l[i][j]>1 && a[l[i][j]-1][j]<a[i][j]) l[i][j]--; } u[i][j]=j; if (j>1 && a[i][j-1]>a[i][j]) { u[i][j]=u[i][j-1]; while(u[i][j]>1 && a[i][j]<a[i][u[i][j]-1]) u[i][j]--; } } ForD(i,n) ForD(j,m) { r[i][j]=i; if (i<n && a[i+1][j]<a[i][j]) { r[i][j]=r[i+1][j]; while(r[i][j]<n && a[r[i][j]+1][j]<a[i][j]) r[i][j]++; } d[i][j]=j; if (j<m && a[i][j+1]>a[i][j]) { d[i][j]=d[i][j+1]; while(d[i][j]<m && a[i][j]<a[i][d[i][j]+1]) d[i][j]++; } } // PRi2D(f,n,m) // PRi2D(d,n,m) // PRi2D(u,n,m) // PRi2D(d,n,m) unsigned int ans=0; For(i,n) For(j,m) { unsigned int S=0,L=l[i][j],R=r[i][j],D=d[i][j],U=u[i][j]; S+=f[R-L+1][D-U+1]; S-=f[D-U+1][i-L]+f[D-U+1][R-i]+f[D-j][R-L+1]+f[j-U][R-L+1]; S+=f[i-L][j-U]+f[R-i][j-U]+f[i-L][D-j]+f[R-i][D-j]; g[i][j]=S; // ans+=a[i][j]*(i-l[i][j]+1)*(j-u[i][j]+1)*(d[i][j]-j+1)*(r[i][j]-i+1); ans+=a[i][j]*S; } // PRi2D(g,n,m) cout<<ans<<endl; } return 0; }
Dertouzos
时间没卡好。。T了一发注意特判d比较大的情况
#include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<functional> #include<iostream> #include<cmath> #include<cctype> #include<ctime> #include<iomanip> #include<vector> #include<string> #include<queue> #include<stack> #include<map> #include<sstream> using namespace std; #define For(i,n) for(int i=1;i<=n;i++) #define Fork(i,k,n) for(int i=k;i<=n;i++) #define Rep(i,n) for(int i=0;i<n;i++) #define ForD(i,n) for(int i=n;i;i--) #define ForkD(i,k,n) for(int i=n;i>=k;i--) #define RepD(i,n) for(int i=n;i>=0;i--) #define Forp(x) for(int p=Pre[x];p;p=Next[p]) #define Forpiter(x) for(int &p=iter[x];p;p=Next[p]) #define Lson (o<<1) #define Rson ((o<<1)+1) #define MEM(a) memset(a,0,sizeof(a)); #define MEMI(a) memset(a,127,sizeof(a)); #define MEMi(a) memset(a,128,sizeof(a)); #define INF (2139062143) #define F (100000007) #define pb push_back #define mp make_pair #define fi first #define se second #define vi vector<int> #define pi pair<int,int> #define SI(a) ((a).size()) #define Pr(kcase,ans) printf("Case #%d: %I64d\n",kcase,ans); #define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a <<endl; #define PRi2D(a,n,m) For(i,n) { \ For(j,m-1) cout<<a[i][j]<<' ';\ cout<<a[i][m]<<endl; \ } #pragma comment(linker, "/STACK:102400000,102400000") typedef long long ll; typedef long double ld; typedef unsigned long long ull; ll mul(ll a,ll b){return (a*b)%F;} ll add(ll a,ll b){return (a+b)%F;} ll sub(ll a,ll b){return ((a-b)%F+F)%F;} void upd(ll &a,ll b){a=(a%F+b%F)%F;} int read() { int x=0,f=1; char ch=getchar(); while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();} while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();} return x*f; } #define MAXN (100000+10) ll p[MAXN],tot; bool b[MAXN]={0}; void make_prime(int n) { tot=0; Fork(i,2,n) { if (!b[i]) p[++tot]=i; For(j,tot) { if (i*p[j]>n) break; b[i*p[j]]=1; if (i%p[j]==0) break; } } } int main() { // freopen("D.in","r",stdin); // freopen(".out","w",stdout); int T=read(); make_prime(100000); while(T--) { ll n=read(),d=read(),t=tot; if (d>100000) { ll ans=0; For(i,tot) { if (p[i]*d<n&&d%p[i]!=0) ++ans; else if (p[i]*d>=n) break; else {++ans;break;} } cout<<ans<<endl; continue; } for(int i=1;i<=tot&&p[i]<=d;i++) { if (d%p[i]==0) { t=i; break; } } ll ans=lower_bound(p+1,p+tot+1,n/d)-(p+1); while (ans<tot&&p[ans+1]*d<=n)++ans; ans=min(ans,t); cout<<ans<<endl; } return 0; }
相关文章推荐
- 数据结构中各种树
- 极客学院JSP教程笔记(1)
- JAVA面向对象-----抽象类注意细节
- JAVA面向对象-----抽象类注意细节
- iOS之 深入探究copy与mutableCopy
- HAproxy 个人总结
- Android广播
- Android应用程序内部切换语言及自定义语言
- Android ListView几种Adapter用法简介
- 关于x86、i386、i486、i586和i686等名词的解释
- Java多线程研究01-创建线程
- jsp2
- 死锁的产生原因&&产生的必要条件&&处理方法
- python核心编程第六章练习
- A young man asks a homeless man to borrow his bucket, what happens next will burst you into tears
- jsp1
- 视频驱动V4L2子系统驱动架构 - ioctl
- 大话设计模式15----抽象工厂模式
- 把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。
- 多进程 多线程 异步/evented green thread/coroutine