Codechef :BWGAME (可并堆)

传送门

题解:
答案就是行列式的值。
可用可并堆来模拟高斯消元,对于每个主元,每次选择右端点最小去消元,然后把堆中元素全部放到 r+1 r + 1 的地方即可,时间复杂度 O(nlogn). O ( n log ⁡ n ) .
这道题也提供了一种解 n n 元方程组,且每个方程只出现两个变量的一般方法,只不过需要在堆上加一个tag,可以采用从上到下的数据结构(左偏树 /Splay 启发式合并)来完成,时间复杂度 O(nlogn) O ( n log ⁡ n )

#include <bits/stdc++.h>
using namespace std;
inline int rd() {
    char ch=getchar(); int i=0,f=1;
    while(!isdigit(ch)) {if(ch=='-')f=-1; ch=getchar();}
    while(isdigit(ch)) {i=(i<<1)+(i<<3)+ch-'0'; ch=getchar();}
    return i*f;
}
const int N=1e6+50;
int n;
struct node {
    node *lc,*rc; int val,dis,id;
}Pool[N],*pool=Pool,*null=Pool,*rt[N],*idx[N];
inline node* newnode(int v,int o) {
    ++pool; pool->id=o;
    pool->lc=null; pool->rc=null; 
    pool->val=v; return pool;
}
inline node* merge(node *x,node *y) {
    if(x==null) return y; 
    if(y==null) return x;
    if(x->val>y->val) swap(x,y);
    x->rc=merge(x->rc,y); 
    if(x->rc->dis>x->lc->dis) swap(x->lc,x->rc);
    x->dis=x->rc->dis+1; return x;
}
inline void solve() {
    pool=Pool; n=rd(); int ans=1;
    for(int i=1;i<=n;i++) rt[i]=null;
    for(int i=1;i<=n;i++) {
        int l=rd(),r=rd();
        rt[l]=merge(rt[l],idx[i]=newnode(r,i));
    }
    for(int i=1;i<=n;i++) {
        if(rt[i]==null || rt[i]->val<i) {puts("Draw"); return;}
        if(rt[i]!=idx[i]) {
            idx[i]->id=rt[i]->id;
            swap(idx[i],idx[rt[i]->id]);
            rt[i]->id=i; ans=-ans;
        }
        int v=rt[i]->val+1;
        if(v<=n) {
            rt[i]=merge(rt[i]->lc,rt[i]->rc);
            rt[v]=merge(rt[v],rt[i]);
        }
    }
    printf("%s\n",(ans<0)?("Fedor"):("Alex"));
}
int main() {
    null->dis=-1;
    for(int i=rd();i;i--) solve();
} 
CCF大数据与计算智能大赛-面向电信行业存量用户的智能套餐个性化匹配模型联通赛-复赛第二名-【多分类,embedding】.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值