昨天晚上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. ADO.Net属性扩展

    属性扩展 大体意思:有外键关系时将代号化信息处理成原始文字 如:Info表中的民族列显示的是民族代号处理成Nation表中的民族名称 需要在Info类里面扩展一个显示nation名称的属性 using ...

  2. 嵌入式Linux驱动学习之路(七)Linux内核启动流程

    编译的内核可能会很大,故这里可以压缩一下.而在内核文件中需要解压,所以就会有一段自解压代码. 在uboot启动内核的时候,调用了函数: thekernel(0,MACH_ID,params_addr ...

  3. 网络攻防比赛PHP版本WAF

    这次去打HCTF决赛,用了这个自己写的WAF,web基本上没被打,被打的漏洞是文件包含漏洞,这个功能在本人这个waf里确实很是捉急,由于只是简单检测了..和php[35]{0,1},导致比赛由于文件包 ...

  4. vijos1037搭建双塔(一维背包问题)

    描述 2001年9月11日,一场突发的灾难将纽约世界贸易中心大厦夷为平地,Mr. F曾亲眼目睹了这次灾难.为了纪念“9?11”事件,Mr. F决定自己用水晶来搭建一座双塔. Mr. F有N块水晶,每块 ...

  5. uva146 ID codes

    Description It is 2084 and the year of Big Brother has finally arrived, albeit a century late. In or ...

  6. ajax异步举例

    SelectInfo = { release_url: "/compatible/getReleaseFor", project_url: "/compatible/ge ...

  7. vpn+路由表,最大限度提高上网速度

    Linux使用pptpclient连接VPN后并无自动更改路由,所以需要自己添加一条规则,可以ip这个命令(ppp设备名称可以通过ifconfig查看),执行以下命令即可: root@alexknig ...

  8. http中关于缓存的那些header信息

    以前看过这方面的信息,这次用nginx做静态服务器又遇到了这个问题,所以在此总结下

  9. GLM in SPM

    主要记一句话: SPM的GLM模型中的β,指的是相应regressor对最后测量得到的信号所产生的效应(effect). 后续的假设检验过程实际上都是对各个regressor的β向量进行的. The ...

  10. usb驱动开发13之设备生命线

    上一节勉勉强强把struct urb这个中心给说完,接着看那三个基本点. 第一个基本点,usb_alloc_urb函数,创建urb的专用函数,为一个urb申请内存并做初始化,在drviers/usb/ ...