题意:

给你一个矩形的画布,此画布由‘B’和‘.’组成,画T次每次画的时候他的左上角的起始点是确定的几位(1,1),(2,2),(3,3)......(T,T); 在画的过程中可能会出现相互覆盖求画完T次后一共有多少个‘B’

{
"..B",
"B..",
"BB."
}
3
Returns: 10

思路:

假设矩形的长度为n次,开始我一直在思考覆盖完n次后减去多少,在第n次以后每一个减去的都一样了。不过这样会出现重复的减去,不对。我们只需要考虑在覆盖n个后第一个的总共剩下多少个没有被覆盖的。以后都是一样的了。最后我们只需要计算一下最后n-1个的数就可以了。最后计算的复杂度为O(50^3).

class PastingPaintingDivTwo
{public:long long countColors(vector <string> clipboard, int T){char tp[55][55];int i,j,ki,kj,k;int sz = clipboard.size();if (sz == 1){LL ans = 0;for (i = 0; i < clipboard[0].size(); ++i)if (clipboard[0][i] == 'B') ans += 1;// printf("11111111111111\n");ans = ans*T;return ans;}else{LL ans = 0;for (i = 0; i < sz; ++i){for (j = 0; j < clipboard[i].size(); ++j){tp[i][j] = clipboard[i][j];}}LL ct;for (k = 1; k < sz; ++k){for (i = k, j = 0; i < sz; ++i,++j){for (ki = k,kj = 0; ki < clipboard[i].size(); ++ki,++kj){if (clipboard[i][ki] == 'B' && clipboard[j][kj] == 'B'){tp[i][ki] = '.';}}}}ct = 0;for (i = 0; i < sz; ++i){for (j = 0; j < clipboard[i].size(); ++j){if (tp[i][j] == 'B') ct++;}}if (T - (sz - 1) > 0)ans  = (LL)(T - (sz - 1))*ct;// cout<<ans<<endl;int p;  CL(tp,0);int mk = min(sz - 1,T);for (p = 1; p <= mk; ++p){for (i = 0; i < sz; ++i){for (j = 0; j < clipboard[i].size(); ++j){tp[i][j] = clipboard[i][j];//tt[i][j] = clipboard[i][j];}}for (k = 1; k < sz - p; ++k){for (i = k, j = 0; i < sz; ++i,++j){for (ki = k,kj = 0; ki < clipboard[i].size(); ++ki,++kj){if (clipboard[i][ki] == 'B' && clipboard[j][kj] == 'B'){tp[i][ki] = '.';}}}}ct = 0;for (i = 0; i < sz; ++i){for (j = 0; j < clipboard[i].size(); ++j){if (tp[i][j] == 'B') ct++;}}ans += ct;}//printf("222222222222\n");return ans;}}
};

  

转载于:https://www.cnblogs.com/E-star/archive/2012/12/02/2797954.html

TC SRM 562 div2 B 题相关推荐

  1. TC SRM 593 DIV2 1000

    很棒的DP,不过没想出,看题解了..思维很重要. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstrin ...

  2. TC SRM 665 DIV2 B LuckyCycle 暴力

    LuckyCycle Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.a ...

  3. TC SRM 553 DIV2

    转载请注明出处,谢谢http://blog.csdn.net/acm_cxlove/article/details/7854526       by---cxlove 赤裸裸的又在送rate. 250 ...

  4. Topcoder口胡记 SRM 562 Div 1 ~ SRM 599 Div 1

    据说做TC题有助于提高知识水平? :) 传送门:https://284914869.github.io/AEoj/index.html 转载请注明链接:http://www.cnblogs.com/B ...

  5. TC(SRM)和CF入门教程for ACMer[转载]

    一.TC基本介绍TC的网址www.topcoder.com/tc,我们一般提到TC的时候是特指其中的Single Round Match(SRM).SRM的规则总结起来就是一句话:75分钟做完3道难度 ...

  6. TC(SRM)和CF入门教程for ACMer

    一.TC基本介绍 TC的网址www.topcoder.com/tc,我们一般提到TC的时候是特指其中的Single Round Match(SRM). SRM的规则总结起来就是一句话:75分钟做完3道 ...

  7. TC SRM 655 Div1 Level 3 题解

    TC SRM 655 Div1 Level 3 题解 题目传送门 dp+几何 首先可以发现凸包是顺时针排列的一些线段构成的.我们可以预处理每一个蓝点是否都在一个线段 r [ i ] → r [ j ] ...

  8. Topcoder Srm 671 Div2 1000 BearDestroysDiv2

    \(>Topcoder \space Srm \space 671 \space Div2 \space 1000 \space BearDestroysDiv2<\) 题目大意 : 有一 ...

  9. SRM 543 Div2

    决定以后多做一些TC,即使做不了比赛,也要多做一些TC上的题,顺便写一些结题报告什么的.不过像我这种在Div2混的弱菜,也写不出什么高质量的结题报告,而且1000pt的题,我基本都不用看了,尽量把25 ...

最新文章

  1. 最长不下降子序列的O(n^2)算法和O(nlogn)算法
  2. node那点事(二) -- Writable streams(可写流)、自定义流
  3. SpringBoot怎么直接访问templates下的html页面
  4. 【2016年第4期】大数据应用系统的消息驱动架构
  5. Django使用消息提示简单的弹出个对话框
  6. ng-zorro-antd引入less时错误解决记录
  7. 计算机驱动程序的安装过程,电脑常用的驱动程序的安装与管理
  8. 运动会管理系统java
  9. java拦截器放行_java拦截器放行某些请求
  10. 喜讯 | 大势智慧获得全球软件领域最高权威CMMI5认证
  11. vs2005中文版/2010中文旗舰版等安装步骤和注意
  12. 程序设计作业——系统管理
  13. 一文读懂CIM平台的定义和架构
  14. VIM编辑器配置文件修改
  15. MySQL 报错InnoDB: Cannot allocate memory for the buffer poo处理方法
  16. Java常用的集成开发工具Eclipse和IDEA
  17. 解决Flash Helper Service老是弹出流氓广告
  18. 得到app文稿导出_得到app的文稿怎么下载复制导出
  19. ArcGis Engine二次开发入门(1)
  20. Java中IO流的分类和BIO,NIO,AIO的区别

热门文章

  1. druid连接池mysql5.7_Spring Boot 使用Druid连接池整合Mybatis-Plus连接Mysql数据库
  2. mysql有没有批量游标_MySQL使用游标批量处理进行表操作_MySQL
  3. java同步锁synchronized_Java对象锁和类锁全面解析(多线程synchronized关键字)
  4. spring 可以有多个ioc容器吗
  5. 005_Spring Data JPA条件查询
  6. linux6.5安装打印机,如何在CentOS 6.5下安装Win7下的共享打印机服务
  7. python百鸡百钱递归_百钱百鸡,一百块钱买一百只鸡的递归算法 javascript实现
  8. TextureView+MediaPlayer实现在线短视频播放
  9. 外网访问 KVM 虚拟机
  10. web访问hive速度怎么样_使用Hive的web界面:HWI