SRM 638 Div2
2333.。。
因为TC过少的参与者。加上不断fst 我掉了div2该。
幸运的是完成的背div1该。。
250
水的问题
500
水的问题。。
直接bfs扩展即可了
注意判重。 我还用康托展开了真是多此一举。。
1000
这题理解错题意了。。
我说看别人代码怎么看着不正确劲来着
只是还是很easy的一道题
二进制枚举烧哪些叶子结点
然后对每种烧法
求最短路
求完最短路,枚举边
如果边的两个结点是u,v权值为w
就求最大的(dis[u]+dis[v]+w )/2就是烧完的时间
为啥这样呢
如果某边是最后被烧掉的,有两种情况
一种是u,v分别都是由别的结点传来的火烧过来的
一种是u被v传来的火烧过来的
第一种。最好还是设dis[u] > dis[v]
答案就是( L-(dis[u] - dis[v]) ) / 2 + dis[u] = (dis[u] + dis[v] + L) / 2
另外一种
dis[v] + L = dis[u]
那么相同dis[u] = (dis[v] + L + dis[u]) / 2
二者都能够用这个表示了
然后为了方便我们就不除以2了
struct node {
int v, w;
node () {}
node (int _v, int _w) {v = _v; w = _w;}
};
vector<node>g[22];
int ind[22], lea[22], pos[22], d[22], vis[22], q[1111];
set<int> s;
class CandleTimerEasy
{
public:
int differentTime(vector <int> A, vector <int> B, vector <int> len)
{
int n = A.size() + 1;
for(int i = 0; i < n; i++) g[i].clear();
memset(ind, 0, sizeof(ind));
for(int i = 0; i < n - 1; i++) {
g[A[i]].push_back(node(B[i], len[i]));
g[B[i]].push_back(node(A[i], len[i]));
++ind[A[i]]; ++ind[B[i]];
}
s.clear();
int cnt = 0;
memset(pos, -1, sizeof(pos));
for(int i = 0; i < n; i++) {
if(ind[i] == 1) {
lea[cnt] = i;
pos[i] = cnt;
cnt++;
}
}
for(int sta = 1; sta < (1 << cnt); sta ++) {
int h = 0, t = 0;
for(int i = 0; i < n; i++) {
d[i] = INF; vis[i] = 0;
if(pos[i] != -1) {
if(sta & (1 << pos[i])) {
q[t++] = i;
d[i] = 0;
vis[i] = 1;
}
}
}
while(h < t) {
int u = q[h++];
vis[u] = 0;
for(int i = 0; i < g[u].size(); i++) {
int v = g[u][i].v;
int w = g[u][i].w;
if(d[u] + w < d[v]) {
d[v] = d[u] + w;
if(!vis[v]) {
q[t++] = v;
vis[v] = 1;
}
}
}
}
int mx = 0;
for(int i = 0; i < n - 1; i++) mx = max(mx, d[A[i]] + d[B[i]] + len[i]);
s.insert(mx);
}
return (int)s.size();
}
}
版权声明:本文博客原创文章。博客,未经同意,不得转载。
SRM 638 Div2的更多相关文章
- SRM 657 DIV2
-------一直想打SRM,但是感觉Topcoder用起来太麻烦了.题目还是英文,不过没什么事干还是来打一打好了.但是刚注册的号只能打DIV2,反正我这么弱也只适合DIV2了.. T1: 题目大意: ...
- Topcoder Srm 673 Div2 1000 BearPermutations2
\(>Topcoder \space Srm \space 673 \space Div2 \space 1000 \space BearPermutations2<\) 题目大意 : 对 ...
- Topcoder Srm 671 Div2 1000 BearDestroysDiv2
\(>Topcoder \space Srm \space 671 \space Div2 \space 1000 \space BearDestroysDiv2<\) 题目大意 : 有一 ...
- 记第一次TopCoder, 练习SRM 583 div2 250
今天第一次做topcoder,没有比赛,所以找的最新一期的SRM练习,做了第一道题. 题目大意是说 给一个数字字符串,任意交换两位,使数字变为最小,不能有前导0. 看到题目以后,先想到的找规律,发现要 ...
- Topcoder srm 632 div2
脑洞太大,简单东西就是想复杂,活该一直DIV2; A:水,基本判断A[I]<=A[I-1],ANS++; B:不知道别人怎么做的,我的是100*N*N;没办法想的太多了,忘记是连续的数列 我们枚 ...
- SRM 592 DIV2 报告
昨天下午查看邮箱,看到了topcoder的SRM比赛通知和cf的比赛通知,当时什么也不想做,心里空荡荡的,忽然就想参加一下,试试看.吃完晚饭回来一看,就剩十几分钟了,匆忙把平台下了,就开始等待比赛开始 ...
- SRM 670 div2 A B C div1 A(贪心,子问题合并)
A Cdgame brute force... B Drbalance 贪心,每次选最前面的-变成+,相当于后面所有的负值+2. C Treestrat 考虑集中去抓一个Red Token,以这个To ...
- topcpder SRM 664 div2 A,B,C BearCheats , BearPlays equalPiles , BearSorts (映射)
A题,熊孩子测视力,水题,题意就是判断一下两个数对应位不相同的数字有多少个. #include<bits/stdc++.h> using namespace std; class Bear ...
- topcoder SRM 628 DIV2 BracketExpressions
先用dfs搜索所有的情况,然后判断每种情况是不是括号匹配 #include <vector> #include <string> #include <list> # ...
随机推荐
- VC动态轨迹画线
分类: 2.4 线程/图形学2010-04-30 22:14 1878人阅读 评论(0) 收藏 举报 文档null 这是一个绘制直线的简单绘图程序,能过实现动态轨迹画线,在拖动时产生临时线来表示可能画 ...
- HDU 2544 最短
链接:http://acm.hdu.edu.cn/showproblem.php? pid=2544 解析: 首先数据量为V<=100 那么这里使用不论什么基础的最短路的算法都不会超时! 常见数 ...
- Python 中的用户自定义类型
Python中面向对象的技术 Python是面向对象的编程语言,自然提供了面向对象的编程方法.但要给面向对象的编程方法下一个定义,是很困难的.问题关键是理解对象 的含义.对象的含义是广泛的,它是对现实 ...
- EasyUI - DateBox组件
效果: html代码: <input type ="text" id ="box" /> JS代码: $(function () { //设置返回格 ...
- js模板引擎--artTemplate
js模板引擎--artTemplate 以前研究过一段时间的handlebars,但因为其渲染性能略逊于腾讯的artTemplate(在artTemplate的GitHub官网上有推荐的性能测试地址) ...
- Android 带你从源码的角度解析Scroller的滚动实现原理
转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17483273),请尊重他人的辛勤劳动成果,谢谢! 今天给大 ...
- ASP.NET - TreeView控件,只操作最后一级节点
效果: 使用母板页进行,左右页面进行跳转. 绑定TreeView控件:http://www.cnblogs.com/KTblog/p/4792302.html 主要功能: 点击节点的时候,只操作最后一 ...
- QNX---Interrupt vector numbers(原创!!!)
Interrupt intr Description 0 A clock that runs at the resolution set by ClockPeriod() 1 Keyboard 2 S ...
- 【ASP.NET Web API教程】2.3.5 用Knockout.js创建动态UI
原文:[ASP.NET Web API教程]2.3.5 用Knockout.js创建动态UI 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的内容 ...
- win7 下使用cygwin
http://cygwin.com/index.html 还是看官网! 很多用windows的朋友不习惯于用linux的开发环境.虽然很乐意尝试一下,但是往往怕 linux系统打乱了自己的正 ...