[hihocoder][Offer收割]编程练习赛60
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的更多相关文章
- hihocoder [Offer收割]编程练习赛4
描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元.并且如果消费总计满X元,还能享受优惠.小Ho是一个不薅羊毛不舒服斯基的人,他希望 ...
- hihocoder [Offer收割]编程练习赛61
[Offer收割]编程练习赛61 A:最小排列 给定一个长度为m的序列b[1..m],再给定一个n,求一个字典序最小的1~n的排列A,使得b是A的子序列. 贪心即可,b是A的子序列,把不在b中的元素, ...
- ACM学习历程—Hihocoder [Offer收割]编程练习赛1
比赛链接:http://hihocoder.com/contest/hihointerview3/problem/1 大概有一个月没怎么打算法了.这一场的前一场BC,也打的不是很好.本来Div1的A和 ...
- hihocoder [Offer收割]编程练习赛14 剑刃风暴
题目4 : 剑刃风暴 时间限制:20000ms 单点时限:2000ms 内存限制:256MB 描述 主宰尤涅若拥有一招非常厉害的招式——剑刃风暴,“无论是战士还是法师,都害怕尤涅若的武士刀剑技”. 现 ...
- hihocoder offer收割编程练习赛8 C 数组分拆
思路:(引自bfsoyc的回答:http://hihocoder.com/discuss/question/4160) 动态规划.状态dp[i]表示 前i个数的合法的方案数,转移是 dp[i] = s ...
- hihocoder [Offer收割]编程练习赛18 C 最美和弦(dp)
题目链接:http://hihocoder.com/problemset/problem/1532 题解:一道基础的dp,设dp[i][j][k][l]表示处理到第几个数,当前是哪个和弦错了几次初始x ...
- hihoCoder [Offer收割]编程练习赛3 D子矩阵求和
子矩阵求和 http://hihocoder.com/discuss/question/3005 声明一下: n是和x一起的,m是和y一起的 x是横着的,y是纵着的,x往右为正,y往下为正 (非常反常 ...
- hihocoder [Offer收割]编程练习赛52 D 部门聚会
看了题目的讨论才会做的 首先一点,算每条边(u, v)对于n*(n+1)/2种[l, r]组合的贡献 正着算不如反着算 哪些[l, r]的组合没有包含这条边(u, v)呢 这个很好算 只需要统计u这半 ...
- hihocoder [Offer收割]编程练习赛14
A.小Hi和小Ho的礼物 谜之第1题,明明是第1题AC率比C还要低.题目是求在n个不同重量袋子选4袋,2袋给A,2袋给B,使2人获得重量相同,求问方案数. 我也是一脸懵b...o(n2)暴力枚举发现把 ...
随机推荐
- Python----递归------Eight Queens 八皇后问题
递归思想是算法编程中的重要思想. 作为初学者,对递归编程表示很蒙逼,每次遇到需要递归的问题,心里就有一万头草泥马飞过~~~~~~(此处略去一万头草泥马) 在B站看数据结构与算法的视频时,视频中给了两个 ...
- PAT 1091. Acute Stroke (bfs)
One important factor to identify acute stroke (急性脑卒中) is the volume of the stroke core. Given the re ...
- 4 pandas模块,Series类
对gtx图像进行操作,使用numpy知识 如果让gtx这张图片在竖直方向上进行颠倒. 如果让gtx这张图片左右颠倒呢? 如果水平和竖直方向都要颠倒呢? 如果需要将gtx的颜色改变一下呢 ...
- Bitvise ssh client+ chrome +SwitchyOmega *** (xjl456852原创)
首先这个比ss还要简单,ss还需要在vps上搭建服务器.这个不需要. 但是无论是ss 还是 bitvise 都需要有一个自己的vps才行. 首先打开Bitvise ssh client程序: ...
- 【Codeforces 1114A】Got Any Grapes?
[链接] 我是链接,点我呀:) [题意] 水题 [题解] 哪个比较挑剔优先给他选>_< [代码] import java.io.*; import java.util.*; public ...
- 【郑轻邀请赛 G】密室逃脱
[题目链接]:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=2133 [题意] [题解] 考虑每一个二进制数的最高位->第i位; 肯定是1(这 ...
- 学习笔记——TCP“三次握手”和“四次挥手”,简单介绍
TCP/IP协议中,TCP协议提供可靠的连接服务,采用“三次握手”建立一个连接. (1)第一次握手:客户端发送SYN包(SYN=j)到服务器,并进入SYN_SEND状态,等待服务器确认. (2)第二次 ...
- Linux进程线程学习笔记:运行新程序
Linux进程线程学习笔记:运行新程序 周银辉 在上一篇中我们说到,当启动一个新进程以后,新进程会复制父进程的大部份上下 ...
- Spring MVC-表单(Form)标签-文件上传(File Upload)示例(转载实践)
以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_upload.htm 说明:示例基于Spring MVC 4.1.6. 以下示例显 ...
- 相克军_Oracle体系_随堂笔记 PPT
http://www.cnblogs.com/jyzhao/category/581259.html http://download.csdn.net/detail/yzj149286454/8960 ...