首页 > 其他分享 >河南萌新联赛2024第(一)场:河南农业大学

河南萌新联赛2024第(一)场:河南农业大学

时间:2024-07-18 10:07:31浏览次数:14  
标签:https int 河南 long 2024 -- 萌新 ans mod

1.D-小蓝的二进制询问

原题链接:

https://ac.nowcoder.com/acm/contest/86639/D

我们列举一些二进制数,发现在第一位永远是0 1的循环,第二位是0 0 1 1的循环。。。第n位也是如此,所以可以得出每位上的循环节是2k ,且前一半的数都是0。每次在计算某数时的1的总个数可以计算他是循环节的几倍,乘以循环节的一半,再加上余数减去前面的0个数后的数,所得即所求。

 

查看代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 4e5 + 7;
const int mod = 998244353;
int f(int x, int k)
{
    int y = 1ll << (k );//这里一定要把1强制类型转换,不然会有误差
    int ok = y / 2;
    x++;//加上0这个数,方便算倍数
    int res=x/y*ok;
    int yu = x % y;
    yu -= ok;
    if (yu > 0)
        res += yu;
    return res;
}
void solve()
{
    int l, r;
    cin >> l >> r;
    int ans = 0;
    for (int i = 62; i >= 1; i--)
    {//枚举每个数位
        int p = (f(r, i) % mod - f(l - 1, i) % mod + mod) % mod;
        ans = (ans + p) % mod;
    }
    cout << ans << endl;
}
signed main() {
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int t;
    cin >> t;
    while (t--)
        solve();
    return 0;
}

2.C-有大家喜欢的零食么

原题链接:

https://ac.nowcoder.com/acm/contest/86639/C

在此推荐一个大佬博客:https://blog.csdn.net/u011815404/article/details/84260940

二分图最大匹配匈牙利算法模板题

查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
int n;
vector<int> G[10001];
int sign[100000],jie[100000];
bool dfs(int x)
{
    for(int i=0;i<G[x].size();i++)
    {
        int f=G[x][i];
        if(!sign[f])
        {
            sign[f]=1;
            if(jie[f]==0||dfs(jie[f]))
            {
                jie[f]=x;
                return true;
            }
        }
    }
    return false;
}
signed main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int t;
        cin>>t;
        while(t--)
        {
            int x;
            cin>>x;
            G[i].push_back(x);
        }
    }
    int ans=0;
    for(int i=1;i<=n;i++)
    {
        memset(sign,0,sizeof sign);
        if(dfs(i))ans++;
    }
    if(ans==n)cout<<"Yes";
    else
    {
        cout<<"No"<<endl;
        cout<<n-ans;
    }
    return 0;
}

标签:https,int,河南,long,2024,--,萌新,ans,mod
From: https://www.cnblogs.com/violet-hty/p/18308281

相关文章

  • 20240718二分图
    一.基础概念1.定义:如果一个图的所有顶点可以被分成两个集合U和V,使得每条边连接的两个顶点都分别属于两个不同的集合,那么这个图就是一个二分图(BipartiteGraph)。2.性质:每个偶环都是二分图如果一个二分图中存在奇环,则它不是二分图。二.霍尔定理前言:在hloj上有这个内容,不知......
  • 河南萌新联赛2024第(一)场 补题报告
    小蓝的二进制询问找规律,可以发现把从0开始的十进制数字转化为二进制。每一个二进制位有0或1两种状态。从低到高的第一位以2为周期,第二位以4为周期,第三位以8为周期……也就是说第n位以2^{n}为周期。每个周期都是前一半是0,后一半是1。举例:000001010011100……#inclu......
  • 2024.7.17
    springboothivejdk17更换成了jdk1.8pom.xml测试配置和hive连接的依赖<dependency><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId><version>5.7.2</......
  • 36岁,大龄剩男,聊聊2024的上半年......
    不知道我在等什么,也不知道这样等了多久,相信看到这句话的你,可能也是一头雾水吧!还是以往的风格写到哪算哪,写东西真的是看感觉和心情都具备,写出来的东西才更有灵性,或者说更容易引起共鸣吧!我在逃避?可以这么说,但也不完全是,在一部分事情开始收尾的时候,情绪脑就占据了主导地位,就是想......
  • 河南萌新联赛2024第(一)场
    个人感觉质量很不错的一套题,难度适中很适合我这种小白去做。不过由于在下能力有限,本文只会讲我通过的那些题。在难度上AHIK--FG--CB,接下来我会按这个难度顺序讲解。A 造数我们模拟一下它从n到0的过程,要让n变小,肯定是在n>2的时候不断向下除以2,我们假设一个数4到9,正着来就是*2......
  • 河南萌新联赛2024第(一)场:河南农业大学
    河南萌新联赛2024第(一)场:河南农业大学A-造数_河南萌新联赛2024第(一)场:河南农业大学(nowcoder.com)思路2的二进制为10,对于任意一个数,如13,其二进制为1101,可由10\(\rightarrow\)100\(\rightarrow\)110\(\rightarrow\)1100\(\rightarrow\)1101,即+2,×2,+2,×2,+1,即按照二......
  • 2024 (ICPC) Jiangxi Provincial Contest -- Official Contest
    2024(ICPC)JiangxiProvincialContest--OfficialContestA.MaliangLearningPainting题意:a+b+cvoidsolve(){lla,b,c;cin>>a>>b>>c;llans=a+b+c;cout<<ans<<'\n';}C.Lia......
  • 河南萌新联赛2024第(一)场:河南农业大学
    造数\(25-24-12-6-3-2-0\)\(11-10-5-4-2-0\)1.观察上面的例子可以发现,每个数如果是偶数直接除二,如果是奇数就减一,这样得到的次数最少#include<bits/stdc++.h>#defineintlonglong#defineendl'\n'usingnamespacestd;typedefpair<int,int>pii;#definexfirst#de......
  • 2024.7.17
    2024.7.17【我们必须知道,我们必将知道】Wednesday六月十二P5999[CEOI2016]kangaroo//2024.7.17//bywhite_ice//P5999[CEOI2016]kangaroo#include<bits/stdc++.h>usingnamespacestd;#defineitnlonglong#defineintlonglongconstexprintoo=4003;co......
  • 河南萌新联赛2024第(一)场:河南农业大学
    A造数思路:将n看成二进制,倒着操作将n变为0即可赛时的想法也是看成二进制,正着从0加到n,乘2就是向前移位,加1就是把0变1,加2就是添一个1...(还是倒着好想些)voidsolve(){intn;cin>>n;if(n==0){cout<<0;return;}if(n==1......