hohahola

#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();
lint n, x, y, z;
cin >> n >> x >> y >> z;
if (z >= y) cout << (n * z / x) << endl;
else {
lint l = , r = n, mid;
lint ans = ;
while (l + < r) {
mid = (l + r) / ;
if ((n - mid) * z >= (x - y) * mid) {
l = mid;
ans = max(ans, mid);
} else r = mid;
}
cout << ans << endl;
}
return ;
}

最大顺子

要使顺子的值最大,m张任意牌肯定全用完了,因为任意牌可以放在有数字的牌的右边

#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[], f[], s[]; int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif
//makedata();
std::ios::sync_with_stdio(), cin.tie();
int n, m, k;
cin >> n >> m >> k;
for (int i = ; i < n; i++) cin >> a[i];
sort(a, a + n);
lint ans = ;
int p = k - m;
for (int i = ; i + p - < n; i++) {
int j = i + p - ;
if (a[j] - a[i] + - p <= m) ans = max(ans, a[i] + k - );
}
cout << ans << endl;
return ;
}

路径包含问题

#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);
} class LCA {
public:
int n;
int ancient[][], depth[], father[], sz[];
vector<vector<int>> * T;
void init(vector<vector<int>> *, int, int);
void dfs(int, int, int);
int query(int, int);
};
void LCA::dfs(int root, int fa, int dep) {
ancient[root][] = fa;
depth[root] = dep;
sz[root] = ;
for (int i = ; i < (*T)[root].size(); i++) {
int u = (*T)[root][i];
if (u == fa) continue;
dfs(u, root, dep + );
sz[root] += sz[u];
}
}
void LCA::init(vector<vector<int>> * G, int root, int nn) {
T = G, n = nn;
dfs(root, -, );
for (int i = ; i < ; i++) ancient[root][i] = -;
for (int i = ; i < ; i++) {
for (int j = ; j <= n; j++) {
if (ancient[j][i - ] == -) ancient[j][i] = -;
else ancient[j][i] = ancient[ancient[j][i - ]][i - ];
}
}
}
int LCA::query(int u, int v) {
if (depth[u] > depth[v]) swap(u, v);
int d = ;
while (depth[u] != depth[v]) {
if ((depth[v] - depth[u]) & ( << d)) v = ancient[v][d];
d++;
}
if (u == v) return u;
for (int i = ; i >= ; i--) {
if (ancient[u][i] != ancient[v][i]) u = ancient[u][i], v = ancient[v][i];
}
return ancient[u][];
} LCA lca;
vector<vector<int>> G(, vector<int>());;
int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif
//makedata();
std::ios::sync_with_stdio(), cin.tie();
int n, m, u, v;
cin >> n >> m;
for (int i = ; i < n; i++) {
cin >> u >> v;
G[u].push_back(v);
}
lca.init(&G, , n);
for (int i = ; i < m; i++) {
cin >> u >> v;
if (lca.depth[u] > lca.depth[v]) swap(u, v);
int w = lca.query(u, v), vv = v;
if (w == u) {
int d = ;
while (lca.depth[u] != lca.depth[vv] - ) {
if ((lca.depth[vv] - - lca.depth[u]) & ( << d)) vv = lca.ancient[vv][d];
d++;
}
cout << (1LL * (n - lca.sz[vv])*lca.sz[v]) << endl;
} else cout << (1LL * lca.sz[u] * lca.sz[v]) << endl;
}
return ;
}

树上的节点cd之间有两种关系,其中一个是另一个的祖先,或两者都不是对方的祖先,判断两者的关系,把路径两端的点的数量相乘

随机排列

枚举左边界

