www.acwing.com Open in urlscan Pro
182.92.217.102  Public Scan

Submitted URL: http://www.acwing.com/
Effective URL: https://www.acwing.com/
Submission: On April 13 via manual from HK — Scanned from PL

Form analysis 14 forms found in the DOM

<form class="comment_reply_form" role="form" enctype="multipart/form-data">
  <input type="hidden" name="csrfmiddlewaretoken" value="wXCsOFKb8FTgVNVd5ksWPQ0qsblNWY7LCOSlmqpKyXpEfaYbk0A0RvdVxU2fdh2x">
  <div data-toggle="modal" data-target="#login-modal">
    <textarea class="file-comment" name="content" cols="40" rows="2" maxlength="3000" required="" title="回复" placeholder="在这里写评论...(支持MarkDown和Latex语法)"></textarea>
  </div>
</form>

<form class="comment_reply_form" role="form" enctype="multipart/form-data">
  <input type="hidden" name="csrfmiddlewaretoken" value="wXCsOFKb8FTgVNVd5ksWPQ0qsblNWY7LCOSlmqpKyXpEfaYbk0A0RvdVxU2fdh2x">
  <div data-toggle="modal" data-target="#login-modal">
    <textarea class="file-comment" name="content" cols="40" rows="2" maxlength="3000" required="" title="回复" placeholder="在这里写评论...(支持MarkDown和Latex语法)"></textarea>
  </div>
</form>

<form class="comment_reply_form" role="form" enctype="multipart/form-data">
  <input type="hidden" name="csrfmiddlewaretoken" value="wXCsOFKb8FTgVNVd5ksWPQ0qsblNWY7LCOSlmqpKyXpEfaYbk0A0RvdVxU2fdh2x">
  <div data-toggle="modal" data-target="#login-modal">
    <textarea class="file-comment" name="content" cols="40" rows="2" maxlength="3000" required="" title="回复" placeholder="在这里写评论...(支持MarkDown和Latex语法)"></textarea>
  </div>
</form>

<form class="comment_reply_form" role="form" enctype="multipart/form-data">
  <input type="hidden" name="csrfmiddlewaretoken" value="wXCsOFKb8FTgVNVd5ksWPQ0qsblNWY7LCOSlmqpKyXpEfaYbk0A0RvdVxU2fdh2x">
  <div data-toggle="modal" data-target="#login-modal">
    <textarea class="file-comment" name="content" cols="40" rows="2" maxlength="3000" required="" title="回复" placeholder="在这里写评论...(支持MarkDown和Latex语法)"></textarea>
  </div>
</form>

<form class="comment_reply_form" role="form" enctype="multipart/form-data">
  <input type="hidden" name="csrfmiddlewaretoken" value="wXCsOFKb8FTgVNVd5ksWPQ0qsblNWY7LCOSlmqpKyXpEfaYbk0A0RvdVxU2fdh2x">
  <div data-toggle="modal" data-target="#login-modal">
    <textarea class="file-comment" name="content" cols="40" rows="2" maxlength="3000" required="" title="回复" placeholder="在这里写评论...(支持MarkDown和Latex语法)"></textarea>
  </div>
</form>

<form class="comment_reply_form" role="form" enctype="multipart/form-data">
  <input type="hidden" name="csrfmiddlewaretoken" value="wXCsOFKb8FTgVNVd5ksWPQ0qsblNWY7LCOSlmqpKyXpEfaYbk0A0RvdVxU2fdh2x">
  <div data-toggle="modal" data-target="#login-modal">
    <textarea class="file-comment" name="content" cols="40" rows="2" maxlength="3000" required="" title="回复" placeholder="在这里写评论...(支持MarkDown和Latex语法)"></textarea>
  </div>
</form>

<form class="comment_reply_form" role="form" enctype="multipart/form-data">
  <input type="hidden" name="csrfmiddlewaretoken" value="wXCsOFKb8FTgVNVd5ksWPQ0qsblNWY7LCOSlmqpKyXpEfaYbk0A0RvdVxU2fdh2x">
  <div data-toggle="modal" data-target="#login-modal">
    <textarea class="file-comment" name="content" cols="40" rows="2" maxlength="3000" required="" title="回复" placeholder="在这里写评论...(支持MarkDown和Latex语法)"></textarea>
  </div>
