HZNU 2019 Summer training 6 -CodeForces - 622
A - Infinite Sequence CodeForces - 622A
题目大意:给你一个这样的数列1,1,2,1,2,3,1,2,3,4,1,2,3,4,5.。。。就是从1~n排列(n++).最后问你第n个位置是什么数字。
思路:如果你花点时间列数列的话会发现,1~n的最后一位对应的位置是1~n的和,那我们就大胆使用二分进行搜索这位数。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<set>
#include<string>
#include<vector>
#include<ctime>
#include<stack>
#include<fstream>
#include<iomanip>
#include<deque>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define mm(a,b) memset(a,b,sizeof(a))
#define maxn 300
#define len 150000000+5
#define inf 0x3f3f3f3f
int gcd(int a, int b)
{
return a % b == ? b : gcd(b, a%b);
}
int main()
{
ll n;
scanf("%lld", &n);
ll l = , r = 1e8, mid;
while (l <= r)
{
mid = (l + r) / ;
if ((mid + )*mid / >= n && (mid - )*mid / < n)
break;
else if ((mid + )*mid / < n)
l = mid + ;
else r = mid - ;
}
ll maxx = (mid + )*mid / ;
ll ans = mid - (maxx - n);
printf("%lld\n", ans);
return ;
}
B - Optimal Number Permutation CodeForces - 622D
题意:给你一个数组,长度为2*n,出现的数字是1~n(每个数字出现两遍)。两个相同数字之间定义了距离di=xi-yi(xi>yi),最后问如何构造这个数组的序列,使得求和.值最小。
思路:看到这样的题先不要着急,想列一下式子,我们就可以发现,你可以构造出一个s=0的数列。
例如:
n=1 1
n=2 1 1 2 2
n=3 1 3 1 2 2 3
n=4 1 2 4 2 1 3 3 4
数字从1~n-1开始排序,n因为怎么样都是0,可以插空排。然后如果这个数字是奇数,我们从左边开始放,偶数从右边开始放。排放就按使得该数(di+i-n)=0的位置排(我也不知道为什么不会覆盖)。然后最后放n。
有个坑点(我自己的),总是数组开小,给你n<=500000,你要开两倍啊。TAT
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<set>
#include<string>
#include<vector>
#include<ctime>
#include<stack>
#include<fstream>
#include<iomanip>
#include<deque>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define mm(a,b) memset(a,b,sizeof(a))
#define maxn 2*500000+50
#define len 150000000+5
#define inf 0x3f3f3f3f
int gcd(int a, int b)
{
return a % b == ? b : gcd(b, a%b);
}
int ans[maxn];
int main()
{
int n;
memset(ans, , sizeof(ans));
scanf("%d", &n);
int left = , right = n + ;
for (int i = ; i <= n - ; i++)
{
if (i % == )
{
ans[left] = i;
ans[left + n - i] = i;
left++;
}
else
{
ans[right] = i;
ans[right + n - i] = i;
right++;
}
}
for (int i = ; i <= * n; i++)
{
if (!ans[i]) ans[i] = n;
}
for (int i = ; i <= * n; i++)
{
printf("%d ", ans[i]);
}
printf("\n");
return ;
}
C - Not Equal on a Segment CodeForces - 622C
题意:给你n个数字和m个询问。询问格式:l,r,x,输出在l~r之间a[i]<>x的下标i。
思路:在读入数组的时候就需要将和这个数不相等的位置找到啦,往后面找。因为要么区间的第一个数字和x相等,要么不相等。不相等直接输出当前的位置i,相等就需要往后找啦。
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<vector>
#include<queue>
#include<functional>
using namespace std;
const int maxn = 2e5 + ;
int a[maxn], f[maxn];
int main()
{
int n, m;
scanf("%d %d", &n, &m);
for (int i = ; i <= n; i++)
scanf("%d", &a[i]);
for (int i = ; i <= n; i++)
{
if (a[i] != a[i + ])
f[i] = i + ;
else
{
int pos = i;
for (; a[i] == a[i + ];) i++; for (int j = pos; j <= i; j++)
f[j] = i + ;
}
} while (m--)
{
int l, r, x;
scanf("%d %d %d", &l, &r, &x);
int flag = ;
for (int i = l; i <= r; i++)
{
if (a[i] == x)
{
if (f[i] > r || f[i] == ) break;
printf("%d\n", f[i]);
flag = ;
break;
}
else
{
printf("%d\n", i);
flag = ;
break;
}
}
if (!flag) printf("-1\n");
}
return ;
}
D - Ants in Leaves CodeForces - 622E
题意:给你一棵树,一只小蚂蚁在一个叶节点上,他们想回到根节点1,他们可以往自己的父节点爬行,爬行一段花费1个时间点。有个要求是,除了root可以容纳一个ant以外,其它节点只能容纳一只ant,所以如果一个ant在父节点。他的兄弟节点就需要等待一定的时间。问:所有蚂蚁回到叶节点的最小时间是多少?
思路:实验室的巨巨说,可以逆着想,可以假设所有蚂蚁都在根节点上,那么就是所有蚂蚁到叶节点的最短时间。这题就是需要建树,然后dfs一下,给每个子节点深度赋值。
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<algorithm>
#include<vector>
#include<queue>
#include<functional>
using namespace std;
const int maxn = 5e5 + ; int head[maxn * ], num, cnt, dp[maxn], d[maxn];
struct node
{
int to, next, w;
}e[maxn*]; void init()
{
num = ;
memset(head, -, sizeof(head));
} void add(int u, int v)
{
e[num].to = v;
e[num].next = head[u];
head[u] = num++;
} void dfs(int u, int fa, int depth)
{
int flag = ;
for (int i = head[u]; ~i; i = e[i].next)
{
int v = e[i].to;
if (v == fa)
continue;
flag = ;
dfs(v, u, depth + );
}
if (!flag)
d[cnt++] = depth;
} int main()
{
init();
int n, u, v, ans = ;
scanf("%d", &n);
for (int i = ; i < n - ; i++)
{
scanf("%d %d", &u, &v);
add(u, v);
add(v, u);
}
for (int i = head[]; ~i; i = e[i].next)
{
int v = e[i].to;
cnt = ;
dfs(v, , );
sort(d, d + cnt);
for (int j = ; j < cnt; j++)
d[j] = max(d[j - ] + , d[j]); ans = max(ans, d[cnt - ]);
}
printf("%d\n", ans);
return ;
}
E - The Sum of the k-th Powers CodeForces - 622F
题意: % 109 + 7
思路:还不会。
HZNU 2019 Summer training 6 -CodeForces - 622的更多相关文章
- 2019 Multi-University Training Contest 8
2019 Multi-University Training Contest 8 C. Acesrc and Good Numbers 题意 \(f(d,n)\) 表示 1 到 n 中,d 出现的次数 ...
- 2019 Multi-University Training Contest 7
2019 Multi-University Training Contest 7 A. A + B = C 题意 给出 \(a,b,c\) 解方程 \(a10^x+b10^y=c10^z\). tri ...
- 2019 Multi-University Training Contest 1
2019 Multi-University Training Contest 1 A. Blank upsolved by F0_0H 题意 给序列染色,使得 \([l_i,r_i]\) 区间内恰出现 ...
- 2019 Multi-University Training Contest 2
2019 Multi-University Training Contest 2 A. Another Chess Problem B. Beauty Of Unimodal Sequence 题意 ...
- 2019 Multi-University Training Contest 5
2019 Multi-University Training Contest 5 A. fraction upsolved 题意 输入 \(x,p\),输出最小的 \(b\) 使得 \(bx\%p&l ...
- HDU校赛 | 2019 Multi-University Training Contest 6
2019 Multi-University Training Contest 6 http://acm.hdu.edu.cn/contests/contest_show.php?cid=853 100 ...
- HDU校赛 | 2019 Multi-University Training Contest 5
2019 Multi-University Training Contest 5 http://acm.hdu.edu.cn/contests/contest_show.php?cid=852 100 ...
- HDU校赛 | 2019 Multi-University Training Contest 4
2019 Multi-University Training Contest 4 http://acm.hdu.edu.cn/contests/contest_show.php?cid=851 100 ...
- HDU校赛 | 2019 Multi-University Training Contest 3
2019 Multi-University Training Contest 3 http://acm.hdu.edu.cn/contests/contest_show.php?cid=850 100 ...
随机推荐
- 【JDK】JDK源码分析-LinkedList
概述 相较于 ArrayList,LinkedList 在平时使用少一些. LinkedList 内部是一个双向链表,并且实现了 List 接口和 Deque 接口,因此它也具有 List 的操作以及 ...
- poj 3253 Fence Repair(优先队列+huffman树)
一个很长的英文背景,其他不说了,就是告诉你锯一个长度为多少的木板就要花多少的零钱,把一块足够长(不是无限长)的木板锯成n段,每段长度都告诉你了,让你求最小花费. 明显的huffman树,优先队列是个很 ...
- 学习vue感触
大学还没毕业,想着先找工作,感觉计算机专业在老家做没有太大的发展,于是就在大学所在城市找了份工作.来到公司的第一天,带我的师傅让我学习vue.之前完全没有接触过框架,而且专业知识比较薄弱,前几天一直处 ...
- 10分钟了解一致性hash算法
应用场景 当我们的数据表超过500万条或更多时,我们就会考虑到采用分库分表:当我们的系统使用了一台缓存服务器还是不能满足的时候,我们会使用多台缓存服务器,那我们如何去访问背后的库表或缓存服务器呢,我们 ...
- vagrant 创建虚拟机时遇到问题
问题1 : ceph-node3: Warning: Authentication failure. Retrying.. 问题分析: ssh 认证失败,在向虚拟机拷贝内容时权限不足. 解决办法: ...
- sqoop 密码别名模式 --password-alias
sqoop要使用别名模式隐藏密码 1.首先使用命令创建别名 hadoop credential create xiaopengfei -provider jceks://hdfs/user/pass ...
- Chrome 开发工具之 Memory
开发过程中难免会遇到内存问题,emmm... 本文主要记录一下Chrome排查内存问题的面板,官网也有,但有些说明和例子跟不上新的版本了,也不够详细... !!! 多图预警!!! 简单的内存 ...
- Java.基础 -------- 一个Java源文件中可以有很多类,但只能有一个类是public的
一个Java源文件中可以有很多类,但只能有一个类是public的 Java程序是从一个public类main函数开始执行的,只能有一个public是为了给类装载器提供方便,一个publi ...
- 还在为垂直居中苦恼?CSS 布局利器 flexbox 轻轻松松帮你搞定
传统的 CSS 布局方式是基于盒模型(它是根据盒子与父盒子以及兄弟盒子的关系确定大小和位置的算法),实现时依赖于 block, inline, table, position, float 这些属性, ...
- Compatibility模式安装windows7后改为AHCI模式无法启动Windows7的解决办法
在用Compatibility模式安装Windows 7后,再在BIOS中去开启SATA硬盘的AHCI功能的话,就会出现无法启动的情况.只有改回Compatibility模式后,系统才恢复正常.经过试 ...