首页 > 其他分享 >河南萌新联赛2024第(一)场 补题报告

河南萌新联赛2024第(一)场 补题报告

时间:2024-07-18 09:00:34浏览次数:20  
标签:cnt const 周期 int long 2024 solve 补题 萌新

小蓝的二进制询问

image


找规律,可以发现 把从0开始的十进制数字转化为二进制。每一个二进制位有0或1两种状态。从低到高的第一位以2为周期,第二位以4为周期,第三位以8为周期……也就是说第n位以 2^{n} 为周期。每个周期都是前一半是0,后一半是1 。


举例:
000 001 010 011 100 ……

#include <bits/stdc++.h>
using namespace std;
#define int long long 
const int N=100;
long long f[N][N];
int a[N];
int k;
int mod = 998244353;
int c;
int ans = 0;
int get(int x)   //计算x的二进制长度
{
	int cnt = 0;
	while(x)
	{
		x/=2;
		cnt++;
	}
	return cnt;
}
int solve(long long x)
{
	ans = 0 ;
    int cnt = get(x);
    x++;     //因为周期是从0开始算的

    for(int i=1;i<=cnt;i++)
    {
    	int tt = pow(2,i);      //第i位的周期
    	ans += (x/tt)*(tt/2);   //0~x 第i位1的个数
    	ans %= mod;
    	ans += max(0ll,x%tt-tt/2);  //周期内仔细判断
    	ans %= mod;
    }
    return ans;
}

signed main()
{
    int t, l, r;
    cin >> t;
    while(t--)
    {
        cin >> l >> r;
        int ans = (solve(r) - solve(l-1)+mod) % mod;    //差分求区间
        cout << ans << endl;
    }
    return 0;
}

旅途的终点


注意!是按既定的路线旅游的!所以不能简单地通过排序找出k个最大的点。
正解:维护一个元素从小到大的大小为k的优先队列,从1~n按顺序放入数。当队列满时,从队首弹出最小的元素,放入接下来的元素。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define int ll
typedef pair<int,int> PII;
typedef unsigned long long ull;
const int ddx[8]={-1, 0, 1, 0, 1, -1, 1, -1};
const int ddy[8]={0, 1, 0, -1, -1, 1, 1, -1};
const int INF=0x3f3f3f3f;
const int N=6e5+10;
int n,m,k;
int a[N];
int sum = 0;
void solve()
{
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++) cin>>a[i];
	priority_queue<int,vector<int>,greater<int>>q;
	for(int i=1;i<=n;i++)
	{
		q.push(a[i]);
		if(q.size()>k)
		{
			sum+=q.top();
			q.pop();
		}
		if(sum>=m)
		{
			cout<<i-1<<endl;
			return;
		}
	}
	cout<<n<<endl;
	return;
}
signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int t=1;
    //cin >> t;
    while(t--) {
        solve();
    }
    return 0;
}

标签:cnt,const,周期,int,long,2024,solve,补题,萌新
From: https://www.cnblogs.com/SonyaXu/p/18308652

相关文章

  • 码蹄杯国赛补题
    由于今天脑子没完全恢复,打算补一下题目清醒清醒加上寝室里无聊打算补补之前的题过过脑子提高一下A.MC0340矩阵虫题意:给你一个n构成n*n矩阵每一行数字依次为1,2,3,4...Code:#include<bits/stdc++.h>usingnamespacestd;intmain(){intn;cin......
  • 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......
  • 2024.7.17 鲜花
    極私的極彩色アンサー-TOGENASHITOGEARI——fromK*(K8)我怎么每天早上补昨天没写完的鲜花。算了,放到今天吧。书接上回发现2开了,和幂次没关系了。发现有\(b-a+1\)个数,猜到是区间。考虑\(p\)和分布位置,可知是质数。线性筛即可。910.值域偏大,可以用Miller_......