</form>

<form class="comment_reply_form" role="form" enctype="multipart/form-data">
  <input type="hidden" name="csrfmiddlewaretoken" value="wXCsOFKb8FTgVNVd5ksWPQ0qsblNWY7LCOSlmqpKyXpEfaYbk0A0RvdVxU2fdh2x">
  <div data-toggle="modal" data-target="#login-modal">
    <textarea class="file-comment" name="content" cols="40" rows="2" maxlength="3000" required="" title="回复" placeholder="在这里写评论...(支持MarkDown和Latex语法)"></textarea>
  </div>
</form>

<form class="comment_reply_form" role="form" enctype="multipart/form-data">
  <input type="hidden" name="csrfmiddlewaretoken" value="wXCsOFKb8FTgVNVd5ksWPQ0qsblNWY7LCOSlmqpKyXpEfaYbk0A0RvdVxU2fdh2x">
  <div data-toggle="modal" data-target="#login-modal">
    <textarea class="file-comment" name="content" cols="40" rows="2" maxlength="3000" required="" title="回复" placeholder="在这里写评论...(支持MarkDown和Latex语法)"></textarea>
  </div>
</form>

<form class="comment_reply_form" role="form" enctype="multipart/form-data">
  <input type="hidden" name="csrfmiddlewaretoken" value="wXCsOFKb8FTgVNVd5ksWPQ0qsblNWY7LCOSlmqpKyXpEfaYbk0A0RvdVxU2fdh2x">
  <div data-toggle="modal" data-target="#login-modal">
    <textarea class="file-comment" name="content" cols="40" rows="2" maxlength="3000" required="" title="回复" placeholder="在这里写评论...(支持MarkDown和Latex语法)"></textarea>
  </div>
</form>

POST

<form id="modal_danger_delete_url" method="post" action="" enctype="multipart/form-data">
  <input type="hidden" name="csrfmiddlewaretoken" value="wXCsOFKb8FTgVNVd5ksWPQ0qsblNWY7LCOSlmqpKyXpEfaYbk0A0RvdVxU2fdh2x">
  <button class="btn" type="button" data-dismiss="modal">取消</button>
  <button id="modal_danger_delete_url_btn" class="btn btn-danger" data-dismiss="modal" type="submit"> 删除 </button>
</form>

POST /user/account/signin/

<form class="sign-form" id="login-form" role="form" action="/user/account/signin/" method="post" enctype="multipart/form-data">
  <input type="hidden" name="csrfmiddlewaretoken" value="wXCsOFKb8FTgVNVd5ksWPQ0qsblNWY7LCOSlmqpKyXpEfaYbk0A0RvdVxU2fdh2x">
  <div class="modal-body">
    <div id="div-login-msg">
      <div id="icon-login-msg" class="glyphicon glyphicon-chevron-right"></div>
      <span id="text-login-msg">请输入登录信息</span>
    </div>
    <input id="login_username" name="username" class="form-control" type="text" placeholder="用户名或邮箱" maxlength="30" required="">
    <input id="login_password" name="password" class="form-control" type="password" placeholder="密码" maxlength="16" required="">
    <div class="checkbox">
      <label>
        <input id="login_remember_me" name="remember_me" type="checkbox" checked="checked"> 记住我 </label>
    </div>
  </div>
  <div class="modal-footer">
    <div>
      <button type="submit" class="btn btn-primary btn-lg btn-block">登录</button>
    </div>
    <div>
      <div style="width:50%;padding:0;margin:0;float:left;box-sizing:border-box;" align="left">
        <button id="login_lost_btn" type="button" class="btn btn-link">忘记密码</button>
      </div>
      <div style="width:50%;padding:0;margin:0;float:left;box-sizing:border-box;" align="right">
        <button id="login_register_btn" type="button" class="btn btn-link">注册</button>
      </div>
    </div>
    <div> 更多登录方式: <a id="third_party_weixin_connect_link_base" href="/third_party/weixin/open_platform/login/apply_code/?source_url=/">
                                    <img class="img" src="https://cdn.acwing.com/static/web/img/third_party_icons/icon48_wx_logo.png" width="30px" alt="微信图标">
                                </a>
      <a href="/third_party/qq/login/apply_code?source_url=/">
                                    <img class="img" src="https://cdn.acwing.com/static/web/img/third_party_icons/qq.jpg" width="26px" alt="qq图标">
                                </a>
    </div>
  </div>
