博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 2577 How to Type(杭电300题纪念)
阅读量:4920 次
发布时间:2019-06-11

本文共 1733 字,大约阅读时间需要 5 分钟。

纠结啊,几天找不到个可做的题,前几天刷了几个水题,第300个也是水题,终于300了,加油!

写的太搓了。。。写的很暴力,不过数据量小,水过吧。。

1 #include 
2 #include
3 #include
4 #define N 100000000 5 int main() 6 { 7 char p[300]; 8 int dp[300],sum[300]; 9 int i,j,len,t,min;10 scanf("%d%*c",&t);11 while(t--)12 {13 memset(sum,0,sizeof(sum));14 memset(dp,0,sizeof(dp));15 scanf("%s",p);16 len = strlen(p);17 if(p[0] <= 'Z'&&p[0] >= 'A')18 sum[0] = 1;19 for(i = 1; i <= len-1; i ++)20 {21 if(p[i] <= 'Z'&&p[i] >= 'A')22 sum[i] = sum[i-1] + 1;23 else24 sum[i] = sum[i-1];25 }26 for(i = 0; i <= len-1; i ++)27 {28 min = N;29 for(j = 0; j <= i; j ++)30 {31 if(j == 0)32 {33 if(min > sum[i]+2+2*(i-sum[i]+1))34 min = sum[i]+2+2*(i-sum[i]+1);35 if(min > 2*sum[i]+i-sum[i]+1)36 min = 2*sum[i]+i-sum[i]+1;37 }38 else39 {40 if(min > dp[j-1] + (sum[i]-sum[j-1])+2+2*(i-j+1-sum[i]+sum[j-1]))41 min = dp[j-1] + (sum[i]-sum[j-1])+2+2*(i-j+1-sum[i]+sum[j-1]);42 if(min > dp[j-1] + (sum[i]-sum[j-1])*2 + i-j+1-sum[i]+sum[j-1])43 min = dp[j-1] + (sum[i]-sum[j-1])*2 + i-j+1-sum[i]+sum[j-1];44 }45 }46 dp[i] = min;47 }48 printf("%d\n",dp[len-1]);49 }50 return 0;51 }

 

转载于:https://www.cnblogs.com/naix-x/archive/2012/08/27/2657988.html

你可能感兴趣的文章
[HDU] 1025 Constructing Roads In JGShining's Kingdom - 二分的求最大递增非连续子序列
查看>>
mysql数据库的左连接,右连接,内链接。
查看>>
logistic softmax
查看>>
函数模拟sort快排
查看>>
WPF Knowledge Points - 默认视图(DefaultView),CollectionSourceView,CollectionView的区别
查看>>
C#开源项目大全
查看>>
docker 小技巧 docker network create br-name 指定IP地址
查看>>
decode函数
查看>>
通过jvm 查看死锁
查看>>
多线程(大量密集的I/O处理);多进程(大量密集并行计算);Scrapy(异步,协程)...
查看>>
rabbitmq route
查看>>
恢复为TrustedInstaller权限
查看>>
怎样利用细碎时间达到整体学习的效果
查看>>
C# 位数组
查看>>
当递归遇到synchronized
查看>>
HDU - 2141 : Can you find it?
查看>>
bzoj1093 [ZJOI2007]最大半联通子图 缩点 + 拓扑序
查看>>
《Java并发编程的艺术》之线程池(二)
查看>>
SCP注意事项
查看>>
英国NHS
查看>>