比赛链接:http://hihocoder.com/contest/hihointerview3/problem/1

大概有一个月没怎么打算法了。这一场的前一场BC,也打的不是很好。本来Div1的A和B应该都能AC的,但是A题由于脑子二笔了一下,最后终测T掉了。不过很奇怪,最后分数也没有跌,反而涨了,终于要接近紫名了,下一发不跌的话,应该有紫了。然后说一下这场Hihocoder吧,据说有offer面试名额,然后选了网易游戏和微软,虽然很是想去微软的,但是又二笔了几发,这就这样了。。

A题:九宫(暴力)

http://hihocoder.com/problemset/problem/1268

题目大意就是问原3x3的矩阵能否通过镜像或者旋转得到目标矩阵。

我是写了一个原矩阵和其镜像矩阵,然后分别对这两个矩阵进行旋转来匹配。

当然也可以先搞出所有矩阵,然后进行匹配。

代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <set>
#include <map>
#include <queue>
#include <vector>
#include <string>
#define LL long longusing namespace std;int to1[3][3] = {4, 9, 2,3, 5, 7,8, 1, 6};
int to2[3][3] = {8, 1, 6,3, 5, 7,4, 9, 2};
int a[3][3], ans[3][3];bool judge(int x[3][3])
{for (int i = 0; i < 3; ++i)for (int j = 0; j < 3; ++j)if (a[i][j] != 0 && a[i][j] != x[i][j])return false;return true;
}void turn(int x[3][3], int y[3][3])
{y[0][0] = x[0][2];y[1][0] = x[0][1];y[2][0] = x[0][0];y[2][1] = x[1][0];y[2][2] = x[2][0];y[1][2] = x[2][1];y[0][2] = x[2][2];y[0][1] = x[1][2];y[1][1] = x[1][1];
}void input()
{for (int i = 0; i < 3; ++i)for (int j = 0; j < 3; ++j)scanf("%d", &a[i][j]);
}void work()
{int flag = 0, to[3][3];for (int i = 0; i < 4; ++i){turn(to1, to);if (judge(to)){flag++;for (int x = 0; x < 3; ++x)for (int y = 0; y < 3; ++y)ans[x][y] = to[x][y];}for (int x = 0; x < 3; ++x)for (int y = 0; y < 3; ++y)to1[x][y] = to[x][y];}for (int i = 0; i < 4; ++i){turn(to2, to);if (judge(to)){flag++;for (int x = 0; x < 3; ++x)for (int y = 0; y < 3; ++y)ans[x][y] = to[x][y];}for (int x = 0; x < 3; ++x)for (int y = 0; y < 3; ++y)to2[x][y] = to[x][y];}if (flag == 1){for (int x = 0; x < 3; ++x){for (int y = 0; y < 3; ++y){if (y) printf(" ");printf("%d", ans[x][y]);}printf("\n");}}else printf("Too Many\n");
}int main()
{//freopen("test.in", "r", stdin);
    input();work();return 0;
}

View Code

B题:优化延迟(二分 && 优先队列)

http://hihocoder.com/problemset/problem/1269

这题二分缓冲区大小,然后对于每一种通过优先队列模拟过程得到最值。

不过我一开始就想好了用cin来输入long long型的,结果最后愣是二笔了一发,叫了一发”%d”。

代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <set>
#include <map>
#include <queue>
#include <vector>
#include <string>
#define LL long longusing namespace std;const int maxN = 100005;
int n, p[maxN];
LL Q;LL SP(int k)
{priority_queue<int> q;int now = 0, t = 1, v;LL ans = 0;while (now < n || !q.empty()){while (q.size() < k && now < n) q.push(p[now++]);v = q.top();q.pop();ans += t*v;t++;if (ans > Q) return Q+1;}return ans;
}bool input()
{if (!(cin >> n >> Q)) return false;//if (scanf("%d%d", &n, &Q) == EOF) return false;for (int i = 0; i < n; ++i)scanf("%d", &p[i]);return true;
}void work()
{int lt = 1, rt = n, mid;while (lt+1 < rt){mid = (lt+rt)>>1;if (SP(mid) <= Q) rt = mid;else lt = mid;}if (SP(lt) <= Q) printf("%d\n", lt);else if (SP(rt) <= Q) printf("%d\n", rt);else printf("-1\n");
}int main()
{//freopen("test.in", "r", stdin);while (input())work();return 0;
}

View Code

C题:建造基地(动态规划)

http://hihocoder.com/problemset/problem/1270

题目就是对每一层进行一个01背包,然后我二笔的当成普通的动态规划进行分析,然后发现需要线段树优化,然后果断T掉了,然后发现线段树的过程,只需要一个角标判断就搞定了。。最好发现就是个01背包。。这题做的时间太长了,导致最后一题只剩了个读题时间。

代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <set>
#include <map>
#include <queue>
#include <vector>
#include <string>
#define LL long longusing namespace std;int n, m, k, t;
int a[105], b[105];
LL p[10005];void input()
{scanf("%d%d%d%d", &n, &m, &k, &t);for (int i = 0; i < m; ++i) scanf("%d", &a[i]);for (int i = 0; i < m; ++i) scanf("%d", &b[i]);
}void work()
{LL ans = 0;int f;for (int times = 1; times <= n; ++times){memset(p, -1, sizeof(p));p[0] = 0;for (int i = 0; i < m; ++i){if (b[i] == 0) continue;for (int j = 1; j <= k; ++j){f = max(0, j-b[i]);if (p[j] == -1 || p[j] > p[f]+a[i])p[j] = p[f]+a[i];}}if (p[k] == -1){printf("No Answer\n");return;}ans += p[k];for (int i = 0; i < m; ++i) b[i] /= t;}cout << ans << endl;
}int main()
{//freopen("test.in", "r", stdin);int T;scanf("%d", &T);for (int times = 1; times <= T; ++times){input();work();}return 0;
}

