bnu4349 精确刷屏工具
来源:互联网 发布:java 虚拟主机空间 编辑:程序博客网 时间:2024/06/05 16:07
拉手网技术骨干小A同鞋在公司做网站测试时,遇到了需要在输入框输入 3000 字的测试用例。一个一个输入肯定是不行的,精通电脑的小A想到,可以利用无敌聊天大法:Ctrl+A、Ctrl+C再Ctrl+V来达到目标。小A平时聊天时经常利用无敌聊天大法生成一大堆笑脸刷屏讨 MM 欢心。通过这个事情,小A联系到一个有趣的问题:假设我们的输入框里只有1个字,要使用无敌聊天大法来达到我们的目标,我们需要最少需要按多少次组合键?
以10个字为例,我们的最优方案如下:
1、 Ctrl+A
2、 Ctrl+C
3、 Ctrl+V
4、 Ctrl+V
5、 Ctrl+V
6、 Ctrl+V
7、 Ctrl+V
8、 Ctrl+A
9、 Ctrl+C
10、Ctrl+V
11、Ctrl+V
最终需要按11次组合键。值得注意的是,在Ctrl+C操作后的第一次Ctrl+V操作,仅仅是覆盖原有文字串。
这道题好像是必须刚好凑成啊。。
我开始以为超过也是可以的啊。。。
如果必须是刚好的话,那么就只有两种方式
dp[i]表示凑i个笑脸需要的最少操作数目。
首先,对i>=2,dp[i]=i+2是成立的,就是ACVVVVVVVV…..疯狂贴就行了。
然后还有更少的可能就是,ACVVVVVVVACVVVVV……这种,比如题目样例。
那么这个第二次ACVV……的时机是什么时候呢?
我们需要暴力枚举一下。
对于每一个j(i%j==0),要不就是先从一个贴,贴到了j个之后,然后j个、j个一起贴,贴i/j+2次。
要不就是先一个一个的贴到i/j个,然后i/j个的、i/j个的一起贴,贴j次,都可以。
然后就转移就好了。
#include<iostream>using namespace std;#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<stdlib.h>#include<vector>#include<queue>#include<deque>#include<map>#include<set>#include<time.h>#define pi(x,y) printf("%d%c",(x),(y));#define pin(x) printf("%d\n",(x));#define si(x) scanf("%d",&(x))#define sii(x,y) scanf("%d%d",&(x),&(y))#define s3(x,y,z) scanf("%d%d%d",&(x),&(y),&(z))#define rep(x,y,z) for(int (x)=(y);(x)<(z);++(x))#define dep(x,y,z) for(int (x)=(y)-1;(x)>=(z);--(x))#define read int TcaseN;scanf("%d",&TcaseN);for(int Tcase=1;Tcase<=TcaseN;++Tcase)#define cls(x,y) memset((x),(y),sizeof((x)));#define pb(x) push_back(x)#define mp(x,y) make_pair((x),(y))#define max3(value_a,value_b,value_c) max(max(value_a,value_b),value_c)#define min3(value_a,value_b,value_c) min(min(value_a,value_b),value_c)#define GT(x) (x)=clock();#define fin(x) freopen(x,"r",stdin);#define fout(x) freopen(x,"w",stdout);///In This You Can Define Long Integer Type#define LONGTYPE long longtypedef LONGTYPE LL;typedef unsigned LONGTYPE ULL;const int maxint=((~((unsigned)(0)))>>1);const LL maxll=((~((unsigned LONGTYPE)(0)))>>1);const int inf=0x3f3f3f3f;const double PI=acos(-1.0);const int N=100005;int dp[N],n;int main() {#ifdef tangge clock_t tSTART,tEND,t3; GT(tSTART);#endif // tangge /*Input:*/ memset(dp,inf,sizeof(dp)); dp[0]=dp[1]=0; for(int i=2;i<N;++i){ dp[i]=i+2; for(int j=2;j*j<=i;++j){ if(i%j==0){ dp[i]=min(dp[i],dp[j]+i/j+2); dp[i]=min(dp[i],dp[i/j]+j+2); } } } int T;scanf("%d",&T); while(T--){ scanf("%d",&n); printf("%d\n",dp[n]); }#ifdef tangge GT(tEND); printf("%.8lf\n",(tEND-tSTART)/1000.0);#endif // tangge return 0;}
- bnu4349 精确刷屏工具
- 精确计算工具
- 精确商业计算工具类
- JS精确四则运算工具方法
- 使用BigDecimal进行精确计算工具类
- double类型的精确计算工具
- 精确定位打印工具 2002 简体中文专业版(2002.06.13) 官网
- java中BigDecimal类的精确四则运算工具类Arith
- java中BigDecimal类的精确四则运算工具类Arith
- 精确计算工具类,提供加减乘除的计算
- double等大数据精确计算工具类
- [java]运算工具(提供精确的浮点数运算,包括加减乘除和四舍五入)
- 超级全的时间处理工具类(格式化,精确,以及自己定制)
- (原创)分享自己写的几个工具类(四)BigDecimal精确计算
- 使用Atlassian国际化插件按需、精确定制工具汉化包
- 精确时间
- 精确数
- 四舍五入精确
- Linux CPU实时监控mpstat命令详解
- 如何正确有效表达:对不起,我们已经尽力了?
- cron表达式详解 定时任务
- visio画UML用例图没有include关系的解决方法
- 入门Webpack,看这篇就够了(转载)
- bnu4349 精确刷屏工具
- Spark-mllib特征提取算法
- android中dao命名的由来
- java 微信公众号 入门
- 【Caffe】Caffe: Convolutional architecture for fast feature embedding
- 发送邮件工具类EmailKit
- android Editview默认打开字母键盘,只能输入字母和数字
- 解决utf8编码下,echo javascript alert 弹出乱码的问题
- 工具收集