日本人的比赛

C:如果两个数差了大于1无解,否则分类讨论

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 100010, mod = 1000000007;
int n, m;
ll a[N];
ll power(ll x, ll t)
{ll ret = 1;for(; t; t >>= 1, x = x * x % mod) if(t & 1) ret = ret * x % mod;return ret;
}
int main()
{scanf("%d%d", &n, &m);if(n < m) swap(n, m);if(n - m != 1 && n - m != 0){puts("0");return 0;}a[0] = 1;for(int i = 1; i <= n + 1; ++i)a[i] = a[i - 1] * (ll)i % mod;if(n == m)printf("%lld\n", 2ll * a[n] % mod * a[m] % mod);elseprintf("%lld\n", a[n] % mod * a[m] % mod);return 0;
}

View Code

D:分别按xy排序,然后分别把相邻的差放进去做最小生成树。因为如果三个点xaxbxc,xa<xb<xc,那么连xa->xb->xc肯定比xa->xc优,也就是说连相邻的肯定最优。因为这n-1条边能构成最小生成树,而且是自己维度最优的,所以只要和最小的y比较就行了,肯定会有解,而且是最优的,因为我们不可能会去用其他的边。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 100010;
struct edge {int u, v;ll w;edge(int u, int v, ll w) : u (u), v (v), w (w) {}
};
struct data {ll x, y;int id;
} a[N];
int n;
int fa[N];
ll ans;
vector<edge> e;
bool cp(edge x, edge y)
{return x.w < y.w;
}
bool cp1(data x, data y)
{return x.x < y.x;
}
bool cp2(data x, data y)
{return x.y < y.y;
}
int find(int x)
{return x == fa[x] ? x : fa[x] = find(fa[x]);
}
int main()
{scanf("%d", &n);for(int i = 1; i <= n; ++i) fa[i] = i;for(int i = 1; i <= n; ++i){scanf("%lld%lld", &a[i].x, &a[i].y);a[i].id = i;}sort(a + 1, a + n + 1, cp1);for(int i = 2; i <= n; ++i)e.push_back(edge(a[i].id, a[i - 1].id, a[i].x - a[i - 1].x));sort(a + 1, a + n + 1, cp2);for(int i = 2; i <= n; ++i)e.push_back(edge(a[i].id, a[i - 1].id, a[i].y - a[i - 1].y));sort(e.begin(), e.end(), cp);for(int i = 0; i < e.size(); ++i){if(find(e[i].u) == find(e[i].v)) continue;ans += e[i].w;fa[find(e[i].u)] = find(e[i].v);}printf("%lld\n", ans);return 0;
}

View Code

E:并没有AC,不知道哪里错了。

结论:不全在边框上的整数互相之间肯定能连起来。

只要考虑的是在边框上的点,防止出现ijij的情况,于是用一个栈从顺时针加入,如果加入的点和栈顶是同一种数字,那么弹出,否则加入,最后看栈是否为空。

wa