#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 ans[];
int a[], m[][], M[][], LOG2[]; void init(int n) {
for (int i = ; i <= n; i++) LOG2[i] = LOG2[i >> ] + ;
for (int i = ; i <= n; i++) m[i][] = M[i][] = a[i];
for (int j = ; ( << j) <= n; j++) {
for (int i = ; i + ( << j) - <= n; i++) {
m[i][j] = min(m[i][j - ], m[i + ( << (j - ))][j - ]);
M[i][j] = max(M[i][j - ], M[i + ( << (j - ))][j - ]);
}
}
}
int query(int l, int r) {
int k = LOG2[r - l + ];
return max(M[l][k], M[r - ( << k) + ][k]) - min(m[l][k], m[r - ( << k) + ][k]);
} VI R, C; int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif
//makedata();
std::ios::sync_with_stdio(), cin.tie();
int n, t;
cin >> t;
while (t--) {
cin >> n;
for (int i = ; i <= n; i++) cin >> a[i];
memset(ans, , sizeof(ans));
init(n);
R.clear();
for (int i = n; i >= ; i--) {
C = R;
R.clear();
R.push_back(i);
for (int j = ; j < C.size(); j++) {
if (query(i, R[R.size() - ]) != query(i, C[j])) R.push_back(C[j]);
}
for (int j = ; j < R.size() - ; j++) ans[query(i, R[j])] += R[j + ] - R[j];
ans[query(i, R[R.size() - ])] += n - R[R.size() - ] + ;
}
for (int i = ; i < n; i++) {
cout << ans[i] << endl;
ans[i + ] += ans[i];
}
}
return ;
}

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

  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. ACM学习历程—Hihocoder [Offer收割]编程练习赛1

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

  4. hihocoder [Offer收割]编程练习赛14 剑刃风暴

    题目4 : 剑刃风暴 时间限制:20000ms 单点时限:2000ms 内存限制:256MB 描述 主宰尤涅若拥有一招非常厉害的招式——剑刃风暴,“无论是战士还是法师,都害怕尤涅若的武士刀剑技”. 现 ...

  5. hihocoder offer收割编程练习赛8 C 数组分拆

    思路:(引自bfsoyc的回答:http://hihocoder.com/discuss/question/4160) 动态规划.状态dp[i]表示 前i个数的合法的方案数,转移是 dp[i] = s ...

  6. hihocoder [Offer收割]编程练习赛18 C 最美和弦(dp)

    题目链接:http://hihocoder.com/problemset/problem/1532 题解:一道基础的dp,设dp[i][j][k][l]表示处理到第几个数,当前是哪个和弦错了几次初始x ...

  7. hihoCoder [Offer收割]编程练习赛3 D子矩阵求和

    子矩阵求和 http://hihocoder.com/discuss/question/3005 声明一下: n是和x一起的,m是和y一起的 x是横着的,y是纵着的,x往右为正,y往下为正 (非常反常 ...

  8. hihocoder [Offer收割]编程练习赛52 D 部门聚会

    看了题目的讨论才会做的 首先一点,算每条边(u, v)对于n*(n+1)/2种[l, r]组合的贡献 正着算不如反着算 哪些[l, r]的组合没有包含这条边(u, v)呢 这个很好算 只需要统计u这半 ...

  9. hihocoder [Offer收割]编程练习赛14

    A.小Hi和小Ho的礼物 谜之第1题,明明是第1题AC率比C还要低.题目是求在n个不同重量袋子选4袋,2袋给A,2袋给B,使2人获得重量相同,求问方案数. 我也是一脸懵b...o(n2)暴力枚举发现把 ...

随机推荐

  1. [工具]ps

    ps 如果想看一个进程的启动时间,可以用lstart来看 [root@jiangyi02.sqa.zmf /home/ahao.mah] #ps -eo pid,lstart,etime,cmd |g ...

  2. The JVM Architecture Explained

    转自:https://dzone.com/articles/jvm-architecture-explained?oid=18544920 Every Java developer knows tha ...

  3. Scrapy实战:使用IDE工具运行爬虫

    一般我们运行爬虫程序都是使用命令行,比如:scrapy crwal sobook.不过这多少有些不方便,可以使用下面的方法使用IDE的方式运行爬虫 我这边使用的是pycharm软件,在pycharm里 ...

  4. 手机浏览PC版页面出现背景图片显示不全的问题解决方案

    手机浏览PC版页面出现背景图片显示不全 给定宽高的值

  5. hdu2007 平方和与立方和【C++】

    平方和与立方和 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  6. Pillow 模块~Python图像处理

    什么是验证码? 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自 ...

  7. Jzzhu and Numbers

    Jzzhu and Numbers time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  8. CentOS6.5下卸载MySql(yum安装)

    因为我是用yum安装的mysql,所以卸载相对简单 yum -y remove mysql* 再把相关的文件删掉, rm -f /etc/my.cnf.rpmsave  rm -rf /var/lib ...

  9. Clojure:ZeroMQ的入门DEMO

    假设你已经知道什么是ZeroMQ(不知道的话可以看这个:http://zh.wikipedia.org/wiki/%C3%98MQ),以下就给出在Clojure中如何使用ZeroMQ(感谢此文作者:h ...

  10. Skia图片解码模块流程分析

    我在在PPAPI插件中使用Skia画图中说能够在PPAPI插件内使用Skia来画图.这里面会有一个与色彩空间(像素格式)相关的问题.在那篇文章里我们在PPAPI中使用PPB_ImageData创建2D ...