[CodeForces] 87
来源:互联网 发布:java 时间戳格式化 编辑:程序博客网 时间:2024/04/29 07:13
A BFS || DFS
B Greedy
开始的被hack了 : (
一个很2却很隐蔽的错误:
我默认了当前行的位置一定是在下一行的最左边的最左(右同理)
应该加上一个abs
C 观察 然后把图转化为
1 - 00 2 - 01 3 - 11 4 - 10
这样就会发现每一行,首位必须是 (0)101...
每一列,末位必须是 (0)101...
D 不难的DP,太弱了,最后20多分钟没想清楚
E 很熟悉,也很有意思的贪心 + 某数据结构维护
UPD: Refer to the
Editorial
翻译一下就是:
用一个线段树维护 dp[i][j]
表示当前在第i条路上,修护了前j条路,得到的最大收益
这样可以更新dp[i+1][j+1]
首先把这段区间都加上修护第i+1条路的代价
然后按区间加上race满足条件得到的收益
对于一个race <si, ei, ci> 如果ei = i+1,则更新ei - si < k <= i 这段区间的值
再每次加入一个新节点,表示未修护第i+1条路的最优值
复杂度为 O(M logN)int main() { while (scanf ("%d%d", &n, &m) != EOF) { rep(i,n) scanf ("%d", a + i); rep(i,m) r[i].input(); sort (r, r + m); st.build(0, n); long long ans = 0; int id = 0; rep(i,n) { st.update(0, i, -a[i]); for (; id < m && r[id].e == i; ++id) { st.update(0, r[id].s, r[id].c); } ans = max(ans, st.getMax()); st.update(i + 1, i + 1, ans); } printf ("%I64d\n", ans); } return 0;}
- [CodeForces] 87
- codeforces~~~
- Codeforces
- codeforces
- Codeforces
- codeforces
- codeforces
- Codeforces
- Codeforces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- java 线程池
- linux下安装配置使用memcache,memcached,libevent(后有ubuntu的memcache安装)
- php highlight
- Linux下数字表示文件的操作权限(777,755,..)
- 网站公开webservice的API,通过这些API得到一些服务
- [CodeForces] 87
- 软件科学中的模式
- 小技巧1--获取日期中的指定部分
- 小技巧2--c语言中用预处理器指令进行注释
- 小技巧3--长行拆分
- 小技巧4--配置(主键)或者标示顺序的列或者属性
- Silverlight 数据绑定 (1):怎样实现数据绑定
- 指针数组 数组指针 区别
- 一个开始,但居然不是为了专业