切糕(bzoj 3144)
Description
Input
第一行是三个正整数P,Q,R,表示切糕的长P、 宽Q、高R。第二行有一个非负整数D,表示光滑性要求。接下来是R个P行Q列的矩阵,第z个 矩阵的第x行第y列是v(x,y,z) (1≤x≤P, 1≤y≤Q, 1≤z≤R)。
100%的数据满足P,Q,R≤40,0≤D≤R,且给出的所有的不和谐值不超过1000。
Output
仅包含一个整数,表示在合法基础上最小的总不和谐值。
Sample Input
1
6 1
6 1
2 6
2 6
Sample Output
HINT
最佳切面的f为f(1,1)=f(2,1)=2,f(1,2)=f(2,2)=1
/*个人感觉很神的一道题目。如果有解的话,会有一个p满足:(10^x-1)/9*8=L*p => 10^x-1=9*L*p/8设m=9*L/gcd(L,8)则存在p1使得 10^x-1=m*p1 => 10^x=1(mod m)根据欧拉定理 10^φ(m)=1(mod m)所以x一定是φ(m)的因数(这好像是某个定理)。 */ #include<iostream> #include<cstdio> #define lon long long #define N 400010 #ifdef unix #define LL "%lld" #else #define LL "%I64d" #endif using namespace std; int prime[N],f[N],num,qlen; lon q[N]; void get_prime(){for(int i=2;i<N;i++){if(!f[i]) prime[++num]=i;for(int j=1;j<=num;j++){if(i*prime[j]>=N) break;f[i*prime[j]]=1;if(i%prime[j]==0) break;}} } lon gcd(lon a,lon b){if(!b) return a;return gcd(b,a%b); } lon euler(lon x){lon res=x;for(lon i=2;i*i<=x;i++)if(x%i==0){res-=res/i;while(x%i==0) x/=i;}if(x>1) res-=res/x;return res; } void get_q(lon n){qlen=0;for(int i=1;i<=num&&n>1;i++){while(n%(lon)prime[i]==0){n/=prime[i];q[++qlen]=prime[i];}}if(n>1) q[++qlen]=n; } lon mul(lon a,lon b,lon mod){lon base=a,r=0;while(b){if(b&1) r+=base;r%=mod;base+=base;base%=mod;b>>=1;}return r; } lon poww(lon a,lon b,lon mod){lon base=a,r=1;while(b){if(b&1) r=mul(r,base,mod);base=mul(base,base,mod);b>>=1;}return r; } int main(){int cas=0;lon L;get_prime();while(scanf(LL,&L)&&L){lon m=9*L/gcd(L,8);if(gcd(m,10)>1){printf("Case %d: 0\n",++cas);continue;}lon x=euler(m);get_q(x);for(int i=1;i<=qlen;i++){if(poww(10,x/q[i],m)==1){x/=q[i];}}printf("Case %d: ",++cas);printf(LL,x);printf("\n");}return 0; }
转载于:https://www.cnblogs.com/harden/p/6517220.html
切糕(bzoj 3144)相关推荐
- bzoj 3144(最小割)
传送门 最小割,主要考查建边的思路.本蒟蒻也是看了好几位大佬的博客才看懂.比如: 参考1 参考2 (x,y,z)连接(x,y,z+1)容量为f(x,y,z) (x,y,z)连接(x',y',z-d)容 ...
- BZOJ 3144 [HNOI2013]切糕 (最大流+巧妙的建图)
题面:洛谷传送门 BZOJ传送门 最大流神题 把点权转化为边权,切糕里每个点$(i,j,k)$向$(i,j,k+1)$连一条流量为$v(i,j,k)$的边 源点$S$向第$1$层的点连边,第$R+1$ ...
- BZOJ 3144 [Hnoi2013]切糕
3144: [Hnoi2013]切糕 Description Input 第一行是三个正整数P,Q,R,表示切糕的长P. 宽Q.高R.第二行有一个非负整数D,表示光滑性要求.接下来是R个P行Q列的矩阵 ...
- bzoj 3144: [Hnoi2013]切糕
Description Input 第一行是三个正整数P,Q,R,表示切糕的长P. 宽Q.高R.第二行有一个非负整数D,表示光滑性要求.接下来是R个P行Q列的矩阵,第z个 矩阵的第x行第y列是v(x, ...
- BZOJ.3144.[HNOI2013]切糕(最小割)
题目链接 没有\(D\)的限制怎么做?"最小"我们可以想到最小割,把同一纵轴上的点串起来,分别连到S,T,最小割就是答案.(在这把点权放到前一条边上) 有限制,即如果要割点\(i\ ...
- CodeForces - 434D Nanami's Power Plant
Codeforces - 434D 题目大意: 给定一个长为n的序列,序列中的第i为上的值\(x_i\),序列第i位上的值\(x_i\in[l_i,r_i]\),价值为\(f_i(x_i)\),其中\ ...
- 3144: [Hnoi2013]切糕
3144: [Hnoi2013]切糕 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1526 Solved: 827 [Submit][Statu ...
- ●BOZJ 3144 [Hnoi2013]切糕
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3144 题解: "这是一个经典的最小割模型" ---引用自别人的博客 .. ...
- BZOJ ac100题存档
不知不觉AC100题了,放眼望去好像都是水题.在这里就做一个存档吧(特别感谢各位大神尤其是云神http://hi.baidu.com/greencloud和丽洁姐http://wjmzbmr.com/ ...
最新文章
- oracle asm clsecho,ASM磁盘组一点管理
- 基于OpenStreetMap计算驾车距离(Java)
- 我使用阿里云做直播,有什么手段保护直播安全?
- Silverlight 视频学习札记(一)
- 如何获取exe,dll中的图标以及源程序
- Linux中用户与组群管理
- Windows域环境下的网络问题
- 5寸照片尺寸_证件照尺寸及更换背景颜色教程
- 紫光华宇拼音输入法 6.1 正式版
- 英国外交部翻译教你实用口语课,让你飚出一口地道、流利英语
- Python 输出对齐
- 如何下载react依赖包
- Python 爬虫下载喜马拉雅音频文件
- 【转】机器学习embedding
- csp-s2020 儒略日(含源代码)
- VMware新建OracleLinux6.5虚拟机
- 正则表达式(参考百度词条)
- 币圈拉盘是什么意思?
- 向插件中添加guc参数
- 将汉字转换为Unicode编码vb.net源码
热门文章
- 在EA中画ER图和数据模型图
- 任务和特权级保护(四)——《x86汇编语言:从实模式到保护模式》读书笔记35
- Python数据收集及分析学习相关
- 区块链学堂(6):以太坊生产网络/测试网络/私有网络
- Android 异步消息处理机制(Handler 、 Looper 、MessageQueue)源码解析
- Android apk动态加载机制的研究
- rhel7安装vnc出现error: Failed dependencies:
- python2.7显示中文_Python 2.7中文显示与处理方法
- base64编码_几分钟看懂Base64编码原理
- JZOJ 5616. 【NOI2018模拟3.31】沧海尘记