1. 250pt:
  2. 暴力枚举所有的可能的情况就好了,求面积的时候我是用梯形的面积减去两个三角形的面积。。
  3. 550pt
  1. 题意:给你一个蜂窝形状的特殊图形,有一些格子已经被占据了,问你将剩下的格子用1*2的砖块尽可能的铺满的总方案数,见下图。


  1. 此题想了半天,隐约感觉可以dp,但是无从D起,,,膜拜了下rng_58的超短代码(大部分人选择dfs转移),但是rng_58将图转换成网格后巧妙的使用逐格递推的方法,代码超短,简直就是高端洋气上档次啊,好想又好写,这种题我以前都是dfs写转移的,要,b半天才能写出来。。
  1. #include <cstdio>
  2. #include <vector>
  3. #include <cstring>
  4. #include <cstdlib>
  5. #include <algorithm>
  6. using namespace std;
  7. class HexagonalBattlefield{
  8. public :
  9. int countArrangements(vector <int> X, vector <int> Y, int N) ;
  10. };
  11. int g[250][250];
  12. long long dp[2][1<<15];
  13. const int mod = 2000000011;
  14. void Add(long long &x,int y)
  15. {
  16. x += y;
  17. if(x >= mod) x -= mod;
  18. }
  19. int dx[] = {1,0,-1,0,1,-1};
  20. int dy[] = {0,1,0,-1,1,-1};
  21. vector<pair<int,int> > p;
  22. int HexagonalBattlefield::countArrangements(vector <int> X, vector <int> Y, int N)
  23. {
  24. N --;
  25. for(int i = -N; i <= N; i++) {
  26. for(int j = -N; j <= N; j++) if(abs(i-j) <= N ){//ddddd
  27. // puts("ddd");
  28. int t = 0;
  29. for(int k = 0; k < X.size(); k++) {
  30. if(i == X[k] && j == Y[k]) {t=1;break;}
  31. }
  32. if(!t) p.push_back(make_pair(i,j));
  33. }
  34. }
  35. // puts("dddd");
  36. int m = p.size();
  37. for(int i = 0; i < m; i++) {
  38. int x = p[i].first , y = p[i].second;
  39. for(int j = 0; j < 6; j++) {
  40. int tx = x + dx[j];
  41. int ty = y + dy[j];
  42. for(int k = 0; k < m; k++) if(tx == p[k].first && ty == p[k].second) {
  43. g[i][k] = true;
  44. }
  45. }
  46. }
  47. // printf("m=%d\n",m);
  48. // puts("debug");
  49. int cur = 0, nxt = 1;
  50. dp[cur][0] = 1;
  51. for(int i = 0; i < m; i++) {
  52. // printf("i=%d\n",i);
  53. memset(dp[nxt],0,sizeof(dp[nxt]));
  54. for(int j = 0; j < (1<<15); j++) if(dp[cur][j]){
  55. if(j&1) {Add(dp[nxt][j>>1] , dp[cur][j]); continue;}
  56. for(int k = 1; k <= 15; k++) if(i+k < m && g[i][i+k] && !( j&(1<<k) ) ) {
  57. int mask = ( j | (1 << k) )>> 1;
  58. Add(dp[nxt][mask] , dp[cur][j]);
  59. }
  60. }
  61. std::swap(cur,nxt);
  62. }
  63. return dp[cur][0];
  64. }
  1.  
  1.  
  1.  

SRM 449 div1 (practice)的更多相关文章

  1. Topcoder SRM 643 Div1 250<peter_pan>

    Topcoder SRM 643 Div1 250 Problem 给一个整数N,再给一个vector<long long>v; N可以表示成若干个素数的乘积,N=p0*p1*p2*... ...

  2. Topcoder Srm 726 Div1 Hard

    Topcoder Srm 726 Div1 Hard 解题思路: 问题可以看做一个二分图,左边一个点向右边一段区间连边,匹配了左边一个点就能获得对应的权值,最大化所得到的权值的和. 然后可以证明一个结 ...

  3. 图论 SRM 674 Div1 VampireTree 250

    Problem Statement      You are a genealogist specializing in family trees of vampires. Vampire famil ...

  4. TopCoder SRM 605 DIV1

    604的题解还没有写出来呢.先上605的. 代码去practice房间找. 说思路. A: 贪心,对于每个类型的正值求和,如果没有正值就取最大值,按着求出的值排序,枚举选多少个类型. B: 很明显是d ...

  5. SRM 583 DIV1

    A 裸最短路. class TravelOnMars { public: int minTimes(vector <int>, int, int); }; vector<int> ...

  6. SRM 590 DIV1

    转载请注明出处,谢谢viewmode=contents">http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlov ...

  7. Topcoder SRM 602 div1题解

    打卡- Easy(250pts): 题目大意:rating2200及以上和2200以下的颜色是不一样的(我就是属于那个颜色比较菜的),有个人初始rating为X,然后每一场比赛他的rating如果增加 ...

  8. 状态压缩DP SRM 667 Div1 OrderOfOperations 250

    Problem Statement      Cat Noku has just finished writing his first computer program. Noku's compute ...

  9. 数学 SRM 690 Div1 WolfCardGame 300

    Problem Statement      Wolf Sothe and Cat Snuke are playing a card game. The game is played with exa ...

随机推荐

  1. 九度 Online Judge 之《剑指 Offer》一书相关题目解答

    前段时间准备华为机试,正好之前看了一遍<剑指 Offer>,就在九度 Online Judge 上刷了书中的题目,使用的语言为 C++:只有3题没做,其他的都做了. 正如 Linus To ...

  2. 写好Hive 程序的五个提示

    转自http://www.alidata.org/archives/622 使用Hive可以高效而又快速地编写复杂的MapReduce查询逻辑.但是某些情况下,因为不熟悉数据特性,或没有遵循Hive的 ...

  3. [转]eoe社区cocos2d-x游戏引擎知识大汇总

    [eoeAndroid 社区]特意为大家汇总了cocos2d-x知识贴,分量十足,纯正干或.从基础教程到游戏应用的开发,我们不让知识流失,我们要做知识的搬运工还有加工 师.希望大家能够一起的学习,和大 ...

  4. IDE Plug

    IDE Plug 使用 cnpack提供的IDE External Wizard Management 管理插件.添加插件.删除插件 Cnpack D:\Program Files (x86)\CnP ...

  5. c++一些问题总结

    <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...

  6. 让CSS3给你的文字加上边框宽度,并实现镂空效果

    这次,我主要向大家介绍一下CSS3下的-webkit-text-stroke属性,并分享几个用该属性制作的镂空文字效果. 1.-webkit-text-stroke属性简介 CSS边框的一个不足就是只 ...

  7. 实现系统函数time,获取当前时间与UTC的间隔

    因种种原因,最近很少上cnblogs了.刚写了一个实现time的函数,可以通过该函数获取当前时间与1970年1月1日 0时0分0秒的差值,精确到秒,可以用在某些没有时候使用time不正确而不得不调用硬 ...

  8. Java并发编程:Timer和TimerTask

    Java并发编程:Timer和TimerTask 下面内容转载自: http://blog.csdn.net/xieyuooo/article/details/8607220 其实就Timer来讲就是 ...

  9. gcc -D

    [gcc -D] -D name Predefine name as a macro, with definition 1. 通常debug和release版的区别就在于是否有DEBUG宏,DEBUG ...

  10. 【破解三网】iphone5 国行 A1429

    教程仅适用于A1429的I5. 1.首先把sim卡插入手机.关闭蜂窝数据里面的"蜂窝移动数据"还有打开漫游里面的"语音漫游".如图               ...