View Code

D题:舰队游戏

http://hihocoder.com/problemset/problem/1271

首先可以得到的是两个数组正序乘正序 大于 正序乘乱序 大于 正序乘逆序。

所以假设在知道每个舰船的装备栏里面装什么样的飞机的情况下。可以确定每一种飞机的各自归属。

于是只需要2^(m*n)暴力每一个装备栏的飞机种类。然后就可以计算题目要求的了。

转载于:https://www.cnblogs.com/andyqsmart/p/5269355.html

ACM学习历程—Hihocoder [Offer收割]编程练习赛1相关推荐

  1. hihocoder [Offer收割]编程练习赛24

    比赛https://hihocoder.com/contest/offers24/problems 应该能拿到个鼠标垫 舒服了 这个oj体验好差,每次都要先因为选错语言CE一发,而且刷新之后还是默认G ...

  2. hihocoder offer收割编程练习赛11 B 物品价值

    思路: 状态压缩 + dp. 实现: 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> ...

  3. hihocoder offer收割编程练习赛12 B 一面砖墙

    思路: 就是求哪个长度出现的次数最多. 实现: 1 #include <iostream> 2 #include <cstdio> 3 #include <algorit ...

  4. hihocoder offer收割编程练习赛8 B 拆字游戏

    思路: 模拟,dfs. 注意题目中的trick,输出一块的时候不要把其他块也输出了. 实现: 1 #include <cstring> 2 #include <iostream> ...

  5. [hihocoder][Offer收割]编程练习赛46

    AEIOU 选出的子串中由AEI构成的子串和由OU构成的子串之间并没有什么关系,分别算出最长的加起来. #pragma comment(linker, "/STACK:102400000,1 ...

  6. hihocoder [Offer收割]编程练习赛14 剑刃风暴

    题目4 : 剑刃风暴 时间限制:20000ms 单点时限:2000ms 内存限制:256MB 描述 主宰尤涅若拥有一招非常厉害的招式--剑刃风暴,"无论是战士还是法师,都害怕尤涅若的武士刀剑 ...

  7. hihocoder [Offer收割]编程练习赛19

    题目1 : 大礼堂地毯 枚举 #include<iostream> #include<cstring> #include<algorithm> #include&l ...

  8. 最简真分数c语言,HihoCoder1655 : 第K小最简真分数([Offer收割]编程练习赛39)(唯一分解+容斥定理+二分)(不错的数学题)...

    描述 给一个整数N,请你求出以N为分母的最简(既约)真分数中第K小的是多少? 输入 两个整数N个K. 对于30%的数据,1 <= N <= 1000000 对于100%的数据,1 < ...

  9. [Offer收割]编程练习赛2 hihocoder 1272 买零食 (DFS 或 dp 水题)

    时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho很喜欢在课间去小卖部买零食.然而不幸的是,这个学期他又有在一教的课,而一教的小卖部姐姐以冷若冰霜著称.第一次去一教小卖 ...

最新文章

  1. 【洛谷 P2464】[SDOI2008]郁闷的小J(线段树)
  2. Spring Boot+Docker微服务分布式服务架构设计和部署案例
  3. mysql starting server 失败_安装MySQL过程中(最后starting server)报错解决方案
  4. 博鳌直击 | 区块链在互联网金融中扮演怎样的角色?
  5. Apache Camel 2.11发布
  6. java httpserver 多个接口_多个Servlet之间数据共享实现方案
  7. 百度统计:网站统计实时访客报告
  8. java 泛型 class t_java 泛型中classT 和T的区别是什么?
  9. SpringBoot 整合 RabbitMQ 实践
  10. 神话系列之一 C# 开发的操作系统和数据库
  11. python3.5安装教程及环境配置_Windows7环境下Python2.7与Python3.5共存安装
  12. 计算机思维在化学上的应用,【科学思维】化隐性为显性思想在化学中的应用
  13. Namenode HA原理详解
  14. 1024程序员节,160元买400元图书专属优惠券,速来
  15. Android知识点-圆角
  16. 这篇文章就是要让你入门java多线程【多线程入门】
  17. 【伍】学好财报是选出好公司的关键
  18. 原子性操作atomic_t
  19. 《阿里巴巴开发规范》读书笔记重点
  20. 绘制cox生存分析结果的森林图

热门文章

  1. 组信箱共享及挂载介绍
  2. graph theory important questions
  3. student consulting system
  4. 剑桥大学工程硕士的安排
  5. 避免资源放在收藏夹里面吃灰的方法(如从typora上直接能导出html并且无缝连接到微信公众号的神奇网站)
  6. 如何在三年内快速成长为一名技术专家
  7. js_调试_01_14 个你可能不知道的 JavaScript 调试技巧
  8. 海南电网全力支持新能源发展
  9. Iptables 入门进阶
  10. tcp/udp高并发和高吐吞性能测试工具