UVALive - 3713 Astronauts

Redis+QMT实战:如何用Stream模式实现聚宽策略的毫秒级跟单(附完整代码) 本文详细介绍了如何利用Redis Stream模式构建一个低延迟、高可靠的量化交易信号中继系统,实现从聚宽策略到本地QMT的毫秒级跟单。通过对比传统方案,解析了Redis Stream在消息持久化、消费组和显式确认方面的核心优势,并提供了完整的架构设计思路与核心代码实现,帮助量化开发者解决云端策略信号稳定传递至本地实盘的难题。 阅读详情

给定n个宇航员的年龄,平均年龄为 ave,根据下列要求分配任务:

B任务只能分配给年龄<ave的宇航员;

A任务只能分配给年龄>=ave的宇航员;

C任务可以任意分配。

给定m组互相憎恨的宇航员,要求他们不能分配到同一个任务。能否存在这样的一组任务分配。

每个宇航员都只能分配两种任务中的一种:A或C(年龄大于等于ave),B或C(年龄小于ave),那么为每个宇航员设立一个变量xi,xi为0表示分配C任务,为1则分配A或B(根据年龄)。

对于互相仇恨的宇航员,如果属于同一类型,那么应满足xi∨xj,非xi∨非xj,表示xi和xj一真一假;如果类型不同只需要满足不同时分配C任务就可:xi∨xj。

 

直接贴代码好了:

#include <iostream>
#include <sstream>
#include <cstdio>
#include <climits>
#include <cstring>
#include <cstdlib>
#include <string>
#include <stack>
#include <map>
#include <cmath>
#include <vector>
#include <queue>
#include <algorithm>
#define esp 1e-6
#define pi acos(-1.0)
#define pb push_back
#define mp(a, b) make_pair((a), (b))
#define in  freopen("in.txt", "r", stdin);
#define out freopen("out.txt", "w", stdout);
#define print(a) printf("%d\n",(a));
#define bug puts("********))))))");
#define stop  system("pause");
#define Rep(i, c) for(__typeof(c.end()) i = c.begin(); i != c.end(); i++)
#define pragma comment(linker, "/STACK:102400000, 102400000")
#define inf 0x0f0f0f0f

using namespace std;
typedef long long  LL;
typedef vector<int> VI;
typedef pair<int, int> pii;
typedef vector<pii,int> VII;
typedef vector<int>:: iterator IT;
const int maxn = 111111;
int A[maxn], tag[maxn];
double sum;
int dblcmp(int x)
{
    if(fabs(x) < esp)
        return 1;
    return x > 0 ? 1 : 0;
}

struct TwoSAT
{
    int mark[maxn*2], S[maxn*2], c, n;
    VI g[maxn*2];

    void init(int n)
    {
        this->n = n;
        for(int i = 0; i < n*2; i++)
            g[i].clear();
        memset(mark, 0, sizeof(mark));
    }
    bool dfs(int x)
    {
        if(mark[x^1]) return false;
        if(mark[x])    return true;
        mark[x] = 1;
        S[c++] = x;
        for(int i = 0; i < g[x].size(); i++)
            if(!dfs(g[x][i])) return false;
        return true;
    }
    void add_clause(int x, int xval, int y, int yval)
    {
        x = x*2+xval;
        y = y*2+yval;
        g[x^1].pb(y);
        g[y^1].pb(x);
    }
    bool solve()
    {
        for(int i = 0; i < 2*n; i += 2)
            if(!mark[i] && !mark[i+1])
            {
                c = 0;
                if(!dfs(i))
                {
                    while(c) mark[S[--c]] = false;
                    if(!dfs(i+1)) return false;
                }
            }
        return true;
    }
    void print_ans(void)
    {
        for(int i = 0; i < n; i++)
        {
            puts(mark[2*i] ? "C" : (tag[i] == 1 ? "A" : "B"));
        }
    }
} sat;
bool check(int x)
{
    return dblcmp(A[x]-sum);
}
int main(void)
{   
    int n, m;
    while(scanf("%d%d", &n, &m), n||m)
    {
        sum = 0;
        for(int i = 0; i < n; i++)
            scanf("%d", A+i), sum += A[i];
        sum /= n;
        sat.init(n);
        for(int i = 0; i < n; i++)
            tag[i] = check(i);
        while(m--)
        {
            int u, v;
            scanf("%d%d", &u, &v);
            u--, v--;
            if(tag[u] != tag[v])
            {
                sat.add_clause(u, 1, v, 1);
            }
            else
            {
                sat.add_clause(u, 1, v, 1);
                sat.add_clause(u, 0, v, 0);
            }
        }
        if(sat.solve())
            sat.print_ans();
        else puts("No solution.");
    }
    return 0;
}
把核心变干净的代价与回报:为什么推动 Clean Core,几乎绕不开 SAP Integration Suite 与 API Management Clean Core的核心价值在于构建可持续升级的ERP系统架构,其关键不在于减少代码或限制扩展,而是通过解耦和治理实现系统边界的清晰划分。这一理念将推动企业从传统的"私搭乱建"式集成向平台化工程转型,而SAP Integration Suite和API Management正是实现这一转型的核心组件。 Integration Suite作为集成中枢,通过统一平台、可复用内容库和事件驱动架构,将碎片化连接转变为标准化能力;API Management则负责建立接口治理体系,通过统一入口、 阅读详情

