比赛链接:http://hihocoder.com/contest/hihointerview26

A.排序后枚举两个点,确定一个矩形后二分剩下两个点。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3
 4 typedef long long LL;
 5 const int maxn = 1010;
 6 typedef struct Point {
 7     int x, y;
 8     Point() {}
 9     Point(int xx, int yy) : x(xx), y(yy) {}
10 }Point;
11 int n;
12 LL ans;
13 Point p[maxn];
14
15 bool cmp(Point a, Point b) {
16     if(a.x == b.x) return a.y < b.y;
17     return a.x < b.x;
18 }
19
20 bool bs(int x, int y) {
21     int ll = 0, rr = n, mm;
22     while(ll <= rr) {
23         mm = (ll + rr) >> 1;
24         if(p[mm].x == x && p[mm].y == y) return 1;
25         else if(cmp(p[mm], Point(x, y))) ll = mm + 1;
26         else rr = mm - 1;
27
28     }
29     return 0;
30 }
31
32 int main() {
33     // freopen("in", "r", stdin);
34     int x3, y3, x4, y4;
35     while(~scanf("%d", &n) && n) {
36         ans = 1000000LL * 1001000LL;
37         for(int i = 0; i < n; i++) {
38             scanf("%d%d", &p[i].x, &p[i].y);
39         }
40         sort(p, p+n, cmp);
41         for(int i = 0; i < n; i++) {
42             for(int j = i + 1; j < n; j++) {
43                 x3 = p[i].x; y3 = p[j].y;
44                 x4 = p[j].x; y4 = p[i].y;
45                 if(bs(x3, y3) && bs(x4, y4)) {
46                     int a = x3 - x4;
47                     int b = y3 - y4;
48                     if((LL)a * b == 0) continue;
49                     ans = min(ans, abs((LL)a*b));
50                 }
51             }
52         }
53         printf("%lld\n", ans == 1000000LL * 1001000LL ? -1 : ans);
54     }
55     return 0;
56 }

B.按题要求爆搜

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3
 4 const int maxn = 10;
 5 int n;
 6 set<string> ret;
 7 set<string>::iterator it;
 8 int num[maxn];
 9 set<int> pos;
10
11 int main() {
12     // freopen("in", "r", stdin);
13     // freopen("out", "w", stdout);
14     for(int i = 1; i < maxn; i++) num[i] = i;
15     while(~scanf("%d", &n)) {
16         ret.clear();
17         do {
18             int nn = (1 << (n));
19             for(int i = 0; i < nn; i++) {
20                 pos.clear();
21                 int tmp = i;
22                 int cnt = 0;
23                 while(tmp) {
24                     if(tmp & 1) pos.insert(cnt+1);
25                     tmp >>= 1; cnt++;
26                 }
27                 string t = "";
28                 bool ex = 0;
29                 t += (num[1] + '0');
30                 int pre = num[1];
31                 for(int i = 2; i <= n; i++) {
32                     if(ex) break;
33                     if(pos.find(i) != pos.end()) {
34                         t += '-';
35                         pre = -1;
36                     }
37                     if(pre > num[i]) {
38                         ex = 1;
39                         break;
40                     }
41                     t += (num[i] + '0');
42                     pre = num[i];
43                 }
44                 if(!ex) ret.insert(t);
45             }
46             // for(int i = 1; i <= n; i++) printf("%d", num[i]);
47             // printf("\n");
48         }while(next_permutation(num+1, num+n+1));
49         // printf("%d\n", ret.size());
50         for(it = ret.begin(); it != ret.end(); it++) {
51             cout << *it << endl;
52         }
53     }
54     return 0;
55 }

C.找到规律后斯特灵数胡搞(好像没必要?)

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3
 4 typedef long long LL;
 5 const int maxn = 1010;
 6 const LL mod = 1000000007LL;
 7 LL f[maxn], a[maxn];
 8 LL S[maxn][maxn];
 9 int n;
10
11 LL exgcd(LL a, LL b, LL &x, LL &y) {
12     if(b == 0) {
13         x = 1;
14         y = 0;
15         return a;
16     }
17     else {
18         LL ret = exgcd(b, a%b, x, y);
19         LL tmp = x;
20         x = y;
21         y = tmp - a / b * y;
22         return ret;
23     }
24 }
25
26 LL inv(LL a) {
27     LL x, y;
28     exgcd(a, mod, x, y);
29     return (x % mod + mod) % mod;
30 }
31
32 LL C(LL n, LL m) {
33     return f[n] * inv(f[m]) % mod * inv(f[n-m]) % mod;
34 }
35
36 LL mul(LL x, LL n) {
37     LL ret = 1;
38     while(n) {
39         if(n & 1) ret = ret * x % mod;
40         n >>= 1;
41         x = x * x % mod;
42     }
43     return ret;
44 }
45
46 int main() {
47     // freopen("in", "r", stdin);
48     // freopen("out", "w", stdout);
49     memset(S, 0, sizeof(S));
50     S[0][0] = 1;
51     for(int p = 1; p < maxn; p++) {
52         for(int k = 0; k < maxn; k++) {
53             S[p][k] = (LL)k * S[p-1][k] % mod + S[p-1][k-1] % mod;
54         }
55     }
56     f[0] = 1;
57     for(int i = 1; i < maxn; i++) {
58         f[i] = f[i-1] * (LL)i % mod;
59     }
60     memset(a, 0, sizeof(a));
61     a[0] = 1; a[1] = 1;
62     for(int i = 2; i <= 1000; i++) {
63         for(int k = 1; k <= i; k++) {
64             a[i] = (a[i] + f[k] * S[i][k] % mod) % mod;
65         }
66     }
67     while(~scanf("%d", &n)) {
68         printf("%lld\n", a[n]);
69     }
70     return 0;
71 }

