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 ...
随机推荐
- python多线程与多进程及其区别
个人一直觉得对学习任何知识而言,概念是相当重要的.掌握了概念和原理,细节可以留给实践去推敲.掌握的关键在于理解,通过具体的实例和实际操作来感性的体会概念和原理可以起到很好的效果.本文通过一些具体的例子 ...
- 关于asp.net调用gemalto超级狗api的具体实现
鉴于网上关于超级狗的具体操作并不详细,我把我所知道的写下来,希望能给有需求的网友做个参考.软件外壳保护我就不说了,没有什么难度,供应商也会提供文档,一步一步操作即可.我要说的是用于保护发给客户的程序, ...
- [Inno Setup]写入注册表时32位系统和64位系统的路由
昨天下午组内一位同事跟说,他想在Inno Setup的安装包中写入一个注册表.目标位置是HKLM:\Software\下面创建自己的注册表项.然后说尝试了好几次都不行, 但是往HKCU下面写入却是OK ...
- 使用抽象工厂反射获取不到Dal层对象,未能加载文件或程序集......
Put aside the fog and see the essence 解决问题之前,要明白问题为什么会出现 我相信能点开这篇帖子的人,都是具有探索精神的人,因为,只有心存疑问才会搜索 如果只想单 ...
- Zookeeper开源客户端Curator的使用
开源zk客户端-Curator 创建会话: RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,3); CuratorFramewor ...
- HTML/CSS:导航栏水平和垂直
1.垂直导航栏 导航栏 = 链接列表导航栏基本上是一个链接列表,因此使用 <ul> 和 <li> 元素是非常合适的.如需构建垂直导航栏,我们只需要定义 <a> 元素 ...
- 【Kubernetes 系列一】Kubernetes 概述
以下内容还可以通过 Google Slide 查看:https://docs.google.com/presentation/d/1eYP4bkVBojI_e6PqdpxIf0hvWO-JwAf-fy ...
- sleep(),yield(),join(),wait()
sleep(),yield(),join(),wait() sleep() sleep是Thread类的静态方法,在指定的时间内让当前线程暂停执行,但不会释放锁标志 也就是使线程进入阻塞状态 wait ...
- 【win】【qt5安装】【qt5.5.1安装及第一个示例make错误】
[前言] 昨天按照需求将qt程序从linux系统移植到win上使用(其实有点缪论了,本人linux用的中标麒麟系统对于发布发布系统版本麒麟(注:以下用麒麟代替中标麒麟,什么银河麒麟,优麒麟的,我现在只 ...
- c# 多进程写信息到前台控件
private void DispMsg(string strMsg, bool clearlb = false) { if (this.lberror.InvokeRequired == false ...