删除树节点

#pragma comment(linker, "/STACK:102400000,102400000")
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<vector>
#include<algorithm>
#include<iostream>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<functional>
#include<math.h>
//#include<bits/stdc++.h>
using namespace std;
typedef long long lint;
typedef vector<int> VI;
typedef pair<int, int> PII;
typedef queue<int> QI; void makedata() {
freopen("input.txt", "w", stdout);
fclose(stdout);
} int w[], fa[], n, k;
VI G[];
void dfs(int x, int f) {
fa[x] = f; if(w[x] < k) {
fa[x] = -; for(int i = ; i < G[x].size(); i++) {
int y = G[x][i];
dfs(y, f);
}
} else {
for(int i = ; i < G[x].size(); i++) {
int y = G[x][i];
dfs(y, x);
}
}
} int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif
//makedata();
std::ios::sync_with_stdio(), cin.tie();
int root;
cin >> n >> k; for(int i = ; i <= n; i++) cin >> w[i]; for(int i = ; i <= n; i++) {
cin >> fa[i];
G[fa[i]].push_back(i); if(fa[i] == ) root = i;
} dfs(root, ); for(int i = ; i <= n; i++) cout << fa[i] << ' '; return ;
}

鱼雷射击

mei yi si lan de xie le

公平分队II

一个人拿到最大的两个,另一个拿到最小的两个,剩下的平均分配。

#pragma comment(linker, "/STACK:102400000,102400000")
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<vector>
#include<algorithm>
#include<iostream>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<functional>
#include<math.h>
//#include<bits/stdc++.h>
using namespace std;
typedef long long lint;
typedef vector<int> VI;
typedef pair<int, int> PII;
typedef queue<int> QI; void makedata() {
freopen("input.txt", "w", stdout);
fclose(stdout);
} int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif
//makedata();
std::ios::sync_with_stdio(), cin.tie();
int n;
cin >> n;
lint ans = ;
for (int i = ; i < * n - ; i++) ans += i;
ans /= ;
ans += * n - ;
if (n == ) ans = ;
cout << ans << endl;
return ;
}

数组区间

依次计算每个数字在多少个区间中出现,乘起来求和。

p[i][j]表示第i个数字左边第j个比它大的数字的位置,q[i][j]表示第i个数字右边第j个比它大的数字的位置。因为数据中每个数字都不相同,所以按从小到大的顺序计算每个数字的p和q,只需直接取其左右的连续数字即可,计算完成后将该数字删除。

对于第i个数字出现区间数的计算,枚举其左边比它大的数字j,左边界的可能种类数为p[i][j] - p[i][j + 1],右边界的可能种类数为q[i][k - j] - q[i][0]。

#pragma comment(linker, "/STACK:102400000,102400000")
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<vector>
#include<algorithm>
#include<iostream>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<functional>
#include<math.h>
//#include<bits/stdc++.h>
using namespace std;
typedef long long lint;
typedef vector<int> VI;
typedef pair<int, int> PII;
typedef queue<int> QI; void makedata() {
freopen("input.txt", "w", stdout);
fclose(stdout);
} lint a[], pre[], nex[];
lint p[][], q[][];
vector<PII> v; int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif
//makedata();
std::ios::sync_with_stdio(), cin.tie();
int n, k;
cin >> n >> k;
for (int i = ; i <= n; i++) cin >> a[i];
v.clear();
for (int i = ; i <= n; i++) v.push_back(make_pair(a[i], i));
sort(v.begin(), v.end());
for (int i = ; i <= n; i++) pre[i] = i - , nex[i] = i + ;
for (int i = ; i < v.size(); i++) {
int id = v[i].second, ptr;
p[id][] = q[id][] = id;
ptr = id;
for (int i = ; i <= k; i++) {
if (pre[ptr] > ) {
p[id][i] = pre[ptr];
ptr = pre[ptr];
} else break;
}
ptr = id;
for (int i = ; i <= k; i++) {
if (nex[ptr] <= n) {
q[id][i] = nex[ptr];
ptr = nex[ptr];
} else break;
}
nex[pre[id]] = nex[id];
pre[nex[id]] = pre[id];
}
lint ans = ;
for (int i = ; i <= n; i++) {
for (int j = ; j <= k; j++) {
if (q[i][j] == ) q[i][j] = n + ;
}
}
for (int i = ; i <= n; i++) {
for (int j = ; j < k; j++) {
if (p[i][j] == ) break;
ans += (p[i][j] - p[i][j + ]) * (q[i][k - j] - q[i][]) * a[i];
}
}
cout << ans << endl;
return ;
}

