[luoguP2587] [ZJOI2008]泡泡堂(贪心)
2024-09-02 02:25:28
贪心,很像田忌赛马那样,但是因为有平局加一分导致那样的贪心不好处理。
先将两个数组从小到大排序。
比较a最大和b最大,如果a比b大,那么直接赢掉
否则 比较a最小和b最小,如果a比b大,那么直接赢掉
否则 比较a最小和b最大,如果相等,那么平局,否则就输掉
#include <cstdio>
#include <iostream>
#include <algorithm>
#define N 100010 using namespace std; int n, la, ra, lb, rb, ans1, ans2;
int a[N], b[N]; inline int read()
{
int x = 0, f = 1;
char ch = getchar();
for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -1;
for(; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + ch - '0';
return x * f;
} int main()
{
int i;
n = read();
for(i = 1; i <= n; i++) a[i] = read();
for(i = 1; i <= n; i++) b[i] = read();
sort(a + 1, a + n + 1);
sort(b + 1, b + n + 1);
la = lb = 1, ra = rb = n;
while(la <= ra)
{
if(a[ra] > b[rb]) ans1 += 2, ra--, rb--;
else if(a[la] > b[lb]) ans1 += 2, la++, lb++;
else ans1 += (a[la] == b[rb]), la++, rb--;
}
la = lb = 1, ra = rb = n;
while(la <= ra)
{
if(a[ra] < b[rb]) ans2 += 2, ra--, rb--;
else if(a[la] < b[lb]) ans2 += 2, la++, lb++;
else ans2 += (a[ra] == b[lb]), ra--, lb++;
}
printf("%d %d\n", ans1, 2 * n - ans2);
return 0;
}
最新文章
- c语言结构体
- UEditor和CKEditor配置上传图片,视频,附件
- 【MVC】自定义ASP.NET MVC Html辅助方法
- 关于java的JIT知识
- java 中 sleep(1000) 和 wait(1000) 的区别?
- css3实现各种渐变效果,比较适合做手机触屏版
- C#连接Oracle数据库基本类
- Jquery-鼠标事件
- nodejs爬虫笔记(一)---request与cheerio等模块的应用
- python基础下的mysql学习之操作命令(一)
- 我的Qt历程1:第一个Qt程序
- python基础自学 第一天
- Android ListVeiw控件(转载整理)
- 【java】类的继承
- jquery实现简单的弹出框
- 开发JSP自定义标签
- 笔记 Bioinformatics Algorithms Chapter2
- IDEA隐藏.idea文件夹
- react之echarts数据更新
- bzoj 4001 [TJOI2015]概率论 数学
热门文章
- 【luogu P1783 海滩防御】 题解
- IDEA搭建Maven 的聚合项目
- BundleConfig的作用
- 防止sql注入方法 如何防止java中将MySQL的数据库验证密码加上 &#39; or &#39;1&#39;= &#39;1 就可以出现万能密码 的PreparedStatement
- strong和weak
- 记录一下CSS outline-width 属性
- C++大数问题
- ZJOI2019Round#1
- MySQL - CASE WHEN ... THEN ... ELSE ... END语句
- wamp mysql服务意外停止