田忌赛马 贪心
思路:
先排序,然后比较,比较分以下情况。
田忌最快的马比王的快,可以直接赢下他,此时收益最大
田忌最快的马不如王的快,则此时是必输局面,用最慢的马输给他,为后续比较提供更大的胜算
田忌最快的马和王的一样快,比较最慢的马
分三种情况
田忌最慢的马比王的快,则用最慢的马赢王最慢的马,收益最大
田忌最慢的马比王的慢,又是一个必输局面,用最慢的马输王最快的马,为后续提供更多胜算
田忌最慢的马和王的一样慢,用最慢的马输与王比(可能输也可能平局),为后续比较提供更多胜算
然后模拟就好了
emm,答案可能是负数,我用了快速输入输出,在输出的时候没考虑到这一点,因此wa了好多发。
#include<cstdio>
//using namespace std;
#define rep(i, a, b) for (int i = a; i <= b; i++)
int p(int a[], int l, int r){
int s = a[l];
int i, j;
i = l;
j = r;
while (i < j){
while (i < j && a[j] >= s)j--;
if (i < j)a[i++] = a[j];
while (i < j && a[i] < s)i++;
if (i < j)a[j--] = a[i];
}
a[i] = s;
return i;
}
void sort(int a[], int l, int r){
if (l < r){
int k = p(a, l, r);
sort(a, l, k - 1);
sort(a, k + 1, r);
}
}
template <class T>
bool read(T & a){
a = 0;
int flag = 0;
char ch;
if((ch = getchar()) == '-'){
flag = 1;
}
else if(ch >= '0' && ch <= '9'){
a = a * 10 + ch - '0';
}
while ((ch = getchar()) >= '0' && ch <= '9'){
a = a * 10 + ch - '0';
}
if(flag)a = -a;
return true;
}
template <class T, class ... R>
bool read(T & a, R & ... b){
if(!read(a))return 0;
read(b...);
}
template <class T>
bool out(T a){
if(a < 0)putchar('-');
if(a >= 10)out(a / 10);
putchar(a % 10 + '0');
return true;
}
template <class T, class ... R>
bool out(T a, R ... b){
if(!out(a))return 0;
out(b...);
}
int n;
int a[1100], b[1100];
void in(){
rep (i, 0, n - 1){
read(a[i]);
}
rep (i, 0, n - 1){
read(b[i]);
}
}
void solve(){
int ans = 0;
sort(a, 0, n - 1);
sort(b, 0, n - 1);
int la, lb, ra, rb;
la = lb = 0;
ra = rb = n - 1;
rep (i, 0, n - 1){
if (a[ra] > b[rb]){
ans += 200;
ra--;
rb--;
}
else if (a[ra] < b[rb]){
ans -= 200;
rb--;
la++;
}
else {
if (a[la] < b[lb]){
la++;
rb--;
ans -= 200;
}
else if (a[la] > b[lb]){
la++;
lb++;
ans += 200;
}
else {
if (a[la] < b[rb])ans -= 200;
la++;
rb--;
}
}
}
if (ans < 0){
putchar('-');
ans = -ans;
}
out(ans);puts("");
}
int main(){
while (read(n) && n){
in();
solve();
}
return 0;
}
作者: correct
出处:https://www.cnblogs.com/correct/p/16548394.html
本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!