</form>

POST /user/account/password_forget/

<form class="sign-form" id="lost-form" role="form" action="/user/account/password_forget/" method="post" enctype="multipart/form-data" style="display:none;">
  <input type="hidden" name="csrfmiddlewaretoken" value="wXCsOFKb8FTgVNVd5ksWPQ0qsblNWY7LCOSlmqpKyXpEfaYbk0A0RvdVxU2fdh2x">
  <div class="modal-body">
    <div id="div-lost-msg">
      <div id="icon-lost-msg" class="glyphicon glyphicon-chevron-right"></div>
      <span id="text-lost-msg">请输入绑定的邮箱地址</span>
    </div>
    <input id="lost_email" name="email" class="form-control" type="email" placeholder="邮箱地址" maxlength="254" required="">
  </div>
  <div class="modal-footer">
    <div>
      <button type="submit" id="lost_password_btn" class="btn btn-primary btn-lg btn-block">发送</button>
    </div>
    <div>
      <div style="width:50%;padding:0;margin:0;float:left;box-sizing:border-box;" align="left">
        <button id="lost_login_btn" type="button" class="btn btn-link">登录</button>
      </div>
      <div style="width:50%;padding:0;margin:0;float:left;box-sizing:border-box;" align="right">
        <button id="lost_register_btn" type="button" class="btn btn-link">注册</button>
      </div>
    </div>
  </div>
</form>

POST /user/account/signup/

<form class="sign-form" id="register-form" role="form" action="/user/account/signup/" method="post" enctype="multipart/form-data" style="display:none;">
  <input type="hidden" name="csrfmiddlewaretoken" value="wXCsOFKb8FTgVNVd5ksWPQ0qsblNWY7LCOSlmqpKyXpEfaYbk0A0RvdVxU2fdh2x">
  <div class="modal-body">
    <div id="div-register-msg">
      <div id="icon-register-msg" class="glyphicon glyphicon-chevron-right"></div>
      <span id="text-register-msg">请输入注册信息</span>
    </div>
    <input id="register_username" name="username" class="form-control" type="text" placeholder="用户名" maxlength="30" required="">
    <input id="register_password" name="password" class="form-control" type="password" placeholder="密码" maxlength="16" required="">
    <input id="register_email" name="email" class="form-control" type="email" placeholder="邮箱地址" maxlength="50" required="">
  </div>
  <div class="modal-footer">
    <div>
      <button type="submit" class="btn btn-primary btn-lg btn-block">注册</button>
    </div>
    <div align="right">
      <button id="register_login_btn" type="button" class="btn btn-link">登录</button>
    </div>
  </div>
</form>

Text Content





AcWing
 * 首页
 * 活动
 * 题库
 * 竞赛
 * 应用
 * 更多
   * 题解
   * 分享
   * 商店
   * 问答
   * 吐槽
 * App

 * 登录/注册

题解 AcWing 356. 次小生成树

--------------------------------------------------------------------------------

lwq132lwq
58秒前


次小生成树


定义:

给定一个带边权的图,把图的所有生成树按照权值哦才能高效到大排序,第二小的成为次小生成树。


定理:

对于一张无向图来说,如果存在最小生成树和严格的次小生成树,那么对于任何一颗最小生成树,都存在一棵严格的次小生成树使得两棵树只有一边不同。


方法

