SRM 449 div1 (practice)
- 250pt:
- 暴力枚举所有的可能的情况就好了,求面积的时候我是用梯形的面积减去两个三角形的面积。。
- 550pt:
- 题意:给你一个蜂窝形状的特殊图形,有一些格子已经被占据了,问你将剩下的格子用1*2的砖块尽可能的铺满的总方案数,见下图。
- 此题想了半天,隐约感觉可以dp,但是无从D起,,,膜拜了下rng_58的超短代码(大部分人选择dfs转移),但是rng_58将图转换成网格后巧妙的使用逐格递推的方法,代码超短,简直就是高端洋气上档次啊,好想又好写,这种题我以前都是dfs写转移的,要,b半天才能写出来。。
- #include <cstdio>
- #include <vector>
- #include <cstring>
- #include <cstdlib>
- #include <algorithm>
- using namespace std;
- class HexagonalBattlefield{
- public :
- int countArrangements(vector <int> X, vector <int> Y, int N) ;
- };
- int g[250][250];
- long long dp[2][1<<15];
- const int mod = 2000000011;
- void Add(long long &x,int y)
- {
- x += y;
- if(x >= mod) x -= mod;
- }
- int dx[] = {1,0,-1,0,1,-1};
- int dy[] = {0,1,0,-1,1,-1};
- vector<pair<int,int> > p;
- int HexagonalBattlefield::countArrangements(vector <int> X, vector <int> Y, int N)
- {
- N --;
- for(int i = -N; i <= N; i++) {
- for(int j = -N; j <= N; j++) if(abs(i-j) <= N ){//ddddd
- // puts("ddd");
- int t = 0;
- for(int k = 0; k < X.size(); k++) {
- if(i == X[k] && j == Y[k]) {t=1;break;}
- }
- if(!t) p.push_back(make_pair(i,j));
- }
- }
- // puts("dddd");
- int m = p.size();
- for(int i = 0; i < m; i++) {
- int x = p[i].first , y = p[i].second;
- for(int j = 0; j < 6; j++) {
- int tx = x + dx[j];
- int ty = y + dy[j];
- for(int k = 0; k < m; k++) if(tx == p[k].first && ty == p[k].second) {
- g[i][k] = true;
- }
- }
- }
- // printf("m=%d\n",m);
- // puts("debug");
- int cur = 0, nxt = 1;
- dp[cur][0] = 1;
- for(int i = 0; i < m; i++) {
- // printf("i=%d\n",i);
- memset(dp[nxt],0,sizeof(dp[nxt]));
- for(int j = 0; j < (1<<15); j++) if(dp[cur][j]){
- if(j&1) {Add(dp[nxt][j>>1] , dp[cur][j]); continue;}
- for(int k = 1; k <= 15; k++) if(i+k < m && g[i][i+k] && !( j&(1<<k) ) ) {
- int mask = ( j | (1 << k) )>> 1;
- Add(dp[nxt][mask] , dp[cur][j]);
- }
- }
- std::swap(cur,nxt);
- }
- return dp[cur][0];
- }
SRM 449 div1 (practice)的更多相关文章
- Topcoder SRM 643 Div1 250<peter_pan>
Topcoder SRM 643 Div1 250 Problem 给一个整数N,再给一个vector<long long>v; N可以表示成若干个素数的乘积,N=p0*p1*p2*... ...
- Topcoder Srm 726 Div1 Hard
Topcoder Srm 726 Div1 Hard 解题思路: 问题可以看做一个二分图,左边一个点向右边一段区间连边,匹配了左边一个点就能获得对应的权值,最大化所得到的权值的和. 然后可以证明一个结 ...
- 图论 SRM 674 Div1 VampireTree 250
Problem Statement You are a genealogist specializing in family trees of vampires. Vampire famil ...
- TopCoder SRM 605 DIV1
604的题解还没有写出来呢.先上605的. 代码去practice房间找. 说思路. A: 贪心,对于每个类型的正值求和,如果没有正值就取最大值,按着求出的值排序,枚举选多少个类型. B: 很明显是d ...
- SRM 583 DIV1
A 裸最短路. class TravelOnMars { public: int minTimes(vector <int>, int, int); }; vector<int> ...
- SRM 590 DIV1
转载请注明出处,谢谢viewmode=contents">http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlov ...
- Topcoder SRM 602 div1题解
打卡- Easy(250pts): 题目大意:rating2200及以上和2200以下的颜色是不一样的(我就是属于那个颜色比较菜的),有个人初始rating为X,然后每一场比赛他的rating如果增加 ...
- 状态压缩DP SRM 667 Div1 OrderOfOperations 250
Problem Statement Cat Noku has just finished writing his first computer program. Noku's compute ...
- 数学 SRM 690 Div1 WolfCardGame 300
Problem Statement Wolf Sothe and Cat Snuke are playing a card game. The game is played with exa ...
随机推荐
- 九度 Online Judge 之《剑指 Offer》一书相关题目解答
前段时间准备华为机试,正好之前看了一遍<剑指 Offer>,就在九度 Online Judge 上刷了书中的题目,使用的语言为 C++:只有3题没做,其他的都做了. 正如 Linus To ...
- 写好Hive 程序的五个提示
转自http://www.alidata.org/archives/622 使用Hive可以高效而又快速地编写复杂的MapReduce查询逻辑.但是某些情况下,因为不熟悉数据特性,或没有遵循Hive的 ...
- [转]eoe社区cocos2d-x游戏引擎知识大汇总
[eoeAndroid 社区]特意为大家汇总了cocos2d-x知识贴,分量十足,纯正干或.从基础教程到游戏应用的开发,我们不让知识流失,我们要做知识的搬运工还有加工 师.希望大家能够一起的学习,和大 ...
- IDE Plug
IDE Plug 使用 cnpack提供的IDE External Wizard Management 管理插件.添加插件.删除插件 Cnpack D:\Program Files (x86)\CnP ...
- c++一些问题总结
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...
- 让CSS3给你的文字加上边框宽度,并实现镂空效果
这次,我主要向大家介绍一下CSS3下的-webkit-text-stroke属性,并分享几个用该属性制作的镂空文字效果. 1.-webkit-text-stroke属性简介 CSS边框的一个不足就是只 ...
- 实现系统函数time,获取当前时间与UTC的间隔
因种种原因,最近很少上cnblogs了.刚写了一个实现time的函数,可以通过该函数获取当前时间与1970年1月1日 0时0分0秒的差值,精确到秒,可以用在某些没有时候使用time不正确而不得不调用硬 ...
- Java并发编程:Timer和TimerTask
Java并发编程:Timer和TimerTask 下面内容转载自: http://blog.csdn.net/xieyuooo/article/details/8607220 其实就Timer来讲就是 ...
- gcc -D
[gcc -D] -D name Predefine name as a macro, with definition 1. 通常debug和release版的区别就在于是否有DEBUG宏,DEBUG ...
- 【破解三网】iphone5 国行 A1429
教程仅适用于A1429的I5. 1.首先把sim卡插入手机.关闭蜂窝数据里面的"蜂窝移动数据"还有打开漫游里面的"语音漫游".如图 ...