昨天晚上zyf神犇问我的题,虽然我太弱参加不了APIO但也做一做吧。

用小数据拍了无数次总是查不出错来,交上去就WA,后来用国内数据测发现是主席树上区间相减的值没有用long long存,小数据真是没用啊QuQ

手残不加long long毁一生

交上去还是WA,最后发现没有把windows下的I64d改成linux下的lld==

因为这个贡献了两次Wrong Answer,,,好像第一次还爆内存了?比赛时这么手残就得滚粗了QAQ

#include<cstdio>
#include<cstring>
#include<algorithm>
#define read(x) x=getint()
using namespace std;
const int N = 100003;
int getint() {
int k = 0, fh = 1; char c = getchar();
for(; c < '0' || c > '9'; c = getchar())
if (c == '-') fh = -1;
for(; c >= '0' && c <= '9'; c = getchar())
k = k * 10 + c - '0';
return k * fh;
}
struct node1 {
int b, c, l, id;
} Q[N];
struct node2 {
int l, r, s;
long long sc;
}T[N * 30];
int S[N], n, m, point[N], nxt[N], to[N], cnt = 0, rt = 0, L[N], R[N], H[N];
int root[N], CL[N];
void ins(int x, int y) {nxt[++cnt] = point[x]; to[cnt] = y; point[x] = cnt;}
void dfs(int x) {
S[++cnt] = x;
L[x] = cnt;
for(int i = point[x]; i; i = nxt[i]) dfs(to[i]);
R[x] = cnt;
}
bool cmp(node1 X, node1 Y) {return X.c < Y.c;}
void update(int l, int r, int &pos, int key) {
T[++cnt] = T[pos]; pos = cnt; ++T[pos].s; T[pos].sc += Q[key].c;
if (l == r) return;
int mid = (l + r) >> 1;
if (key <= mid) update(l, mid, T[pos].l, key);
else update(mid + 1, r, T[pos].r, key);
}
long long Query(int l, int r, int x, int y, int key) {
if (l == r) {
if (T[y].sc - T[x].sc <= key) return T[y].s - T[x].s;
else return key / Q[l].c;
}
int mid = (l + r) >> 1; long long su = T[T[y].l].sc - T[T[x].l].sc;
if (su >= key) return Query(l, mid, T[x].l, T[y].l, key);
else return T[T[y].l].s - T[T[x].l].s + Query(mid + 1, r, T[x].r, T[y].r, key - su);
}
int main() {
read(n); read(m);
for(int i = 1; i <= n; ++i)
read(Q[i].b), read(Q[i].c), read(Q[i].l), Q[i].id = i, CL[i] = Q[i].l;
for(int i = 1; i <= n; ++i)
if (Q[i].b == 0) rt = i;
else ins(Q[i].b, i);
cnt = 0;
dfs(rt);
sort(Q + 1, Q + n + 1, cmp);
for(int i = 1; i <= n; ++i)
H[Q[i].id] = i;
cnt = 0;
// for(int i = 1; i <= n; ++i) printf("%d %d\n", L[i], R[i]);
// for(int i = 1; i <= n; ++i) printf("!! %d\n", H[i]);
// for(int i = 1; i <= n; ++i) printf("!! %d\n", Q[H[i]].c);
for(int i = 1; i <= n; ++i) {
root[i] = root[i - 1];
update(1, n, root[i], H[S[i]]);
// printf("HHH %d\n", S[i]);
// printf("!!! %d\n", H[S[i]]);
}
// for(int i = 1; i <= n ;++i) printf("%I64d ", T[root[i]].sc); puts("");
long long ans = 0;
for(int i = 1; i <= n; ++i)
ans = max(ans, CL[i] * Query(1, n, root[L[i] - 1], root[R[i]], m));
printf("%lld\n", ans);
// for(int i = 1; i <= n; ++i) printf("%d %d\n", L[i], R[i]);
return 0;
}

没有删掉愚蠢的调试信息,,,