这道题我们有两种思路。
1 、我们可以先求出最小生成树,然后在最小生成树里面枚举最小生成树的每一条边删去然后再假设其他的边。
2、
我们先求出最小生成树,然后我们去枚举非树边,然后将这条边加入树中,此时必然形成了一个环,同时从树中删掉一条边(这条边是环上除了我们加的边最大的一条边)使得最终的图还是一棵树。

在这里我们主要讨论方法二怎么实现。
首先我们要利用 KruskalKruskal 求出最小生成树,假设最小生成树的答案为 resres 。
然后我们还要求出加边后这个环上除了我们加的边最大的边,借助上图也就是求 5→65→6 路径上的最大边。这个就要借助 LCALCA 了,具体处理见代码。
遍历所有非树边,维护最小值 ans=min(ans,res+W−Max(V,E))ans=min(ans,res+W−Max(V,E)) ,最终 ansans
即是次小生成树。

/*

    by:lwq132lwq

*/
#include<bits/stdc++.h>
#define IO ios::sync_with_stdio(false);cin.tie(0);
#define ll long long
#define re register
#define il inline
#define lb(x) ((x)&(-x))
#define pb push_back
#define fr first
#define sc second
#define PI pair<int,int>
#define rep(i,a,n) for(register int i=a;i<=n;i++)
#define fep(i,a,n) for(register int i=n;i>=a;i--)
using namespace std;
template <class T> void read(T &x){
    x=0;int f=0;char ch=getchar();
    while(ch<'0'||ch>'9'){f|=(ch=='-');ch=getchar();}
    while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
    x=f?-x:x;return ;
}
bool cmp(int x,int y){return x>y;}
int gcd(int a, int b){return b ? gcd(b,a%b):a;}
int max(int a,int b){if(a>b) return a;else return b;}
int min(int a,int b){if(a<b) return a;else return b;}
int qkpow(int x,int y){int ans=1;while(y){if(y&1) ans*=x;y>>=1;x*=x;}return ans;}
const double eps=1e-6;
const int maxn=1e5+10;
const int inf=0x3f3f3f3f;
struct edge{
    int x,y,w;
    bool used;
    bool operator < (const edge &a) const
    {
        return w<a.w;
    }
}E[300010];
int F[100010],f[100010][20],d1[100010][20],d2[100010][20];
int head[300010],d[100010],t,tot,n,m,cnt;
struct note
{
    int to,nex,dis; 
}e[300010];
void add(int x,int y,int z)
{
    e[++tot]={y,head[x],z};head[x]=tot;
}
int find(int x)
{
    if(x==F[x]) return x;
    return F[x]=find(F[x]);
}
ll kruskal()
{
    for(int i=1;i<=n;i++) F[i]=i;
    sort(E+1,E+1+m);
    ll res=0;
    for(int i=1;i<=m;i++)
    {
        int x=find(E[i].x),y=find(E[i].y),w=E[i].w;
        if(x==y) continue;
        F[x]=y;
        res+=w;
        E[i].used=1;
    }
    return res;
}
void build()
{
    for(int i=1;i<=m;i++)
    {
        if(E[i].used)
        {
            int x=E[i].x,y=E[i].y,w=E[i].w;
            add(x,y,w);add(y,x,w);
        }
    }
}
void bfs()
{
    queue<int>q;q.push(1);d[1]=1;
    while(!q.empty())
    {
        int x=q.front();q.pop();
        for(int i=head[x];i;i=e[i].nex)
        {
            int y=e[i].to,z=e[i].dis;
            if(d[y]) continue;
            d[y]=d[x]+1;
            f[y][0]=x;
            d1[y][0]=z,d2[y][0]=-inf;
            for(int k=1;k<=t;k++)
            {
                int anc=f[y][k-1];
                f[y][k]=f[anc][k-1];
                d1[y][k]=d2[y][k]=-inf;
                int dis[4]={d1[y][k - 1], d2[y][k - 1], d1[anc][k - 1], d2[anc][k - 1]};

                for(int j=0;j<4;j++)
                {
                    int dd=dis[j];
                    if (dd>d1[y][k]) d2[y][k]=d1[y][k],d1[y][k]=dd;
                    else if(dd!=d1[y][k]&&dd>d2[y][k]) d2[y][k]=dd;
                }
            }
            q.push(y);
        }
    }
}
int dis[maxn*2];
int lca(int x,int y,int w)
{
    cnt=0;
    if(d[x]<d[y]) swap(x,y);
    for(int k=t;k>=0;k--)
    if(d[f[x][k]]>=d[y])
    {
        dis[++cnt]=d1[x][k];
        dis[++cnt]=d2[x][k];
        x=f[x][k];
    }
    if(x!=y)
    {
        for(int k=t;k>=0;k--)
        {
            if(f[x][k]!=f[y][k])
            {
                dis[++cnt]=d1[x][k];
                dis[++cnt]=d2[x][k];
                dis[++cnt]=d1[y][k];
                dis[++cnt]=d2[y][k];
                x=f[x][k],y=f[y][k];
            }
        }
        dis[++cnt]=d1[x][0];
        dis[++cnt]=d1[y][0];
        dis[++cnt]=d2[x][0];
        dis[++cnt]=d2[y][0];
    }
    int dis1=-inf,dis2=-inf;
    for(int i=1;i<=cnt;i++)
    {
        int dd=dis[i];
        if(dd>dis1) dis2=dis1,dis1=dd;
        else if(dd!=dis1&&dd>dis2) dis2=dd;
    }
    if(w>dis1) return w-dis1;
    if(w>dis2) return w-dis2;
    return inf;

}
int main()
{
    read(n);read(m);    t=(int)(log(n)/log(2))+1;
    for(int i=1;i<=m;i++)
    {
        int x,y,z;
        read(x);read(y);read(z);
        E[i]={x,y,z,0};
    }
    ll sum=kruskal();
    build();
    bfs();
    ll res=1e18;
    for(int i=1;i<=m;i++)
    {
        if(!E[i].used)
        {
            int x=E[i].x,y=E[i].y,z=E[i].w;
            res=min(res,sum+lca(x,y,z));
        }       
    }
    cout<<res;
    return 0;
}




