A

  只有3种情况:200以上的单独装,3个100的装一起,某两个u,v装一起且u+v<=300,

  所以做法是从大到小判断每个大小的最大能与它装一起的是谁,最后剩下100的特判.

B

  第一轮如果未分出胜负,考虑一种情况:

  mov1 >= mov2, 先手至少不会输.

  再判断赢的条件, 设d=mov1-mov2, 先手每一轮结束后可以保证每次距离缩短[1,d],但同时

  先手要保持一个安全距离safe以保证不会被后手反击:

  safe >= mov2+rng2,

  所以当 safe + mov2 <= mov1+d时先手必胜,否则平局.

  后手的推理类似.

 string FoxAndFencing::WhoCanWin(int m1, int m2, int r1, int r2, int d)
{
if (d<=r1+m1) return "Ciel";
else if (d+m1<=r2+m2) return "Liss";
else if (m2==m1) return "Draw";
else if (m1>m2)
{
if (r1+m1-*m2>r2) return "Ciel";
else return "Draw";
}else
{
printf("%d+%d , %d\n",r2,m2,r1);
if (r2+m2-*m1>r1) return "Liss";
else return "Draw";
}
}

C

  首先发现一个性质: 如果某节点x有cnt个孩子,那么往下递归至少有cnt-1个子树存在标记,

  这样才能保证x的子树都被识别,根据这条性质设计dp[i][0/1]即可.

  但是仅仅这样dp会发现最后结果有一条从根到某叶子的未被标记的链,这条链的某些点可能不会被识别,

  为了修正这个问题,可以强制根被标记,换句话说,可以枚举某个被标记的点为根.

  

 #define maxn 51
class TPS {
public:
int minimalBeacons(vector <string>);
};
int dp[maxn][],n,cnts[maxn];
int dfs(int cur,int must,int fa,vector<string> e)
{
int sum=,tmp,res;
if (dp[cur][must]!=-) return dp[cur][must];
if (cnts[cur]==) return dp[cur][must]=must;
for (int i= ; i<n ; i++ ) if (e[cur][i]=='Y' && i!=fa)
sum += dfs(i,,cur,e);
tmp=sum;
for (int i= ; i<n ; i++ ) if(e[cur][i]=='Y' && i!=fa)
tmp = min(tmp,sum-dp[i][]+dfs(i,,cur,e));
if (must && cnts[cur]==) res = sum;
else res = tmp;
if (fa==-) res++;
return dp[cur][must]=res;
}
void initson(int cur,int fa,vector<string> e)
{
for (int i= ; i<n ; i++ )
if (e[cur][i]=='Y' && i!=fa)
{
cnts[cur]++;
initson(i,cur,e);
}
}
int TPS::minimalBeacons(vector <string> e)
{
n = e.size();
int ans = n;
for (int i= ; i<n ; i++ )
{
memset(dp,-,sizeof(dp));
memset(cnts,,sizeof(cnts));
initson(i,-,e);
ans = min(ans,dfs(i,,-,e));
}
return ans;
}

SRM 598 DIV1的更多相关文章

  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. SRM 583 DIV1

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

  5. SRM 590 DIV1

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

  6. Topcoder SRM 602 div1题解

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

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

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

  8. 数学 SRM 690 Div1 WolfCardGame 300

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

  9. SRM 618 DIV1 500

    非常棒的组合问题,看了好一会,无想法.... 有很多做法,我发现不考虑顺序的最好理解,也最好写. 结果一定是两种形式 A....A   dp[n-1] A...A...A sgma(dp[j]*dp[ ...

随机推荐

  1. Oracle 表分析

    ANALYZE TABLE SeikyuTbl COMPUTE Statistics FOR TABLE FOR ALL COLUMNS FOR ALL INDEXES ; 一.优化器的优化方式 Or ...

  2. SVN权限修复

    Description : Commit failed (details follow): Suggestion : The operation could not be completed. Tec ...

  3. 关于git的文件内容冲突解决

    虽然以前我很怕git冲突,包括以前的版本控制器SVN上的冲突,但是昨天我决定好好的面对它,不去怕它,下面是我的解决过程... 话说一天的早上,我和同事(称为A)都同步了网络上的代码,然而A在中途提交了 ...

  4. 对list集合去重操作

    import java.util.ArrayList; import java.util.List; //删除集合中重复的数据 public class RemoteTheSameDataInList ...

  5. jQuery插件开发 格式与解析3之$.extend()用途

    前叙:$.extend()——用途:扩展和继承 1.Object extend() 用一个或多个对象扩展另一个对象,并返回已修改的原始对象.这对于简单继承是一个非常有用的实用工具. (1)扩展:(Do ...

  6. WinXP 无线提示“区域中找不到无线网络”的一种可能原因!

    貌似WinXP还是无限经典,我也一直还在用,不知道哪天才会放弃.这次遇见的问题,或许也有XP爱好者也遇得见,记下点文字备忘.----------------------- 单调的切割线 ------- ...

  7. 记录一下自己总结出来的,在内网环境下使用maven打包的各种方法,包括各种常用的打包方式(一)

    (一)内外网代理仓库搭建 想了一下,先用这个MAVEN安装部署的说明随笔,作为自己的第一篇技术帖,往后会陆陆续续将自己研究的心得发出来,留下脚印.希望有大神可以指点 一 .文章主要解决问题说明 1) ...

  8. Java基础知识强化57:经典排序之希尔排序(ShellSort)

    1. 希尔排序的原理: 希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本.希尔排序是非稳定排序算法.该方法因DL.Shell于1959年提出 ...

  9. Linux命令之必杀绝技Vi文本编辑的使用

    vi  文本编辑器 语法:vi [参数] 文件 进入vi全屏幕编辑画面 按字母i进入[输入模式],按[ESC]转到命令行, 输入 :q可不保存退出vi :wq存盘退出vi :q!不存盘强制退出 :w ...

  10. c#.net防止按F5刷新页面重复提交的方法

    在网上购物的过程中,提交完一个页面后,如果此时按f5刷新,则会弹出一个提示:如果继续,则会重新发送提交我们刚才提交的内容,这个问题应该规避掉,不然总是重复提交付款,那可不是件好事. 在c#.net中的 ...