#include<bits/stdc++.h>
using namespace std;
const int N = 100010;
struct data {int x, y, id;
};
int n, r, c, top;
vector<data> v[4];
data st[N];
bool cp1(data x, data y)
{return x.x < y.x;
}
bool cp2(data x, data y)
{return x.x > y.x;
}
bool cp3(data x, data y)
{return x.y < y.y;
}
bool cp4(data x, data y)
{return x.y > y.y;
}
int main()
{scanf("%d%d%d", &r, &c, &n);for(int i = 1; i <= n; ++i){data a, b; scanf("%d%d%d%d", &a.x, &a.y, &b.x, &b.y);a.id = b.id = i;if((a.x == 0 || a.x == c || a.y == 0 || a.y == r) && (b.x == 0 || b.x == c || b.y == 0 || b.y == r)){if(a.x == 0)v[0].push_back(a);else if(a.y == r)v[1].push_back(a);else if(a.x == c)v[2].push_back(a);else if(a.y == 0)v[3].push_back(a);if(b.x == 0)v[0].push_back(b);else if(b.y == r)v[1].push_back(b);    else if(b.x == c)v[2].push_back(b);else if(b.y == 0)v[3].push_back(b);}}sort(v[0].begin(), v[0].end(), cp3);sort(v[1].begin(), v[1].end(), cp1);sort(v[2].begin(), v[2].end(), cp4);sort(v[3].begin(), v[3].end(), cp2);st[0].id = 0;for(int i = 0; i < 4; ++i)for(int j = 0; j < v[i].size(); ++j){data x = v[i][j];
//            printf("x.id=%d x.x=%d x.y=%d\n", x.id, x.x, x.y);if(x.id == st[top].id) --top;elsest[++top] = x;}puts(top == 0 ? "YES" : "NO");return 0;
}

View Code

转载于:https://www.cnblogs.com/19992147orz/p/7076421.html

atcoder 076相关推荐

  1. ICPC / CCPC / Codeforces / AtCoder 单词本

    过不了六级的小菜鸡呜呜呜,好久没有背过单词了,都忘完了 放一些写ICPC真题 / CCPC真题 / Codeforces / AtCoder 的时候不能立刻反应过来的单词每天背一下 四舍五入 roun ...

  2. 【每日亿题#12】AtCoder Grand Contest 021 (A ~ F)全部题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 文章目录 AtCoder Grand Contest 021 题解 A. Digit Sum 2 B. ...

  3. AtCoder Beginner Contest 202 D - aab aba baa(组合计数,字典序)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Problem 有 AAA 和 aaa,BBB 个 bbb ,可以使用这 A+BA+BA+B 个字符任 ...

  4. AtCoder Beginner Contest 197 题解(A ~ F)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Rotate B - Visibility C - ORXOR D - Opposite ...

  5. AtCoder Beginner Contest 198 (A ~ F)题解

    目录 A. Div B. Palindrome with leading zeros C. Compass Walking D. Send More Money E. Unique Color F. ...

  6. AtCoder Regular Contest 071 D - 井井井 / ###

    题目:http://arc071.contest.atcoder.jp/tasks/arc071_b 题意: 有一个二维的平面,给你xn根竖线和ym根横线,问这些线围成的长方形(正方形)的面积和(要求 ...

  7. AtCoder Beginner Contest 022 A.Best Body 水题

    Best Body Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://abc022.contest.atcoder.jp/tasks/abc02 ...

  8. AtCoder AGC002E Candy Piles (博弈论)

    神仙题..表示自己智商不够想不到... 好几次读成最后拿的赢了,导致一直没看懂题解... 题目链接: https://atcoder.jp/contests/agc002/tasks/agc002_e ...

  9. UPC个人训练赛第十五场(AtCoder Grand Contest 031)

    传送门: [1]:AtCoder [2]:UPC比赛场 [3]:UPC补题场 参考资料 [1]:https://www.cnblogs.com/QLU-ACM/p/11191644.html B.Re ...

最新文章

  1. synchronize
  2. 为什么我十分喜欢 C,却很不喜欢 C++
  3. P1799 数列_NOI导刊2010提高(06)
  4. 操作系统的实现(0)
  5. php实现一个简单的四则运算计算器
  6. python获取id标签对应数据_Python--Scrapy爬虫获取简书作者ID的全部文章列表数据
  7. MySql主从同步最小配置
  8. android hook 实例,代码实例分析android中inline hook
  9. rsa php前台加密后台解密源码,使用RSA实现前端公钥加密后端私钥解密
  10. 新计算机主板不亮,电脑组装完毕之后点不亮怎么办 新电脑组装好开不了机的解决办法...
  11. C# 中,利用 Conditional 定义条件方法
  12. ubuntu下编译安装linux内核源码
  13. Centos7下WebLogic安装部署
  14. eyoucms如何管理栏目
  15. 图像元数据(Metadata) ——Exif信息分析
  16. 捋一捋DSP里的重叠保留法
  17. STM32:Modbus-RTU通讯协议——CRC校验
  18. 功率电感的两个额定电流 Isat 与 Irms
  19. NRF52832-QFAA、NRF52840-QIAA性能区别-蓝牙智能手环穿戴
  20. Android11不如,1200万像素的iPhone11真的不如4800万像素的安卓?

热门文章

  1. python修改文件后缀_python实现遍历文件夹修改文件后缀
  2. 产品报价单模板_一文说透报价单,这么做才是专业!附模板及注意事项
  3. 单片机c语言必背代码_【典藏】深度剖析单片机程序的运行(C程序版)
  4. mysql.createpool_Node.js MySQL模块中mysql.createConnection和mysql.createPool有什么区别?
  5. 查询mysql视图_MySQL数据库简介及常用命令
  6. lua运行外部程序_LTUI v2.2 发布, 一个基于lua的跨平台字符终端UI界面库
  7. AXI_01 《AXI总线系列文章》由来
  8. 小米笔记本充电实测追求速度牺牲兼容性小米笔记本充电驱动_是海尔?也是雷神?不足1千克MixBook Air超轻薄笔记本...
  9. 清除string内容_python爬取哔哩哔哩网页弹幕内容,并将爬取的内容以五角星的形式显示出来...
  10. java移动接口发短信_天天都会写接口(interface),但它的用途和好处有多少人能说得清楚?