首页 > 编程语言 >2024牛客寒假算法基础集训营6

2024牛客寒假算法基础集训营6

时间:2024-02-23 20:11:21浏览次数:34  
标签:std return int long 2024 牛客 solve 集训营 define

2024牛客寒假算法基础集训营6

比赛链接

打一半就收拾行李了,不想开学呜呜呜(应该是lzgg出的题)

A.宇宙的终结

思路

数据不大才100,所以模拟完全可以过去

Code

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define all(x) x.begin()+1,x.end()
std::vector<int> a;
bool prime(int x){
	if(x<2){
		return false;
	}
	if(x==2)
		return true;
	for(int i=2;i<=sqrt(x);i++){
		if(x%i==0){
			return false;
		}
	}
	return true;
}
void init(){
	for(int i=1;i<=100;i++){
		if(prime(i)){
			a.push_back(i);
		}
	}

}
void solve(){
	int l,r;
	cin>>l>>r;
	// if(r<42||l>42) cout<<-1<<endl;
	if(r<30){
		cout<<-1<<endl;
		return ;
	}
	for(int i=l;i<=r;i++){
		for(int j=0;j<a.size();j++){
			if(i%a[j]==0){
				for(int k=0;k<a.size();k++){
					if(a[j]!=a[k]){
						if((i/a[j])%a[k]==0){
							if(prime(i/a[j]/a[k])&&(i/a[j]/a[k])!=a[j]&&(i/a[j]/a[k])!=a[k]){
								cout<<i<<endl;
								return ;
							}
						}
					}
				}
			}
		}
	}
	cout<<-1<<endl;
	
}

signed main(){
	ios::sync_with_stdio(false); cin.tie(nullptr);
	int t=1;
	// cin>>t;
	init();

	while(t--){
		solve();
	}
	return 0;

}

B.爱恨的纠葛

思路

之前在cf也遇到过一个类似的问题,但他是有选择的让总差值最大传送门,这个题就比较简单了,直接让其中一对最小就可以了,这里我们就可以二分处理一下,但是不能只处理二分得到的数字,他的两边也需要处理一下。

Code

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define all(x) x.begin()+1,x.end()
const int N=1e5+10;
int a[N],b[N];


void solve() {
    int n;
    cin>>n;
    int ans = 1e18;
    for(int i=1; i<=n; ++i) cin>>a[i];
    for(int i=1; i<=n; ++i) cin>>b[i];
    sort(a+1, a+n+1);
     
    int i1, i2;
    for(int i=1; i<=n; ++i)
    {
        int x = lower_bound(a+1, a+n+1, b[i]) - a;
        if(abs(a[x]-b[i])<ans) {
            i1 = i, i2 = x;
            ans = abs(a[x]-b[i]);
        }
        if(abs(a[x-1]-b[i])<ans) {
            i1 = i, i2 = x-1;
            ans = abs(a[x-1]-b[i]);
        }
    }
    swap(a[i1], a[i2]);
    for(int i=1; i<=n; ++i) {
        cout<<a[i]<<' ';
    }
}

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

}

D.友谊的套路

思路

概率问题,要想出现让二追三,前四场必须是负负胜胜

Code

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define all(x) x.begin()+1,x.end()


void solve(){
    double p;
    cin>>p;
    double ans=(1.0-p)*(1.0-p)*p*p;
    printf("%.6f\n",ans);
    return ;
    
    
}

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

}

E.未来的预言

思路

一个模拟而已,但我犯了大忌,我自认为一定是十场以内了,很明显这是不对的,赛时想当然了,大忌啊

Code

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define all(x) x.begin()+1,x.end()

void solve(){
    string s;
    cin>>s;
    // int x=s[s.size()-1]-'0';
    string s1="";
    for(int i=2;i<s.size();i++){
        s1+=s[i];
    }
    int x=0;
    for(int i=0;i<s1.size();i++){
        x=x*10+(s1[i]-'0');
        
    }
    // cout<<x<<endl;
    
    int ans1=0;
    int ans2=0;
    int ans=0;

    string s2;
    cin>>s2;
    for(int i=0;i<s2.size();i++){
        char str=s2[i];
        
        ans++;

        if(str=='R'){
            ans1++;
            if(ans1==(x+1)/2){
                // cout<<ans<<endl;

                cout<<"kou!"<<endl;
                cout<<ans<<endl;
                return ;
            }
        }
        else if(str=='P'){
            ans2++;
            if(ans2==(x+1)/2){
                // cout<<ans<<endl;
                cout<<"yukari!"<<endl;
                cout<<ans<<endl;
                return ;
            }
        }
    }
    // cout<<ans<<endl;
    
    cout<<"to be continued."<<endl;
    cout<<ans<<endl;
    return ;
    
}

signed main(){

    int t=1;
    while(t--){
        solve();
    }
    return 0;
}

C.心绪的解剖

思路:

我们可以预处理一下,我们可以打表发现小于1e9的斐波那契数列长度其实不大,所以我们预处理一下就好了

Code

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define all(x) x.begin()+1,x.end()
const int N=1e5+10;
int l=0;

struct node
{
    int a,b,c;

};
int f[N];
std::map<int, int> mp;
std::map<int, node> mp1;