[hihicoder][Offer收割]编程练习赛47的更多相关文章

  1. hihocoder [Offer收割]编程练习赛4

    描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元.并且如果消费总计满X元,还能享受优惠.小Ho是一个不薅羊毛不舒服斯基的人,他希望 ...

  2. hihocoder [Offer收割]编程练习赛61

    [Offer收割]编程练习赛61 A:最小排列 给定一个长度为m的序列b[1..m],再给定一个n,求一个字典序最小的1~n的排列A,使得b是A的子序列. 贪心即可,b是A的子序列,把不在b中的元素, ...

  3. [Offer收割]编程练习赛46

    [Offer收割]编程练习赛46赛后题解 A.AEIOU 分析

  4. ACM学习历程—Hihocoder [Offer收割]编程练习赛1

    比赛链接:http://hihocoder.com/contest/hihointerview3/problem/1 大概有一个月没怎么打算法了.这一场的前一场BC,也打的不是很好.本来Div1的A和 ...

  5. HihoCoder1670 : 比赛日程安排([Offer收割]编程练习赛41)(模拟)

    描述 H国编程联赛中有N只队伍,编号1~N. 他们计划在2018年一共进行M场一(队)对一(队)的比赛. 为了让参赛队员能得到充分的休息,联赛组委会决定:每支队伍连续两场比赛之间至少间隔一天.也就是如 ...

  6. [Offer收割]编程练习赛48

    题目1 : 折线中点 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定平面上N个点P1, P2, ... PN,将他们按顺序连起来,形成一条折线. 请你求出这条折线的 ...

  7. [Offer收割]编程练习赛3 - 题目3 : 智力竞赛

    智力竞赛 Problem's Link ---------------------------------------------------------------------------- Mea ...

  8. [Offer收割]编程练习赛5-1 小Ho的防护盾

    #1357 : 小Ho的防护盾 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho的虚拟城市正在遭受小Hi的攻击,小Hi用来攻击小Ho城市的武器是一艘歼星舰,这艘歼星 ...

  9. hiho #1272 买零食 [Offer收割]编程练习赛2

    #1272 : 买零食 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho很喜欢在课间去小卖部买零食.然而不幸的是,这个学期他又有在一教的课,而一教的小卖部姐姐以冷若冰 ...

随机推荐

  1. iproute2常用命令

    #常用命令 ip link show #显示链路 ip addr show #显示地址(或ifconfig) ip route show #显示路由(route -n) ip neigh show # ...

  2. Robot Framework(六)变量

    变量 2.5.1简介 变量是Robot Framework的一个不可或缺的特性,它们可以在测试数据的大多数地方使用.最常见的是,它们用于测试用例表和关键字表中关键字的参数,但所有设置都允许在其值中使用 ...

  3. 【转载】InputStreamReader和OutputStreamWriter 的区别和用法

    一.InputStreamReader 用于将一个字节流中的字节解码成字符 , 用法如下: @Test public void Test19() throws Exception { InputStr ...

  4. 【转载】intellij idea如何将web项目打成war包

    1.点击[File]->[Project Structure]菜单(或使用Shift+Ctrl+Alt+S快捷键),打开[Project Structure]窗口.如下图: 2.在[Projec ...

  5. 15.5.4 【Task实现细节】一个入口搞定一切

    如果你反编译过异步方法(我非常希望你会这么做),会看到状态机中的 MoveNext() 方法 非常长,变化非常快,像是一个计算有多少 await 表达式的函数.它包含原始方法中的所有逻辑, 和处理所有 ...

  6. js 中this到底指向哪里?

    其实js的this指向很简单.我们记住下面3种情况. this 指向的是浏览器中的window.代码如下: function fn(){ this.name='yangkun'; this.age=2 ...

  7. [luogu1397 NOI2013] 矩阵游戏 (数学)

    传送门 Description 婷婷是个喜欢矩阵的小朋友,有一天她想用电脑生成一个巨大的n行m列的矩阵(你不用担心她如何存储).她生成的这个矩阵满足一个神奇的性质:若用F[i][j]来表示矩阵中第i行 ...

  8. 2018 noip 考前临死挣扎

    基础算法 倍增 贪心 分块 二分 三分 数据结构 线段树 对顶堆 数学 质数 约数 同余 组合 矩阵乘法 图论 二分图判定以及最大匹配 字符串 Tire树 KMP 最小表示法 Hash Manache ...

  9. Spring Cloud-hystrix使用例子(七)

    继承方式 HystrixCommand public class UserSelectAllCommand extends HystrixCommand<List<User>> ...

  10. 0929MySQL JOIN的算法

    http://www.cnblogs.com/starhu/p/6418842.html http://www.cnblogs.com/starhu/p/6418833.html http://www ...