相关推荐

告别高延迟!用RV1106+4G模块+libdatachannel搭建低功耗WebRTC监控,保姆级避坑指南

本文详细介绍了如何利用RV1106低功耗处理器、4G模块和libdatachannel库构建嵌入式WebRTC监控系统,解决高延迟问题。通过硬件选型、系统优化和核心代码实现,提供了一套完整的低功耗实时视频传输方案,特别适合智能安防和工业物联网应用。

weixin_42527401的博客 192

UVALive3713-Astronauts 2-SAT

题目链接:https://vjudge.net/problem/UVALive-3713题意:有A、B、C 3个任务分配给n个宇航员,其中每个宇航员恰好分配一个任务。假设n个宇航员的平均年龄为x,只有年龄大于x的才能领取A任务;只有年龄严格小于x的才能领取B任务,而任务C没有限制。有m对宇航员相互讨厌,因此不能分配同一任务。求出是否能找出符合的任务方案。解法:用xi表示第i个宇航员的分配方案。年龄大

I good vegetable a! 496

西门子S7-1200和IFM IO-Link主站连接与设定

硬件配置:S7-1200 1214DC/DC/DC,IFM AL1102支持Profinet,IFM支持IO-Link的流量传感器SBG233,流量开关SI5010,接近开关IF6123。第三步:打开IFM moneo configure可查看到流量传感器SBG233 PLC映射所有输出共占用4个byte,也可在IFM官网下载传感器对应IODD文件。第五步:组态编程编译下载。最近新做了一个项目,用到了IO-Link设备,今天来分享一下S7-1200和IFM IO-Link主站模块AL1102的连接过程。

GreatShen168的博客 6492

UVALive3713-Astronauts(2-SAT)