展开

--------------------------------------------------------------------------------

  赞
  评论
  收藏

--------------------------------------------------------------------------------


0 评论

提交评论

题解 AcWing 877. 扩展欧几里得算法

--------------------------------------------------------------------------------

醉酒夢紅顏
3分钟前


在求俩个数的最大公约数的过程中,可以根据裴蜀定理,通过递归求得俩个数分别乘以任意俩个不为0的系数的结果是这俩个数的最大公约数,递归结束的条件是俩个数中有一个数为0,此时俩个数的最大公约数为那个不为0的数,此时俩个数的系数分别为1,0,在进行递归的过程中,由于是辗转相除,可以认为系数与A,B是绑定在一起的,所以随之辗转相除,俩个数不断进行交换,俩个系数也在不断进行交换


代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>

using namespace std;

int exgcd(int a, int b, int &x, int &y)
{
    if (!b)
    {
        x=1,y=0;
        return a;
    }
    int d=exgcd(b,a%b,y,x);
    y-=a/b*x;
    return d;
}

int main()
{
    int n;
    cin>>n;
    while (n--)
    {
        int a,b,x,y;
        scanf("%d %d",&a,&b);
        exgcd(a,b,x,y);
        printf("%d %d\n",x,y);
    }
    return 0;
}



展开

--------------------------------------------------------------------------------

  赞
  评论
  收藏

--------------------------------------------------------------------------------


0 评论

提交评论

新鲜事 原文

--------------------------------------------------------------------------------

