首页 > 其他分享 >牛客周赛 Round 49 (D~F)

牛客周赛 Round 49 (D~F)

时间:2024-07-01 16:58:04浏览次数:15  
标签:return 49 int long 牛客 solve b2 Round define

嘤嘤不想求异或喵

think:首先l和r的范围有1e18,我们能要到要么是二分(但这题显然和二分无关),所以我们尝试打表找规律.打表发现x是4的倍数,1~x的异或和应该是x,同理其他也是有规律的.

#include <bits/stdc++.h>
#define fi first
#define se second
#define int long long
using namespace std;
typedef pair<int, int> pii;
const int N = 1e6 + 10;

int work(int x) {
    if (x % 4 == 0) return x;
    else if (x % 4 == 1) {
        return 1;
    } else if (x % 4 == 2) {
        int t = x / 4;
        return t * 4 + 3;
    } else return 0;
}
void solve() 
{
    /*这是打表的代码*/
    // int x = 0;
    // for (int i = 1; i <= 1e5; i ++ ) {
    //     x ^= i;
    //     cout << i << ' ' << x << '\n';
    // }
    int l, r;
    cin >> l >> r;
    cout << (work(l - 1) ^ work(r)) << '\n';
}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int _ = 1;
    cin >> _;
    while (_ -- ){
        solve();
    }
    return 0;
}

嘤嘤不想解方程喵 

think:把第一个方程代入第二个后,我们会得到一个二元一次方程.接下来就是分类讨论,如果二次项系数不为零,根据b*b-4*a*c是否大于等于0来判断有几个解.如果二次项系数为0,若一次项系数不为0,有inf个解.一次项系数为0且常数为0则有0个解.

#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define int long long
const int N = 1e6 + 10;
typedef pair<int, int> pii;
typedef long long ll;

void solve(){
        int res;
		ll a1,b1,c1,a2,b2,c2;
		cin>>a1>>b1>>c1>>a2>>b2>>c2;
		__int128 i,j,k,d;
		i=a1*b2;
		j=b1*b2+a2;
		k=c1*b2+c2;
		d=j*j-4*i*k;
		if(i==0){
			if(j==0){
				cout<<(k?"0\n":"INF\n");
			}
			else{
				cout<<"1\n";
			}
		}
		else{
			if(d<0)res=0;
			else if(d==0)res=1;
			else res=2;
			cout<<res<<'\n';
		}
}
 
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int _ = 1;
    cin >> _;
    while (_ -- )
    {
        solve();
    }
    return 0;
}

嘤嘤不想找最小喵

think:a[i] + a[i + 2k] = 2 * a[i + k]这个公式告诉我们,a[i],a[i + k],a[i + 2k]应该是等差数列.然后它要求当前k长度下,所有的i都满足,等价于[1, n - 2 * i], [1 + i, n - i], [1 + 2 * i, n]这的和满足等差数列.所以我们可以用字符串哈希的方法来判断,字符串哈希的技巧是P取131, mod = 2^64(这里可以把数据类型定义成usigned long long刚好满足溢出就取模).

#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define int long long
#define ull unsigned long long
const int N = 1e6 + 10;
const int P = 131;
typedef pair<int, int> pii;

int n, a[N];
ull h[N], p[N];

ull get_h(int l, int r) {
	return h[r] - h[l - 1] * p[r - l + 1];
}

void solve()
{
	cin >> n;
	p[0] = 1;
	for (int i = 1; i <= n; i ++ ) cin >> a[i];	
	for (int i = 1 ;i <= n; i ++ ) {
		h[i] = h[i - 1] * P + a[i];
		p[i] = p[i - 1] * P;
	}

	for (int i = 1; i <= n; i ++ ) {
		ull a = get_h(1, n - 2 * i), b = get_h(1 + i, n - i), c = get_h(1 + 2 * i, n);
		if ((a + c) == 2 * b) {
			cout << i << '\n';
			return ;
		}
	}
}

signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int _ = 1;
	// cin >> _;
	while (_ -- )
	{
		solve();
	}
	return 0;
}

标签:return,49,int,long,牛客,solve,b2,Round,define
From: https://blog.csdn.net/2301_78429186/article/details/140104842

相关文章

  • 代码随想录算法训练营第四十二天 | 1049最后一块石头的重量II 494.目标和 474.一和零
    1049.最后一块石头的重量题目链接文章讲解视频讲解解题思路:  将石头尽量分为相等的两堆,两堆最差即为所求结果  石头的重量就是石头的价值动规五部曲:dp[j]:表示背包容量为j时可以装的石头的总价值递推公式:dp[j]=max(dp[j],dp[j-stones[i]]+stones[i]初始化:均......
  • Codeforces Round 918 G. Bicycles (二维最短路)
    G.Bicycles题意:在一个无向图里你要从1点到达n点,每条路的路径长度是该路的权值乘于你当前的慢度因子。而在每个点上我们都有一个慢度因子可以进行更换,问你到达n点所需要的最短时间。思路:我们很容易想到每次遇到更小的慢度因子我们就要更换,但因为存在你先去绕远路拿更小的慢......
  • protobufjs解析proto消息出错RangeError: index out of range: 2499 + 10 > 2499解决办
    使用websocket通讯传输protobuf消息的时候,decode的时候出错了:RangeError:indexoutofrange:2499+10>2499Error:invalidwiretype4atoffset1986出现这种错误的时候,99%是因为proto里面的消息类型和服务端发送的消息类型不一致导致的。解决这个问题的办法有......
  • 阅读笔记《GB/T28449-2018信息安全技术网络安全等级保护测评过程指南》
    方案编制:测评对象确定、测评指标确定、测评内容确定、工具测试方法确定、测评指导书开发、测评方案编制对每项活动均给出相应的工作流程、主要任务、输出文档及活动中的相关方的职责的规定,每项工作任务均有相应的输入、任务描述和输出产品测评风险:影响系统正常运行、感信息泄露......
  • Codeforces Round 894 (Div. 3) A-E cd 894 div3
    A.GiftCarpet每道题都是伸缩代码框有ac代码请不要漏掉--------------------------题解-----------------------------按先行便然后列再变循环设置jud每满足一个条件就让jud++只有jud==相应值的时候才让其++点击查看代码#include<bits/stdc++.h>usingnamespacestd;ch......
  • Public Round #13 题解
    旋转序列来源:IzbornePripreme2022(CroatianIOI/CEOITeamSelection)Day1,ProblemBhttps://qoj.ac/contest/956/problem/4326两个串之间\(1\)匹配的次数总和为\(k\timesl\),并且共有\(n\)次匹配。于是答案的上界为\(k\timesl\)个球放进\(n\)个盒子,最小化......
  • 牛客周赛 Round 49
    A题按题目输出即可#include<bits/stdc++.h>#defineall(x)(x).begin(),(x).end()#definefifirst#definesesecond#definelowbit(x)(x)&(-x)usingi64=longlong;usingpii=std::pair<int,int>;voidsolve(){i64a,b;std::cin>......
  • 《Programming from the Ground Up》阅读笔记:p1-p18
    《ProgrammingfromtheGroundUp》学习第1天,p1-18总结,总计18页。一、技术总结1.fetch-executecyclep9,TheCPUreadsininstructionsfrommemoryoneatatimeandexecutesthem.Thisisknownasthefetch-executecycle。2.general-purposevsspecial-purpose(......
  • 494.力扣每日一题6/30 Java(三种解法)
    博客主页:音符犹如代码系列专栏:算法练习关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞......
  • 牛客周赛49
    比赛链接:牛客周赛49赛时感受A思路    代码#include<bits/stdc++.h>usingnamespacestd;#definelllonglongconstintN=1e5+10;intmain(){lla,b;cin>>a>>b;cout<<a-b*11<<endl;return0;}B思路......