转载于:https://www.cnblogs.com/kirai/p/6160137.html

hihoCoder太阁最新面经算法竞赛17相关推荐

  1. hihoCoder太阁最新面经算法竞赛18

    比赛链接:http://hihocoder.com/contest/hihointerview27/problems A.Big Plus 模拟水 1 #include <bits/stdc++ ...

  2. 光刷题不参加这些算法竞赛?太亏了!

    前言 大家好,我是bigsai.这篇文章给大家介绍算法竞赛,如果有帮助还请一键三连支持一下! 最近有些学妹问我咱们计算机专业的有哪些比赛可以参加呢?我眉头一皱,想了想咱们计算机专业竞赛好像确实蛮多的, ...

  3. 《算法竞赛中的初等数论》(五)正文 0x50筛法(ACM / OI / MO)(十五万字符数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 写在最前面:本文部分内容来自网上各大博客或是各类图书,由我个人整理,增加些许见解,仅做学习交流使用,无 ...

  4. c语言二分法查找一个数_算法竞赛小专题系列(1):二分法、三分法

    本系列是这本算法教材的扩展资料:<算法竞赛入门到进阶>. 罗勇军.郭卫斌. 清华大学出版社 二分法和三分法是算法竞赛中常见的算法思路,本文介绍了它们的理论背景.模板代码.典型题目. 1. ...

  5. 二分法、三分法 --算法竞赛专题解析(1)

    本系列文章将于2021年整理出版,书名<算法竞赛专题解析>. 前驱教材:<算法竞赛入门到进阶> 清华大学出版社 2019.8 网购:京东 当当      作者签名书 如有建议, ...

  6. 【更新完毕】《算法竞赛中的初等数论》(ACM / OI / MO)前言、后记、目录索引(十五万字符的数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 <算法竞赛中的初等数论>的全部内容的 Portable Document Format 版 ...

  7. UVA-1598 交易所 题解答案代码 算法竞赛入门经典第二版

    GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 AC代码 有意思的一个题目.书上说这是一个不错的优先队列练习题,但实际上它其实是一个 ...

  8. 推荐算法竞赛TOP方案合集

    作 者:九羽 公众号:炼丹笔记 推荐算法竞赛相关 会议赛 (一)2020 ACM Twitter RecSys Challenge 问题背景: Twitter上呈现的是正在发生的事情,也是人们现在谈论 ...

  9. 《算法竞赛中的初等数论》(二)正文 0x20同余(ACM / OI / MO)(十五万字符数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 写在最前面:本文部分内容来自网上各大博客或是各类图书,由我个人整理,增加些许见解,仅做学习交流使用,无 ...

  10. 如何学习机器学习、看待算法竞赛?粉丝精选留言

    在前几日的赠书活动中,看到大家的积极留言,非常用心,可以看出对机器学习的热爱.经授权,CV君特意将一些52CV粉丝对学习机器学习.参与算法竞赛的看法.理解与经验放出来,与大家分享,值得收藏细品,希望他 ...

最新文章

  1. linux强制删除文件夹命令 rm -rf
  2. Zookeeper的安装与配置
  3. centos 7下独立的python 2.7环境安装
  4. 当网页太多时,用锚点 以及超链接的使用
  5. HDU - 6153 A Secret(KMP的next数组性质/扩展KMP)
  6. Shallow and retained sizes
  7. 练习:写一个脚本,完成以下任务
  8. 每日一测5(关于继承)
  9. silverlight(二)样式
  10. python函数大全pdf_python内置函数大全.pdf
  11. java车牌号识别EasyPR_EasyPR
  12. 上海工程技术大学c语言商店存货管理系统,商店存货管理系统.docx
  13. C++ 偏微分数值计算库_「首席架构师推荐」数值分析软件精选
  14. VCF虚拟融合架构--企业IT基础架构建设新趋势-李飞 秦贵松 (VCF 虚拟融合架构 )
  15. linux拷贝文件命令
  16. [AE 表达式]路径跟随动画
  17. 【荣耀内推】2023届荣耀校招开启啦
  18. 地级市面板数据(2000-2019)四:失业+进出口+工资+规上企业+房地产等(stata版)
  19. 美国弗吉尼亚大学计算机科学,弗吉尼亚大学计算机科学系学位设置
  20. 再见2021,你好2022

热门文章

  1. visual studio怎么编译python_我的计算机上的Python使用哪个版本的Visual Studio进行编译?...
  2. php做一个微信退款,php实现微信支付之退款功能
  3. eclipse设置utf8编码_技术分享 | MySQL 8.0:字符集从 utf8 转换成 utf8mb4
  4. Python简化代码的操作有哪些
  5. JVM 性能调优实战之:一次系统性能瓶颈的寻找过程
  6. StringBufferStringBuilder 源码详解
  7. Upgrading to Java 8——第四章 The Stream API
  8. hdu1505 dp:01矩形中最大面积全0矩阵
  9. 取消2008关机对话框
  10. TuxOnIce! 休眠到硬盘[zt]