indeed 4.22 第一次网测
1.第一题 没有看
2. 由于数据范围很小,所以每一层需要全排列,寻找最小的花费,然后所有层加起来就是最后的结果。
#include<bits/stdc++.h>
#define pb push_back
typedef long long ll;
using namespace std;
typedef pair<int, int> pii;
const int maxn = 1e3 + ;
int n;
int m;
int a[][][];
int p[]; void solve() {
cin >> n >> m;
ll res = ;
for (int j = ; j < n; j++) {
cin >> a[][j][] >> a[][j][];
}
for (int i = ; i <= m; i++) {
for (int j = ; j < n; j++) {
cin >> a[i][j][] >> a[i][j][];
}
if(i == ) continue;
for (int j = ; j < n; j++)
p[j] = j;
ll mr = INT_MAX;
do {
ll t = ;
for (int j = ; j < n; j++) {
t += abs(a[i][p[j] ][] - a[i - ][j][] ) + abs(a[i][p[j] ][] - a[i - ][j][] );
}
mr = min(t, mr);
} while(next_permutation(p, p + n));
res += mr;
}
cout << res << endl; } int main() {
freopen("test.in", "r", stdin);
//freopen("test.out", "w", stdout);
ios::sync_with_stdio();
cin.tie(); cout.tie();
solve();
return ;
}
3.数据范围也是很小,枚举每一条边,然后存在不存在,进行判断累加。边的个数6 * 5 / 2 = 15. 1 << 15 = 32000. 然后乘上判断连通的复杂度,结果也是很小。
判断连通可以用bfs或者dfs, dsu都是可以的。
#include<bits/stdc++.h>
#define pb push_back
typedef long long ll;
using namespace std;
typedef pair<int, int> pii;
const int maxn = 1e3 + ;
int n, m;
//set<pii> se;
int f[];
int a[][];
int b[][];
void init() {
for (int i = ; i <= n; i++) f[i] = i;
}
int fd(int x) {
if(x == f[x]) return x;
return f[x] = fd(f[x]);
}
bool check() {
int sz = n;
for (int i = ; i <= n; i++) {
for (int j = i + ; j <= n; j++) {
if(a[i][j]) {
int t1 = fd(i);
int t2 = fd(j);
if(t1 != t2) {
sz--;
f[t1] = t2;
}
}
}
}
return sz == ;
}
ll res; void work(int x, int y) {
//cout << x << " " << y << endl;
if(x > n) {
init();
res += check();
return;
}
if(y > n) {
work(x + , x + );
return;
}
work(x, y + );
if(b[x][y]) return;
a[x][y] = a[y][x] = ;
work(x, y + );
a[x][y] = a[y][x] = ;
}
void solve() {
cin >> n >> m;
int x, y;
for (int i = ; i < m; i++) {
cin >> x >> y;
//if(x > y) swap(x, y);
//se.insert({x, y});
b[x][y] = b[y][x] = ;
}
work(, );
cout << res << endl;
} int main() {
freopen("test.in", "r", stdin);
//freopen("test.out", "w", stdout);
ios::sync_with_stdio();
cin.tie(); cout.tie();
solve();
return ;
}
4. 第四题稍微花了一些时间。 首先题目求解满足条件的最小, 那就是比这个大的都是可以满足条件的, 满足二分的性质。
然后给定答案,如何快速的判断是否满足要求, 贪心策略进行。由于 n = 1e4, 这个数其实挺小的, 排序, 贪心 可以的。
#include<bits/stdc++.h>
#define pb push_back
typedef long long ll;
using namespace std;
typedef pair<int, int> pii;
const int maxn = 1e4 + ;
int n, a, b;
ll h[maxn];
ll tmp[maxn];
int tot;
bool check(ll x) {
ll ra, rb;
ra = rb = ;
tot = ;
for (int i = ; i < n; i++) {
if(h[i] >= x) {
ll c = h[i] / x;
if(ra + c > a) {
ll t = h[i] - x * (a - ra);
ra = a;
if(t > ) tmp[tot++] = t;
} else {
ra += h[i] / x;
int t = h[i] % x;
if(t > ) tmp[tot++] = t;
} } else {
tmp[tot++] = h[i];
}
//if(ra > a) return 0;
}
sort(tmp, tmp + tot, greater<ll>());
for (int i = ; i < tot; i++) {
if(ra < a) {
ra++;
} else {
rb += tmp[i];
}
}
return ra + rb <= b;
}
void solve() {
cin >> n >> a >> b;
for (int i = ; i < n; i++) {
cin >> h[i];
}
sort(h, h + n, greater<ll>());
ll left = , right = 1e9 + ;
while(left < right) {
ll mid = (left + right) / ;
//cout << mid << " " << left << " " << right << endl;
if(check(mid)) right = mid;
else left = mid + ; }
if(check(left)) cout << left << endl;
else cout << - << endl;
} int main() {
//freopen("test.in", "r", stdin);
//freopen("test.out", "w", stdout);
ios::sync_with_stdio();
cin.tie(); cout.tie();
solve();
return ;
}
indeed 4.22 第一次网测的更多相关文章
- indeed2017校招在线编程题(网测)三
A. Calculate Sequence 分析:就是斐波那契递推公式,但是初始值是指定的,只用求第10个数,数据范围和复杂度都比较小,直接写. B. 忘了叫啥了. 就是有a-j十个字符组成的字符串, ...
- 2014-CVTE网测部分软件技术测试题及答案
1.叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树满足的条件是(D) A.空或只有一个结点 B.高度等于其结点数 C.该二叉树是完全二叉树 D.所有结点无右孩子 应该是二叉树的每个结点都只有一个 ...
- wap网测一道题目
1. 给定一个字符串s, 1 <= len(s) <= 3000, 定义odd palindrome string为长度为奇数的回文串, 求s中该奇回文串的个数. 比如axbcba , 结 ...
- wap 5.23 网测几道题目
1. n个犯人,m个省份, 如果相邻的2个犯人来自同一省份,则是不安全的,求不安全的个数. 正难则反,用全部的个数减去非法的个数,就是最后的答案. m^n - m * (m - 1) ^ (n - 1 ...
- 5.27 indeed 第三次网测
1. 第一题, 没有看 2. 暴力枚举.每一个部分全排列, 然后求出最大的请求数. #include<bits/stdc++.h> #define pb push_back typedef ...
- indeed 5.13 第二次网测
题目描述,我找不见了,大概写一下想法和代码吧. 1. 没有看 2. 由于数据范围很小,就是简单的枚举,求全排列,然后更新答案. #include<bits/stdc++.h> #defin ...
- elasticsearch系列(二) esrally压测
环境准备 linux centOS(工作环境) python3.4及以上 pip3 JDK8 git1.9及以上 gradle2.13级以上 准备过程中的坑 这些环境准备没什么太大问题,都是wget下 ...
- mysql每秒最多能插入多少条数据 ? 死磕性能压测
前段时间搞优化,最后瓶颈发现都在数据库单点上. 问DBA,给我的写入答案是在1W(机械硬盘)左右. 联想起前几天infoQ上一篇文章说他们最好的硬件写入速度在2W后也无法提高(SSD硬盘) 但这东西感 ...
- 使用Holer外网SSH访问内网(局域网)Linux系统
1. Holer工具简介 Holer exposes local servers behind NATs and firewalls to the public internet over secur ...
随机推荐
- u-boot常用命令
查看ip地址等信息 print tftp相关 设置ip地址 set ipaddr 192.168.1.5 设置tftp所在电脑ip set serverip 192.168.1.8 最后必须输入sav ...
- office 2016最新安装及激活教程(KMS)【亲测有效】!!
前言 博主的一个朋友,咳咳--你们懂得,想装office,于是我就上网找了一下激活的方法,亲测有效,而且也没有什么广告病毒之类的,还比较方便,所以传上来方便大家.好了,进入正题: 安装office 首 ...
- Leetcode 30.与所有单词相关联的子串
与所有单词相关联的字串 给定一个字符串 s 和一些长度相同的单词 words.在 s 中找出可以恰好串联 words 中所有单词的子串的起始位置. 注意子串要与 words 中的单词完全匹配,中间不能 ...
- [luoguP1993] 小 K 的农场(差分约束 + spfa 判断负环)
传送门 差分约束系统..找负环用spfa就行 ——代码 #include <cstdio> #include <cstring> #include <iostream&g ...
- L - 贪心 基础
Once upon a time, in the Kingdom of Loowater, a minor nuisance turned into a major problem. The shor ...
- J - Simpsons’ Hidden Talents
Homer: Marge, I just figured out a way to discover some of the talents we weren’t aware we had. Marg ...
- [bzoj1926][Sdoi2010]粟粟的书架_二分_主席树
粟粟的书架 bzoj-1926 Sdoi-2010 题目大意:题目链接 注释:略 想法:分成两个题 前面的我们可以二分,直接二分出来检验即可. 对于R=1的,相当一个数列,我们在上面建立主席树. 然后 ...
- Spring MVC-视图解析器(View Resolverr)-多重解析器(Multiple Resolver)示例(转载实践)
以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_multiple_resolver_mapping.htm 说明:示例基于Spri ...
- ZooKeeper之初识
它是什么 俗称动物管理员,它使用java开发,开源,接口简单,高效,稳定的分布式系统,为其它分布式系统提供协调服务 为什么会存在? 开发分布式系统跟单机上做开发完全不同,碰到的问题完全不同,开发分布式 ...
- MyEclipse10及插件安装教程(附安装包和破解文件)
MyEclipse10安装包+破解文件:MyEclipse10安装包.MyEclipse10破解文件MyEclipse10安装包地址:http://pan.baidu.com/s/1pJrCLB1My ...