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的更多相关文章

  1. 2019 Multi-University Training Contest 8

    2019 Multi-University Training Contest 8 C. Acesrc and Good Numbers 题意 \(f(d,n)\) 表示 1 到 n 中,d 出现的次数 ...

  2. 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 ...

  3. 2019 Multi-University Training Contest 1

    2019 Multi-University Training Contest 1 A. Blank upsolved by F0_0H 题意 给序列染色,使得 \([l_i,r_i]\) 区间内恰出现 ...

  4. 2019 Multi-University Training Contest 2

    2019 Multi-University Training Contest 2 A. Another Chess Problem B. Beauty Of Unimodal Sequence 题意 ...

  5. 2019 Multi-University Training Contest 5

    2019 Multi-University Training Contest 5 A. fraction upsolved 题意 输入 \(x,p\),输出最小的 \(b\) 使得 \(bx\%p&l ...

  6. 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 ...

  7. 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 ...

  8. 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 ...

  9. 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 ...

随机推荐

  1. MySql性能优化读书比较<一> 数据类型

    一,选择优化的数据类型 1.更小的通常更好. 更小的数据类型通常占用更少的磁盘,内存和cpu缓存,通常更快. 2.简单就好 简单的数据类型操作,通常需要更少的CPU周期. 3.尽量避免NULL值 列可 ...

  2. MOCTF-Crypt-writeup

    MOctf Crypt Writeup记录 都不难,就随便记录记录下. MOCTF平台地址:http://www.moctf.com 0x01 数据库密码 hint:20岁的小刚,自幼热爱信息安全,一 ...

  3. OLE--SWT高级控件

    OLE和ActiveX控件的支持    OLE(Object Link Embeded)是指在程序之间链接和嵌入对象数据.通过OLE技术可以在一个应用程序中执行其他的应用程序.    而ActiveX ...

  4. Python基础总结之认识lambda函数、map函数、filter() 函数。第十二天开始(新手可相互督促)

    今天周日,白天在学习,晚上更新一些笔记,希望对大家能更好的理解.学习python~ lambda函数,也就是大家说的匿名函数.它没有具体的名称,也可以叫做一句话函数,我觉得也不过分,大家看下代码,来体 ...

  5. LASSO原作者的论文,来读读看

    Regression Shrinkage and Selection via the lasso 众所周知,Robert Tibshirani是统计领域的大佬,这篇文章在1996年提出了LASSO,之 ...

  6. 洛谷P2763题解

    吐槽一下:蜜汁UKE是什么玩意?! 题目分析: 观察题面,对于给定的组卷要求,计算满足要求的组卷方案,可以发现这是一道明显的有条件的二分图匹配问题,于是考虑建模. 建一个超级源点,一个超级汇点:源点与 ...

  7. Jquery 实现添加删除,checkbok 的全选,反全选,但是批量删除没有实现

    <!DOCTYPE html><html> <head>  <meta charset="utf-8" />  <title& ...

  8. STM32实现Airplay音乐播放器

    AirPlay是苹果公司推出的一套无线音乐解决方案,我们手里的iPhone.iPad甚至是Apple Watch等设备还有电脑上的iTunes都支持AirPlay,但是支持AirPlay功能的音响设备 ...

  9. Go中的函数和闭包

    函数参数和返回值的写法 如果有多个参数是同一个类型,可以简略写: func testReturnFunc(v1,v2 int)(int,int) { x1 := 2 * v1 x2 := 3 * v2 ...

  10. HomeKit智能球泡

    产品名称: 智能LED灯泡调光调色 接入苹果HomeKit家庭(无需网关).天猫精灵.小爱.小度.Google.ALEXA 产品价格:9.9 本产品是针对HomeKit的产品,没有iphone手机,配 ...