题目链接 题意:有A、B、C3个任务分配给n个宇航员,其中每个宇航员恰好分配一个任务。假设n个宇航员的平均年龄为x,只有年龄大于x的才能领取A任务;只有年龄严格小于x的才能领取B任务,而任务C没有限制。有m对宇航员相互讨厌,因此不能分配同一任务。求出是否能找出符合的任务方案。 思路:用xi表示第i个宇航员的分配方案。年龄大于等于x的可以选择A(xi = true)和C(xi

懒人一枚。 1159

第4章 Stata参数检验

目录 4.1单一样本T检验 案例延伸 4.2独立样本T检验 案例延伸 1.改变置信水平 2.在异方差假定条件下进行假设检验 4.3配对样本T检验 案例延伸 1.改变置信水平 4.4单一样本方差的假设检验 案例延伸 4.5双样本方差的假设检验 参数检验(Parameter Test)是指对参数的平均值、方差、比率等特征进行的统计检验。参数检验一般假设统计总体的具体分布为已知,但是其中一些参数或者取值范围不确定,分析的主要目的是估计这些未知参数的取值,或者对这些参数进...

qq_45112156的博客 1万+

Arcgis 10.3 与 ArcGIS Engine 10.3 安装与破解

Arcgis 10.3 与 ArcGIS Engine 10.3 安装与破解

weixin_52127098的博客 4725

LA 3713 - Astronauts 2-SAT

The Bandulu Space Agency (BSA) has plans for the following three space missions: Mission A: Landing on Ganymede, the largest moon of Jupiter.Mission B: Landing on Callisto, the second largest moo

Azarath Metrion Zinthos 1019

二、Windows安装Docker到非C盘的全新教程(Windows版)

Windows安装Docker到非C盘的全新教程(Windows版)

funfan的博客 4万+

UVALive 3713 Astronauts(2-sat+输出任意路径)

题目:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1714 题目大意:有n个宇航员,给你每个人的年龄。设 ave 为他们的平均年龄,年龄大于等于 ave 才能执行任务A,小于才能执行任务B ,而 任务C 则是谁都可以执行的。再给你 m

沉溺的专栏 1041

Ultralytics 框架中 model.predict() 返回的 results 对象的详细解析

通过掌握 results 对象的使用方法,您可以快速实现模型部署、数据分析与可视化。

浩瀚之水的专栏 748

SAP CBC 集成质量系统初始化接入实战指南

摘要 本文探讨了SAP S/4HANA Cloud Public Edition项目中质量系统的初始接入过程。质量系统并非开箱即用,而是需要经过SAP Central Business Configuration(CBC)的Scope and Organizational Structure阶段部署后才能具备完整功能。文章重点分析了几个关键环节:CBC里程碑确认的时机选择、Identity Authentication的初始管理员设置、Business Role Template的创建规范等。实施过程中需特

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1407

UVALive 3713 Astronauts

题意: 有n个宇航员  他们需要完成A、B、C三种任务  年龄>=平均年龄的人可以做A和C  年龄 思路: 一类人有2种选择而且必须选1个  因此想到2-sat  根据年龄和讨厌关系来建边  之后先做可行性判断  确定可以后  求出任意一组可行解  不需要字典序最小 代码: #include #include #include #include using namespace std;

House 922

《S32系列芯片——Boot & HSE详解》持续更新中...

专栏总目录,将详细介绍S32系列芯片的Boot功能,最终给出HSE基于IVT的Secure Boot方案!!!

车载系统攻城狮 4385

UVALive - 3713 - Astronauts(图论——2-SAT)

Problem UVALive - 3713 - Astronauts Time Limit: 3000 mSec Problem Description Input The input contains several blocks of test cases. Each case begins with a line containing two intege...

weixin_30955617的博客 219

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

UVALive 3713 Astronauts

2sat....可看出每个宇航员可以有两种任务选择 (A/B) 或 C 对于每一对有矛盾的宇航员,如果属于同一年龄段 那么这两个人选择的任务不应该相同 如果属于不同的年龄段,则俩个人不能同时选择任务C Astronauts Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %l

码代码的猿猿 1287

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

UVALive3713 Astronauts

作为我第一道2-SAT的题就是这么简单 套模版然后就可以连边了,最后AC #include using namespace std; const int MAXN = 100000; struct TwoSAT { int n; bool mark[MAXN * 2 + 10]; vector G[MAXN * 2 + 10]; int S[MAXN *

hlq07的专栏 453

UVALIVE 3713 Astronauts(2-SAT)

 题意:有A,B,C三个任务要分给n个宇航员,年龄大于等于平均年龄的分A, 年龄小于平均年龄的分在B,C组没有界限,互为敌人的两个宇航员不可以在同一组.求出一个分配的方案。 思路:可以发现每个宇航员只有两种选择,选c或者不选c,用一个布尔变量xi代表第i个宇航员的选择, 对于相互为敌的两个年龄同时大于等于或同时小于平均年龄的宇航员,需要满足!(xi && xj)和!((!xi) && !

GODSPEED 787

uvalive 3713 Astronauts

题意: 现在要安排一些宇航员去星球勘探。有3个星球,分别是J第一大的月亮A,J第二大的月亮B,S第一大的月亮C。 规定年轻的宇航员不能去A,年长的宇航员不能去B,C任何人都可以去。 现在有一些宇航员之间有矛盾,他们不能去相同的星球。 现在问可否安排出这样的方案满足条件,如果有,那么就输出每个宇航员去的星球,没有就说明不可能。 思路: 2-SAT问题 对于年轻的宇航员,去B为真,去C为...

weixin_30349597的博客 129

UvaLive-3713-Astronauts

这个题依然是书中的例题,用2-sat做 分析题意可以知道: 1、对于xi,xj属于同一个类型,可以用2个语句表示其中的结果xi^xj,-xi^-xj。 2、对于xi,xj属于不同类型,那么只可能存在xi=false and xj=false这一种冲突的情况,所以只需要加上-xi^-xj这个限制语句就可以解决这个冲突 代码: #include #include #include #

z309241990的专栏 610

UVALive 3713 Astronauts(2SAT)

当u, v 年龄段一样时,假设都大于平均年龄,必须满足u=A&&v=C || u=C&&v=A,我们只要加(u=A||v=A) &&(u=C||v=C)两个条件就可以了。而当年龄段不同时只加,(u=A||v=B)这个条件就可以了。  #include #include #include #include #include #include #include #include #include #

ok_again的专栏 954

UVALive3713_Astronauts

有n个宇航员,根据年龄限制,所有宇航员只能从事A或B中的一种任务,所有人都可以从事C的任务。有的宇航员之间相互讨厌,不能分在一组,求出一种满足条件的分配方案。 2sat。mark[]中i+i和i+i+1分别表示i从事C工作或者他的特有工作。 对于仇恨关系,我们可以知道U和V两个人不能同时从事C工作。于是加边 (U+U,V+V+1),(V+V,U+U+1)。 同时,如果这两个人的特有...

weixin_30679823的博客 96

Uvalive 3713 - Astronauts(2-SAT)

题目链接 https://vjudge.net/problem/UVALive-3713 【题意】 有A,B,C3个任务要分给n名宇航员。其中每个宇航员要恰好分配一个任务,所有的n个宇航员平均年龄是x,只有年龄大于等于x的宇航员可以做任务A,年龄小于x的宇航员可以做任务B,任务C没有限制,有m对宇航员相互讨厌,因此不能分配到同一个任务,编程找出一...

weixin_30783913的博客 138

UVALive - 3713 Astronauts(2-SAT)

题目大意:有A,B,C 3个任务要飞配给n个宇航员,现给出n个宇航员的年龄和每种任务的执行要求。 A任务只有年龄大于等于平均年龄的宇航员才可以执行 B任务只有年龄小于平均年龄的宇航员才可以执行 C任务任何宇航员都可以执行 现在有M对讨厌关系,互相讨厌的宇航员不能执行同一种任务,现要求找出一个满足上述所有要求的任务分配方案解题思路:年龄大于等于平均年龄的宇航员只能执行A任务或者C任务,假设执

静静地码 842

UVALive 3713 - Astronauts(2-SAT)

题目: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=72618#problem/F 题意: 有A,B,C三个任务要分给n个宇航员,年龄大于等于平均年龄的分A, 年龄小于平均年龄的分在B,C组没有界限,互为敌人的两个宇航员不可以在同一组.求出一个分配的方案. 思路: 2-SAT. 同一年龄互为敌人: x^y=1 !x^!y

Halo 591

Astronauts UVALive - 3713(2-SAT)

大白书例题 #include <iostream> #include <cstdio> #include <sstream> #include <cstring> #include <map> #include <set> #include <vector> #inclu...

babing2770的博客 177

UVALive-3713 Astronauts (2-SAT)

题目大意:有三个任务A、B、C,n个已知年龄的人。A任务只能被年龄不小于平均年龄的人做,B任务只能被平均年龄以下的人做,C任务不限,相互讨厌的两个人不能做同一件任务,现在已知厌恶关系,求一种任务分配方案。 题目分析:每个人都有两个选择,对于年龄大的人,设选A为真,选C为假,对年龄小的人,设选B为真,选C为假。相互讨厌的两个人X、Y若同类,X、Y只能一真一假,也就是X、Y不能同真也不能同...

weixin_30466953的博客 153

【UVALive - 3713】Astronauts (2-SAT)

题意:   有n个宇航员,按照年龄划分,年龄低于平均年龄的是年轻宇航员,而年龄大于等于平均年龄的是老练的宇航员。   现在要分配他们去A,B,C三个空间站,其中A站只有老练的宇航员才能去,而B站是只有年轻的才能去,C站都可以去。   有m对宇航员相互讨厌,不能让他们在同一个空间站工作。   输出每个宇航员应分配到哪个空间站,如果没有则输出No solution. 分析: ...

weixin_30456039的博客 114
上一篇: UVALive 3211 Now or later
下一篇: ZOJ - 2615 Cells
rootial
博客等级 码龄15年 2粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值