void chuli(){
    f[1]=0;
    f[2]=1;
    l=2;

    for(int i=3;i<=N;i++){
        f[i]=f[i-1]+f[i-2];

        l++;
        if(f[i]>=1e9){
            return ;
            
        }
    }

}

void init(){
    chuli();
    for(int i=0;i<l;i++){
        for(int j=0;j<l;j++){
            for(int k=0;k<l;k++){
                mp[f[i]+f[j]+f[k]]++;
                mp1[f[i]+f[j]+f[k]]={f[i],f[j],f[k]};

            }   
        }
    }
}

void solve(){
    int n;
    cin>>n;
    
    if(mp[n]){
        cout<<mp1[n].a<<" "<<mp1[n].b<<" "<<mp1[n].c<<endl;
        return ;
    }
    else{
        cout<<-1<<endl;
        
    }
       
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    init();

    int t=1;
    cin>>t;

    while(t--){
        solve();
    }
    return 0;

}

I.时空的交织

思路

前缀和+数学问题

Code

//暂时没有写,开学再补

标签:std,return,int,long,2024,牛客,solve,集训营,define
From: https://www.cnblogs.com/du463/p/18030297

相关文章

  • 20240223【省选】模拟
    挂30分,还有40分不好说。T2挂的10分应该是字符串常数大,以及那个求LCA珂以优化掉但我人傻没搞。T3的20分就是纯粹脑抽。以后少用stringT1结论题,想错了以为很简单,实际上也很简单,但是我菜。设\(f(x)\)为\(x\)的期望质量,打表使用大眼观察法猜不出这个性质:如果\(x\)为一些质数......
  • 2024牛客寒假算法基础集训营6
    A.宇宙的终结Code(伪代码):voidsolve(){intleft,right;cin>>left>>right;autocheck1=[&](intn){for(inti=2;i<=sqrt(n);i++){if(n%i==0){returnfalse;}......
  • 清除缓存解决viewBinding不生效没提示,+ 新手,android stdio,kotlin,viewBinding笔记,2024
    我的问题是缓存导致的,文件->清除缓存->清楚并重启头一次用,我也不知道为什么是缓存问题。官方文档链接:https://developer.android.com/topic/libraries/view-binding?hl=zh-cn官方博客链接:https://medium.com/androiddevelopers/use-view-binding-to-replace-findviewbyid-c......
  • 『周记』2024第六到八周杂记
    『周记』2024第六到八周杂记 总结这段时间的主旋律就是钩针……说好了控制又完全控制不住,新拥有了两件吊带,酒红色的耗时很久,小蝴蝶倒是晚上起针,第二天再过几小时就完成了。虽然很喜欢很有成就感,进步神速也很欣喜,伴随着看的是岚少的游戏实况,也很放松,可是这样纯放假的生活多过几......
  • 2024面试题汇总
    如可判断对象是不是空对象?1.1可以使用Object.keys(obj).length===0,判断出来没有属性1.2JSON.stringify(obj)===”{}“为true,则代表空属性1.3Object.getOwnPropertyNames获取到对象中的属性名,存到一个数组中,返回数组对象.当为空时也代表属性为空。......
  • 20240219比赛总结
    T1素数https://gxyzoj.com/d/hzoj/p/3598先预处理出32767以下的质数,再用双指针求解#include<cstdio>usingnamespacestd;intp[32767],m,n,ans,x;boolvis[32768];voidprime(){ for(inti=2;i<=32767;i++) { if(!vis[i])p[++m]=i; for(intj=1;i*p[j]<=32767;j+......
  • 20240222比赛总结
    T1打赌https://gxyzoj.com/d/hzoj/p/3642一道大模拟,容易发现,连续的4个数的和为14,这些直接求和,其余暴力处理即可代码:#include<cstdio>#definelllonglongusingnamespacestd;intr,c,x[10]={1,6,4,3,2,5};llans;voidLeft(){ inta=x[0],b=x[1],c=x[2],d=x[3]; x[......
  • 20240221比赛总结
    T1排序https://gxyzoj.com/d/hzoj/p/3610根据代数的内容,容易得到:若\(a\geb\gec\ged\),则有\(ab-cd\geac-bd\gead-bc\)所以,只需要前2n个一大一小搭配,后2n个两两搭配,即为答案代码:#include<cstdio>#include<algorithm>#defineullunsignedlonglongusingnamespaces......
  • 2024-02-22-物联网系统编程(3-进程)
    3.进程3.1进程概述3.1.1进程的定义程序:存放在存储介质上的可执行文件进程:程序的执行实例,包括程序计数器、寄存器和变量的当前值程序是静态的,进程是动态的。程序是一些执行的有序集合,而进程是程序执行的过程;进程状态是变化的,有创建、调度和消亡。在linux系统中,进程是管理事......
  • AtCoder WTF 2019 B Multiple of Nine/南外集训 2024.2.23 T1
    给定\(q\)个区间\(\{[l_i,r_i]\}\),计算满足条件的长度为\(n\)的十进制数码串\(S\)的个数\(\bmod10^9+7\):\(\foralli\in[1,q],num(S[l_i,r_i])\equiv0\pmod9\)。其中\(num(T)\)表示数码串\(T\)代表的整数,\(T[a,b]\)表示子串\(T_aT_{a+1}\dotsT_b\)......