[进制 贪心] BZOJ 1110 [POI2007]砝码Odw
来源:互联网 发布:域名的管理机构 编辑:程序博客网 时间:2024/06/05 11:25
因为都是倍数,可以考虑以最小的数为进制
然后从小到大装,不够的向高位借,类似小学减法,但感觉可卡?
#include<cstdio>#include<algorithm>#include<cstdlib>using namespace std;inline char nc(){static char buf[100000],*p1=buf,*p2=buf;if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p2) return EOF; }return *p1++;}inline void read(int &x){char c=nc(),b=1;for (;!(c>='0' && c<='9');c=nc()) if (c=='-') b=-1;for (x=0;c>='0' && c<='9';x=x*10+c-'0',c=nc()); x*=b;}const int N=100005;int n,m,tot;int a[N],b[N],c[N];int p[N];int ans;inline bool check(int k){ if(k>tot) return 0; if(p[k]>0) return p[k]--,1; if(check(k+1)) return p[k]=b[k+1]/b[k]-1,1; return 0;}int main(){ read(n); read(m); for(int i=1;i<=n;i++) read(a[i]); for(int i=1;i<=m;i++) read(b[i]); sort(b+1,b+m+1); for(int i=1;i<=m;i++) if(b[i]!=b[i-1])b[++tot]=b[i],c[tot]=1; else c[tot]++; for(int i=1;i<=n;i++) for(int j=tot;j>=1;j--) p[j]+=a[i]/b[j],a[i]%=b[j]; for(int i=1;i<=tot;i++) while(c[i]!=0) { if(check(i))ans++,c[i]--; else return printf("%d\n",ans),0;} printf("%d\n",ans); return 0;}
0 0
- BZOJ 1110 [POI2007]砝码Odw 进制+贪心
- [进制 贪心] BZOJ 1110 [POI2007]砝码Odw
- BZOJ 1110 POI2007 砝码Odw 贪心
- bzoj 1110: [POI2007]砝码Odw 贪心
- BZOJ 1110: [POI2007]砝码Odw 进制转换+贪心
- BZOJ1100 [POI2007]砝码Odw 贪心
- 1110: [POI2007]砝码Odw 进制拆分,贪心
- [POI2007]砝码Odw
- BZOJ1110: [POI2007]砝码Odw
- 【bzoj1110】 [POI2007]砝码Odw
- BZOJ1110: [POI2007]砝码Odw
- bzoj1110 [POI2007]砝码Odw 贪心+进制拆分
- 【进制】BZOJ1110[砝码Odw]题解
- bzoj 1101: [POI2007]Zap
- BZOJ 1101: [POI2007]Zap
- 【BZOJ 1101】 [POI2007]Zap
- bzoj 1101: [POI2007]Zap
- BZOJ 1101: [POI2007]Zap
- ArcEngine SpatialRelDescription
- You can Solve a Geometry Problem too—hdoj 1086(线段相交)
- Android5.0采用新的CameraAPI
- java多线程模式ThreadLocal原理简述及其使用详解
- Error with command: gdb --version Cannot run program "gdb": Launching failed
- [进制 贪心] BZOJ 1110 [POI2007]砝码Odw
- HDU 4283You Are the One 区间dp
- 吊扇项目总结(五)— STM8 GPIO的探讨
- 收藏各种大牛博客
- PostgreSQL之Json类型使用
- 指针函数和函数指针、指针数组和数组指针
- AndroidStudio如何导入第三方包以及开源库
- Spring加载xml配置文件的方式
- java中的栈内存和堆内存