【BZOJ 2809】【APIO 2012】dispatching的更多相关文章

  1. 「BZOJ 2809」「APIO 2012」Dispatching「启发式合并」

    题意 给定一个\(1\)为根的树,每个点有\(c,w\)两个属性,你需要从某个点\(u\)子树里选择\(k\)个点,满足选出来的点\(\sum_{i=1}^k w(i)\leq m\),最大化\(k\ ...

  2. 【BZOJ 2809】2809: [Apio2012]dispatching (左偏树)

    2809: [Apio2012]dispatching Description 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿.在这个帮派里,有一名忍者被称之为 Maste ...

  3. 【BZOJ 2809】 [Apio2012]dispatching

    Description 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿.在这个帮派里,有一名忍者被称之为 Master.除了 Master以外,每名忍者都有且仅有一个上级. ...

  4. 【BZOJ 2809 dispatching】

    Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 4393  Solved: 2246[Submit][Status][Discuss] Descript ...

  5. 【BZOJ】【2809】【APIO2012】派遣dispatching

    贪心/可并堆 跪了……我这么弱果然还是应该回家种红薯去…… 考虑选人的时候,每个人对答案的贡献其实是一样的,都是1,那么我们就贪心地去选花钱少的就好啦~ 具体的做法:倒着枚举(因为有b[i]<i ...

  6. 【BZOJ】3052: [wc2013]糖果公园

    http://www.lydsy.com/JudgeOnline/problem.php?id=3052 题意:n个带颜色的点(m种),q次询问,每次询问x到y的路径上sum{w[次数]*v[颜色]} ...

  7. 【BZOJ】3319: 黑白树

    http://www.lydsy.com/JudgeOnline/problem.php?id=3319 题意:给一棵n节点的树(n<=1e6),m个操作(m<=1e6),每次操作有两种: ...

  8. 【BZOJ】3319: 黑白树(并查集+特殊的技巧/-树链剖分+线段树)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3319 以为是模板题就复习了下hld............................. 然后n ...

  9. 【BZOJ】【2084】【POI2010】Antisymmetry

    Manacher算法 啊……Manacher修改一下就好啦~蛮水的…… Manacher原本是找首尾相同的子串,即回文串,我们这里是要找对应位置不同的“反回文串”(反对称?233) 长度为奇数的肯定不 ...

随机推荐

  1. Codeforces 549C. The Game Of Parity[博弈论]

    C. The Game Of Parity time limit per test 1 second memory limit per test 256 megabytes input standar ...

  2. TCP聊天工具

    //前台书写 import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; import java ...

  3. noip模拟赛(一)魔法树

    魔法树 (mahou.pas/c/cpp) [问题描述] 魔法使moreD在研究一棵魔法树. 魔法树顾名思义,这货是一棵树,奇葩的是魔法树上的每一条边都拥有一个魔法属性,如果不那么奇葩就不是moreD ...

  4. 在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试

    from:http://m.blog.csdn.net/article/details?id=51075023 在VS2015中先创建C#项目,然后再创建要编写的动态库DLL项目,这样做的好处是整个解 ...

  5. Java 集合系列17之 TreeSet详细介绍(源码解析)和使用示例

    概要 这一章,我们对TreeSet进行学习.我们先对TreeSet有个整体认识,然后再学习它的源码,最后再通过实例来学会使用TreeSet.内容包括:第1部分 TreeSet介绍第2部分 TreeSe ...

  6. css3在不同型号手机浏览器上的兼容一览表

    网上搜集了css3对不同系统手机浏览器的支持情况(ios/android/winphone)备份一下以便查看.  以下资料由微信产品部"白树"整理, 转载请注明. √:完全支持   ...

  7. ISAPI_Rewrite中文手册

    参考:http://blog.csdn.net/fanxiaojie119/article/details/5353186 第一章:软件介绍ISAPI_Rewrite 是一款适用于IIS的功能强大的基 ...

  8. AngularJS中的过滤器

    欢迎大家指导与讨论 : ) 一.前言 AngularJS的过滤器能够将数据在被指令处理到显示在视图之前进行处理和转换.而且,过滤器不会修改作用域中的数据本身,即过滤器会保证数据的完整性.这样子能够允许 ...

  9. (原创)解决远程桌面连接远程应用时,出现 '应用程序错误: '0x7c931780'指令引用的 '0x89abcdef' 内存。该内存不能为 'read'"

    公司的部分应用为cs结构,没有web版的,这些应用的外部访问基本都是通过使用windows server 2008 r2的远程桌面服务来实现的. 个人感觉微软远程桌面服务问题很多,今天有同事使用Rem ...

  10. C#中使用Log4net日志输出到本地文件、Textbox或Listview

    网上很多配置log4net的方法,但是排行靠前的 根本就没有说明清除,导致浪费了两个小时来搞清楚如何配置,真是无语,特写此文,给那些刚接触log4net的朋友 1.参考链接:http://blog.s ...