落曦
4分钟前
不定积分 ∫csc3xdx∫csc3⁡xdx 可以通过分部积分法求解。 令 u=cscxu=csc⁡x,dv=csc2xdxdv=csc2⁡xdx,则
du=−cscxcotxdxdu=−csc⁡xcot⁡xdx,v=−cotxv=−cot⁡x。 根据分部积分公式,有:
∫csc3xdx=−cscxcotx+∫cot2xdx=−cscxcotx+∫(csc2x−1)dx=−cscxcotx+∫csc2xdx−∫dx=−cscxcotx−cotx+C=−cotx(cscx+1)+C∫csc3⁡xdx=−csc⁡xcot⁡x+∫cot2⁡xdx=−csc⁡xcot⁡x+∫(csc2⁡x−1)dx=−csc⁡xcot⁡x+∫csc2⁡xdx−∫dx=−csc⁡xcot⁡x−cot⁡x+C=−cot⁡x(csc⁡x+1)+C
其中 CC 为常数。因此,∫csc3xdx=−cotx(cscx+1)+C∫csc3⁡xdx=−cot⁡x(csc⁡x+1)+C。

展开

--------------------------------------------------------------------------------

  赞
  1
  收藏

--------------------------------------------------------------------------------


1 评论

提交评论

--------------------------------------------------------------------------------

落曦   25秒前              回复

左边:

sec2x=1cos2xsec2x=1cos2x

右边:

1+tan2x=1+sin2xcos2x=cos2x+sin2xcos2x=1cos2x1+tan2x=1+sin2xcos2x=cos2x+sin2xcos2x=1cos2x

因此,左边和右边是相等的,因此 sec2x=1+tan2xsec2x=1+tan2x。

--------------------------------------------------------------------------------

查看更多评论
题解 AcWing 4957. 飞机降落

--------------------------------------------------------------------------------

Lisaaaaaa
8分钟前

#include <iostream>
#include <cstring>

using namespace std;

const int N = 15;

struct Plane
{
    int t, d, l;
}P[N];
int T, n;
bool st[N];

bool dfs(int u, int last)
{
    if (u == n) return true;

    for (int i = 0; i < n; i ++ )
    {
        int t = P[i].t, d = P[i].d, l = P[i].l;
        if (!st[i] && t + d >= last) // 最晚降落时间大于等于前一个飞机的降落完成时间
        {
            st[i] = true;
            if(dfs(u + 1, max(last, t) + l)) return true;
            //如果飞机在last之前到达必须要等到last才可以降落
            //如果飞机在last之后到达t就是最靠近左边的时间
            st[i] = false;//恢复现场
        }
    }
    return false;
}

int main()
{
    cin >> T;
    while (T -- )
    {
        cin >> n;
        for (int i = 0; i < n; i ++ )
        {
            int t, d, l;
            cin >> t >> d >> l;
            P[i] = {t, d, l};
        }
        memset(st, 0, sizeof st);
        if (dfs(0, 0)) puts("YES");
        else puts("NO");

    }
    return 0;
}


展开

--------------------------------------------------------------------------------

  赞
  评论
  收藏

--------------------------------------------------------------------------------


0 评论

提交评论

题解 AcWing 4956. 冶炼金属

--------------------------------------------------------------------------------

木村修
11分钟前


思路

有转换率V,能将V个物品O转换成X,下取整,不足V转换不了。
现有多组数据,要求V的最大值和最小值。
多组实验数据,每个数据求出V的范围,最后对所有V的范围求交集,得到V的最大值和最小值。

观察公式,可以得到性质:
B关于V是单调的,所以就可以考虑用二分来做,但要思考有没有二分的性质。
从y总的板书中可以得到:
Vmin = [(A / B 下取整) <= B] 中最大的V
Vmax = [(A / B 下取整) <= B - 1] 中最小的V - 1



--------------------------------------------------------------------------------


C++ 代码

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int get(int a, int b) {
    int l = 1, r = 1e9 + 1;//防止存在b = 0的情况 
    while (l < r) {
        int mid = l + r >> 1;
        if (a / mid <= b) r = mid;
        else l = mid + 1;//左加右减
    }
    return l;
}

int main() {
    int n;
    scanf("%d", &n);
    int v_min = 1, v_max = 1e9;
    while (n -- ) {
        int a, b;
        scanf("%d%d", &a, &b);
        v_min = max(v_min, get(a, b));
        v_max = min(v_max, get(a, b - 1) - 1);
    }

    printf("%d %d\n", v_min, v_max);
    return 0;
}


