首页 > 其他分享 >【模板】交互题

【模板】交互题

时间:2024-02-26 14:36:36浏览次数:26  
标签:int LOCAL ll cost res query 交互 模板

Codeforces的交互题有点难以调试,写了一个模板方便本地调试。

struct Oracle {

  private:
    static const int MAXN = 2e5 + 10;

    int n;
    ll a[MAXN];
    ll query_cost;

#ifdef LOCAL
    static const bool IS_LOCAL = true;
#else
    static const bool IS_LOCAL = false;
#endif // LOCAL


  public:
    int GetN() {
        RD (n);
        query_cost = 0;
        if (IS_LOCAL) {
            RDN (a, n);
//        WT (n);
//        WTN (a, n);
        }
        return n;
    }

    ll Query (int l, int r) {
        printf ("? %d %d\n", l, r);
        fflush (stdout);
        query_cost += (r - l) * (r - l);

        ll res;
        if (IS_LOCAL) {
            res = GetRes (l, r);
        } else {
            RD (res);
        }
        return res;
    }

    void Answer (ll x) {
        printf ("! %lld\n", x);
        fflush (stdout);

        if (IS_LOCAL) {
            ll query_cost_lim = 5 * n * n;
            D2 (query_cost, query_cost_lim);
            ASSERT (query_cost <= query_cost_lim);
            ASSERT (CheckAnswer (x));
        }
    }

  private:
    ll GetRes (int l, int r) {
        ll res = 0;
        for (int i = l; i <= r; ++i) {
            for (int j = i + 1; j <= r; ++j) {
                res += (a[i] > a[j]);
            }
        }
        return res;
    }

    bool CheckAnswer (int x) {
        return (max_element (a + 1, a + 1 + n) - a) == x;
    }

} oracle;

标签:int,LOCAL,ll,cost,res,query,交互,模板
From: https://www.cnblogs.com/purinliang/p/18034243

相关文章

  • 多项式模板整理
    约定\(F[i]\)表示\(F(x)\)的\(i\)次项系数。多项式乘法基础详情见多项式乘法入门多项式求逆给出\(n\)次多项式\(F(x)\),求一个多项式\(G(x)\),满足\(F(x)G(x)\equiv1\pmod{x^n}\),\(G(x)\)每个系数对\(998244353\)取模。我们逐一递推,假设已知\(G[1...i-1]\),需......
  • P8436 【模板】边双连通分量
    原题链接题解和点双连通分量不同在于点双联通分量:分量内任意两点之间至少有两条独立路径可走,两条路径所经过的点除了起点和终点都不同边双连通分量:分量内任意两点之间至少有两条独立路径可走,两条路径所经过的边都不同(包括重边)用这个图依然可以解释code#include<bits/stdc++......
  • P8435 【模板】点双连通分量
    原题链接题解唯一能解释的图片,黄色代表会执行入栈操作的点code#include<bits/stdc++.h>usingnamespacestd;intvis[500005]={0};intlow[500005]={0};stack<int>q;vector<int>ans[500005];vector<int>G[500005];intlen=0;intcnt=0;voidss(intnow,intf......
  • P3388 【模板】割点(割顶)
    原题链接题解先说结论对单个图做深度搜索树,对于树的根节点,它要能是割点当且仅当她有至少两个不互通的儿子节点对于树的非叶子非根节点,它要能是割点当且仅当存在儿子节点能去的时间戳最小的节点不小于当前节点的深度搜索序对于叶子节点,不可能成为割点code#include<bits/std......
  • java中要求实现加减乘除功能,并且能够循环接收新的数据,通过用户交互实现。
    初学java实现简易计算器**思路推荐:*写4个方法:加减乘除*利用循环+switch进行用户交互*传递需要操作的两个数*输出结果点击查看代码publicclassdemo05{publicstaticvoidmain(String[]args)throwsInterruptedException......
  • JavaScript语法-字符串模板
    [TOC]##JavaScript模板字符串###代码以下是index.js的部分代码:```onShareAppMessage({const{toName,mainText,fromName}=this.data;debugger;return{title:'叮,您收到一张贺卡~',path:'pages/index/index?toname=${toName}&mai......
  • C# 的布尔类型和字符串类型(模板字符串)
    //布尔类型bollboolb=false;b=1==1;//trueboolb1=1>23;//false//值类型:在代码中初始化类型的时候没有赋值但是系统会自动赋值的叫值类型//byteshortint(default0)longfloatdou......
  • U107394 拓扑排序模板
    原题链接在拓扑排序的基础上加上了一个条件:尽可能按字典序排序,这就使得题目难度加大。题解:拓扑排序+小根堆拓扑排序是采用队列一个一个出队列来删除对应结点的边,那么我们只需要保证每次出队列的结点都尽可能小,就能保证字典序。每次出队列的值都为队列中的最小值,刚好可以采用小......
  • C# 与JAVA 的RSA 加密解密交互,C#使用BouncyCastle来实现私钥加密,公钥解密的方法
    因为一般C#的RSA加密解密都是公钥加密,私钥解密,没有私钥加密,公钥解密。在网上查了很多资料,终于看到有个博主的分享,关于私钥加密,公钥解密的解决方案,非常感谢(最下面有源网址)。此处就把简单应用的源码附上,需要的自己去完善。 1、私钥加密,公钥解密的源码usingOrg.BouncyCastle.......
  • poly模板
    多项式全家桶#include<bits/stdc++.h>#defineFu(i,a,b)for(registerinti=a;i<=b;i++)#defineFd(i,a,b)for(inti=a;i>=b;i--)#definemod998244353usingnamespacestd;intksm(inta,intk){ intans=1; while(k){ if(k&1)ans=1ll*ans*a%mod; ......