展开

--------------------------------------------------------------------------------

  1
  评论
  收藏

--------------------------------------------------------------------------------


0 评论

提交评论

题解 AcWing 840. 模拟散列表

--------------------------------------------------------------------------------

ImSoFoolish生不逢时
22分钟前


开散列(拉链法)

#include<bits/stdc++.h>

using namespace std;
const int M = 1e5 + 3, N = 1e5 + 5;
int head[M], ne[N], e[N], tot;

int Hash(int x) {
    return (x % M + M) % M;
}

bool find(int x) {
    int t = Hash(x);
    for (int i = head[t]; i != -1; i = ne[i]) {
        if (e[i] == x)return true;
    }
    return false;
}

void insert(int x) {
    if (find(x))return;
    int t = Hash(x);
    e[++tot] = x;
    ne[tot] = head[t];
    head[t] = tot;
}

int main() {
    int n;
    cin >> n;
    memset(head, -1, sizeof head);
    while (n--) {
        char op;
        int x;
        cin >> op >> x;
        if (op == 'I') {
            insert(x);
        } else if (op == 'Q') {
            if (find(x))cout << "Yes" << endl;
            else cout << "No" << endl;
        }
    }
    return 0;
}



闭散列(开放寻址法)

#include<bits/stdc++.h>

using namespace std;
const int M = 1e5 + 3, N = 1e5 + 5;
const int null = 0x3f3f3f3f;
int h[3 * M]; //一般开3倍空间 

int Hash(int x) {
    return (x % M + M) % M;
}

int find(int x) {
    int t = Hash(x), cnt = 1;
    while (h[t] != x && h[t] != null) {
        t = (t + cnt * cnt) % M; //试探方法可调整
        cnt++;
    }
    return t;
}

void insert(int x) {
    int t = find(x);
    h[t] = x;
}

int main() {
    int n;
    cin >> n;
    memset(h, null, sizeof h);
    while (n--) {
        char op;
        int x;
        cin >> op >> x;
        if (op == 'I') {
            insert(x);
        } else if (op == 'Q') {
            int t = find(x);
            if (h[t] == x)cout << "Yes" << endl;
            else if (h[t] == null)cout << "No" << endl;
        }
    }
    return 0;
}


展开

--------------------------------------------------------------------------------

  赞
  评论
  收藏

--------------------------------------------------------------------------------


0 评论

提交评论

新鲜事 原文

--------------------------------------------------------------------------------

taehyang
23分钟前
AcWing《春季每日一题2023》拼团优惠!https://www.acwing.com/activity/content/introduction/3166/group_buy/144921/

展开

--------------------------------------------------------------------------------

  赞
  评论
  收藏

--------------------------------------------------------------------------------


0 评论

提交评论

新鲜事 原文

--------------------------------------------------------------------------------

GR_7
30分钟前
AcWing《算法基础课》拼团优惠!https://www.acwing.com/activity/content/introduction/11/group_buy/144799/

展开

--------------------------------------------------------------------------------

  赞
  评论
  收藏

--------------------------------------------------------------------------------


0 评论

提交评论

新鲜事 原文

--------------------------------------------------------------------------------

空_571
33分钟前
我找不到正确答案

展开

--------------------------------------------------------------------------------

  赞
  评论
  收藏

--------------------------------------------------------------------------------


0 评论

提交评论

新鲜事 原文

--------------------------------------------------------------------------------

琨琨
35分钟前
LIZHUOZZ

展开

--------------------------------------------------------------------------------

  赞
  评论
  收藏

--------------------------------------------------------------------------------


0 评论

提交评论

你确定删除吗?
取消 删除

--------------------------------------------------------------------------------

© 2018-2023 AcWing 版权所有  |  京ICP备17053197号-1
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing

请输入登录信息
记住我
登录
忘记密码
注册
更多登录方式:

请输入绑定的邮箱地址
发送
登录
注册

请输入注册信息
注册
登录
OK