首页 > 其他分享 >2023寒假训练week4

2023寒假训练week4

时间:2023-02-12 15:12:48浏览次数:50  
标签:const int ll cin long 寒假 2023 using week4

Day1

[蓝桥杯 2021 省 B2] 特殊年份

签到题目。按照题目要求来就行

#include<bits/stdc++.h>
using namespace std;
const int N=5;
int main()
{
	int ans=0;
	for(int j=0;j<5;j++)
	{
		int t;
		cin>>t;
		int a[N];	
		for(int i=1;i<=4;i++)
		{
			a[i]=t%10;
			t/=10;
		}
		if(a[2]==a[4]&&a[1]-1==a[3])
		{
			ans++;
		}
	}
	cout<<ans<<endl;
} 

[蓝桥杯 2021 省 AB2] 小平方

num要用double

#include<bits/stdc++.h>
using namespace std;
const int N=5;
typedef long long ll;
int main()
{
	ll n;
	cin>>n;
	double num;
	num=n;
	num/=2; 
	int ans=0;
	for(int i=1;i<n;i++)
	{
		int yu;
		yu=i*i%n;
//		cout<<yu<<" ";
		if(yu<num)
		{
			ans++;
		}
	}
	cout<<ans<<endl;
} 

[蓝桥杯 2021 省 AB2] 完全平方数

t了三个数据,得了70分
如果为偶数的话就最小质因数
如果为奇数的话就乘以一个最小的质因数

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;

int main()
{
    LL n;
    cin >> n;
    
    LL ans = 1;
    for (int i=2;i*i<= n;i++)
        if(n% i==0)
        {
            int k=0;
            while(n%i==0)
	  {
	    n/=i;
	    k++;
				
	  }
            if(k&1==1) ans*= i;//盘点k是否为奇数 
        }
    
    if(n>1) ans*=n;
    cout << ans<<endl;        
    return 0;
}

[蓝桥杯 2021 省 AB] 砝码称重

t了五个数据,得了50分
用dfs纯纯暴力枚举所有情况

#include <bits/stdc++.h>
using namespace std;

const int N = 100005;

int n;
int a[N];
bool flag[N];
int ans;

void dfs(int idx,int left,int right)
{
    if(idx == n)
    {
        int p = abs(left - right);
        if(!flag[p]) ans++;
        flag[p] = true;//找到一个数,标记 
        return;
    }
    dfs(idx + 1,left,right); 
    dfs(idx + 1,left + a[idx],right);//左边放 
    dfs(idx + 1,left,right + a[idx]);//右边放 
}

int main()
{
    flag[0] = true;//两边不放砝码or左右两边重量相同 
    cin >> n;
    for(int i = 0 ; i < n ; i++) cin >> a[i];
    dfs(0,0,0);
    cout << ans;
    return 0;
}#include <bits/stdc++.h>
using namespace std;

const int N = 100005;

int n;
int a[N];
bool flag[N];
int ans;

void dfs(int idx,int left,int right)
{
    if(idx == n)
    {
        int p = abs(left - right);
        if(!flag[p]) ans++;
        flag[p] = true;//找到一个数,标记 
        return;
    }
    dfs(idx + 1,left,right); 
    dfs(idx + 1,left + a[idx],right);//左边放 
    dfs(idx + 1,left,right + a[idx]);//右边放 
}

int main()
{
    flag[0] = true;//两边不放砝码or左右两边重量相同 
    cin >> n;
    for(int i = 0 ; i < n ; i++) cin >> a[i];
    dfs(0,0,0);
    cout << ans;
    return 0;
}

[蓝桥杯 2021 省 B] 时间显示

#include<bits/stdc++.h>
using namespace std;
const int D=24;
const int H=60;
const int M=60;
const int S=1000;
typedef long long ll;

int main()
{
	ll ms;
	cin>>ms;
	//将ms化成s
	ll s=ms/S;
	s%=D*H*M;//防止过了很多天
	
	long long int h=s/3600;
	//将s转化成h
	int m=s/H%H;
	s=s%H;	
	
	if(h<10) cout<<0<<h;
	else cout<<h;
	cout<<":";
	if(m<10) cout<<0<<m;
	else cout<<m;
	cout<<":"; 
	if(s<10) cout<<0<<s;
	else cout<<s;
} 

Day3

SMU Winter 2023 Round #11 (Div.2)

A - BCD


n可以用多少个盒子装,签到题

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
	int n,k;
	cin>>n>>k;
	if(n%k) cout<<n/k+1<<endl;
	else cout<<n/k<<endl;
	return 0; 
} 

B - Poku's Vacation


分情况讨论,每级台阶比前一级严格大,所以至少公差为1

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

int main()
{
	int t;
	cin>>t;
	while(t--){
		int n;
		cin>>n;
		if(n==1){
		 	cout<<1<<endl;	
		 	continue;
		}else{
			for(int i=2;;i++){
				if((i*(i+1))/2==n){//等差数列求和,算出建到第i级台阶需要多少的砖头
					cout<<i<<endl;
					break;
				}
				else if((i*(i+1))/2>n){
					cout<<i-1<<endl;
					break;
				}
			}
		} 	
	}
	return 0; 
} 

C-Dualites in Pain - The Beginning


易知,当讲座数目最大的那门课程的讲座数目与第二大的课程讲座数目之差大于2,那么一定会在最后连续

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10;
typedef long long ll;
int a[N];

int main()
{
/*
	int t;
	cin>>t;
	while(t--){
	*/
		int n;
		cin>>n;
		for(int i=0;i<n;i++)
		{
			cin>>a[i];
		}
		sort(a,a+n);
		if(a[n-1]-a[n-2]>=2){
			cout<<"NO"<<endl;
		}
		else{
			cout<<"YES"<<endl;
		}
//	}
	return 0; 
} 

D-Elder Ning


求区间的交集中有几个数

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
typedef long long ll;
int r,l;

int main()
{
	/*
	int t;
	cin>>t;
	while(t--){
	*/
		int n,m;
		cin>>n>>m;
		int lmax=0,rmin=1e5+1;
		for(int i=1;i<=m;i++)
		{
			cin>>l>>r;
			lmax=max(lmax,l);//找到最大的左区间
			rmin=min(rmin,r);//找到最小的右区间
		}
		if(lmax>rmin)//空集
		{
			cout<<0<<endl;
		}
		else{//非空,算个数
			cout<<rmin-lmax+1<<endl; 
		}
//	}
	return 0; 
} 

E - Hostel Cleaning

暴力t掉。

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
typedef long long ll;
int a[N];
bool f[N];
int main()
{
/*
	int t;
	cin>>t;
	while(t--){
	*/
		ll n,k;
		cin>>n>>k;
		for(ll i=1;i<=n;i++) cin>>a[i]; 
		ll smin=N; 
		for(ll i=1;i<=n;i++){
			ll sum=a[i];
			for(ll y=1;y<i;y++) f[y]=true;//将i前面的都标记 
			for(ll j=i+k;;j+=k){
				if(j>n){
					if(f[j-n]==false){//超过初始位置
						smin=min(smin,sum);
						bool f[N];//恢复原装 
						break;//结束 
					}
					else	sum+=a[j-n];//没超过初始位置,还没扫完房间。 
				}
				else	sum+=a[j];
			}
		}
		cout<<smin<<endl; 
//	}
	return 0; 
} 

F-No Internet IPC!

剪枝+分类讨论

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10;
typedef long long ll;
int a[N];
int main()
{

	int t;
	cin>>t;
	while(t--){
		int n,k;
		cin>>n>>k;
		if(k==1){//当数据线只有一条时
			cout<<n-1<<endl;
			continue; 
		}
		if(n==1){//当需要更新的电脑只有一台时
			cout<<0<<endl;
			continue;
		}
		if(n==2){//当需要更新的电脑有两台时
			cout<<1<<endl;
			continue;
		}
		int now=2,ti=1;
		while(1){
			if(now>=k){//已经完成更新的电脑台数大于数据线条数。k台能连接
				now+=k;
				ti++; //时间增加一小时
			}else{//否则,每台都连接数据线
				now*=2;
				ti++;
			}
			if(now>=n){//所有电脑均完成更新
				cout<<ti<<endl;
				break;
			}
		}
	}
	return 0; 
} 

Day5

A - KK 画猪

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
typedef long long ll;
int a[N];
bool f[N];
int main()
{
	string s;
	cin>>s;
	printf("  (\\____/)\n");
	printf("  / @__@ \\\n");
	printf(" (  (oo)  )\n");
	printf("  `-.~~.-'\n");
	printf("   /    \\\n");
	printf(" @/      \\_\n");
	printf("(/ /    \\ \\)\n");
	printf(" WW`----'WW\n");
	return 0; 
} 

B - KK 学几何

#include<bits/stdc++.h>
using namespace std;
//const int N=2e5+10;
const double pi=3;
typedef long long ll;
//int a[N];
//bool f[N];
int main()
{
	ll n;
	cin>>n;
	double sum=0;
	while(n--)
	{
		int t;
		cin>>t;
		if(t==1)
		{
			double r;
			cin>>r;
			sum+=pi*r*r;
		}
		if(t==2)
		{
			double l,h;
			cin>>l>>h;
			sum=sum+(l*h)/2.0;
		}
		if(t==3)
		{
			double L,W;
			cin>>L>>W;
			sum=sum+L*W;
		}
	}
	printf("%.1lf",sum);
	return 0; 
} 

C - KK 算日期

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
//const double pi=3;
typedef long long ll;
//map<string,int>bm;
int a[N];
//vector<int>a;
//bool f[N];

int main()
{
	ll n;
	cin>>n;
	while(n--)
	{
		int y,year,flag,n;
	    cin>>y>>n;
		//不存在,公元元年的次年是公元2年
	    if(y+n<=0)
	    {
	    	year=abs(y+n)+1;
		}
		else{
			year=y+n;
		}
	    if( (year%4== 0) && ( (year%100)!=0 ) || year%400==0 ){  //能被4整除,但不能被100整除。或者能被400整除,flag=1
	        flag=1;
	    } else{    //不是闰年,flag=0
	        flag=0;
	    }
	    if(flag==1){      
	        printf("29\n");
	    }else{
	        printf("28\n");
	    }
			
	}
	return 0; 
} 

G. KK 看跳舞

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
//const double pi=3;
typedef long long ll;
//map<string,int>bm;
int a[N];
//bool f[N];

int main()
{
	int _;
	cin>>_;
	while(_--)
	{
		int n;
		cin>>n;
		for(int i=0;i<n;i++)
		{
			cin>>a[i];
		}
		if(n==1||n==2||n==3)
		{
			cout<<"YES"<<endl;
		}
		else
		{
			int f=0; 
			for(int i=0;i<n;i++)
			{
				if(i==0)
				{
					if(abs(a[0]-a[1])!=1&&abs(a[0]-a[n-1])!=1)
					{
						cout<<"NO"<<endl;
						f=1;
						break;
					}
					continue;
				}
				if(i==n-1)
				{
					if(abs(a[n-1]-a[n-2])!=1&&abs(a[n-1]-a[0])!=1)
					{
						cout<<"NO"<<endl;
						f=1;
						break;
					}
					continue;
				}
				if(abs(a[i]-a[i-1]!=1&&a[i]-a[i+1])!=1)
				{
					cout<<"NO"<<endl;
					f=1;
					break;
				}
			}
			if(f!=1)
			{
				cout<<"YES"<<endl;
			}
		}
	}
	return 0;
}

H. KK 与十佳

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
//const double pi=3;
typedef long long ll;
//map<string,int>bm;
//int a[N];
vector<int>a;
//bool f[N];

int findRemoveIndex(vector<int>nums) {
        int negativeCount = 0;
        for (int i = 0; i < nums.size(); i++) {
            if (nums[i] < 0) {
                negativeCount++;
            }
        }
        int tempIndex = 0;
        if ((negativeCount & 1) == 1) {
            for (int i = 0; i < nums.size(); i++) {

                if (nums[i] < 0) {
                    if (nums[tempIndex] >= 0 || nums[i] > nums[tempIndex]) {
                        tempIndex = i;
                    }

                }

            }
            return tempIndex;
        } else {
            if (nums.size() == negativeCount) {
                for (int i = 0; i < nums.size(); i++) {
                    if (nums[i] < nums[tempIndex]) {
                        tempIndex = i;
                    }
                }
                return tempIndex;
            };

            for (int i = 0; i < nums.size(); i++) {

                if (nums[i] >= 0) {
                    if (nums[tempIndex] < 0 || nums[i] < nums[tempIndex]) {
                        tempIndex = i;
                    }
                }
            }
            return tempIndex;
        }
    }

int main()
{
	/*
	int _;
	cin>>_;
	while(_--)
	{
	*/
		int n;
		cin>>n;
		for(int i=0;i<n;i++)
		{
			int x;
			cin>>x;
			a.push_back(x);
		}
		cout<<a[findRemoveIndex(a)]<<endl;
//	}
	return 0;
}

I. KK 买股票

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
//const double pi=3;
typedef long long ll;
//map<string,int>bm;
int arr[N];
//bool f[N];
int main()
{
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>arr[i];
	}
	int min = arr[0];
	int maxGrep = arr[1] - arr[0];
	   
	for (int i = 1; i < n; i++) {
        
	    if( arr[i] < min ) min = arr[i];
	    if(arr[i] - min > maxGrep){
	        maxGrep = arr[i] - min;
	    } 
	}
	cout<<maxGrep<<endl;
	return 0;
}

J. KK与英语

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
//const double pi=3;
typedef long long ll;
//map<string,int>bm;
int a[N];
//vector<int>a;
//bool f[N];

int main()
{
	string str;
	getline(cin,str);
//	cout<<str<<endl;
	cout<<str[0];
	for (int i = 1; i < str.size(); i++) {
        if (str[i] == 'i' && str[i + 1] == 's' && str[i - 1] == ' ' && str[i + 2] == ' ') {
            cout << "was";
            i++;
            continue;
        }
        cout << str[i];
    }
/*	cout<<s<<endl;
	reverse(s.begin(),s.end());
	int ans=0;
	for(int i=0;i<s.size();i++)
	{
		if(s[i]!='-')
		{
			
			break;
		}
		ans++; 
	}
	reverse(s.begin(),s.end());
*/
	return 0;
}

Day6

[蓝桥杯 2019 省 B] 特别数的和

#include <bits/stdc++.h>
using namespace std;

bool Is(int x){
    int t;
    while(x){
        t=x%10;
        if (t== 2||t==0||t==9||t==1) return true;
        else x/=10;
    }
    return false;
}
int main(){
    int n;
    cin>>n;
    int sum=0;
    for(int i= 1;i<=n;++ i){
        if(Is(i))
            sum +=i;
    }
    cout<<sum<<endl;
    return 0 ;
}

[蓝桥杯 2019 省 AB] 完全二叉树的权值

#include<bits/stdc++.h>
using namespace std;

int a[100005];
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++) 
		cin>>a[i];
    
	int maxd=0;//记最大的那层深度为maxd 
    long long max=-100005;//记最大深度 

    //每层第一个数i是2的n次方
	//每层最后一个数为下一层的前一个数。 
	int d=1; 
    for(int i=1;i<=n;i*=2,d++)
    {
        long long sum=0;
        for(int j=i;j<=2*i-1&&j<=n;j++)
        {
            sum+=a[j];
        }
        if(sum>max)	//找到最大的那层
        {
            max=sum;
            maxd=d;
        }
    }
    cout<<maxd<<endl;
}

[蓝桥杯 2021 国 ABC] 123

#include<bits/stdc++.h>
using namespace std;
typedef long long ll; 
ll a[5];
ll Find(ll n){//二分
	ll l=1,r=10000000;
	while(l<r){
		ll mid=(l+r)/2;//mid代表行
		//求第mid行及以前的数的个数
		if((1+mid)*mid/2>=n) r=mid;
		else l=mid+1;
	}
	return r;
}
ll f(ll n){//第n行的和 
	return (1+n)*n/2;
}
ll Ans(ll n){//前 n 行的和
	return n*(n+1)*(n+2)/6;
}
int main(){
	int t;
	cin>>t;
	while(t--){
		ll l,r;
		cin>>l>>r;
		a[1]=l-f(Find(l)-1);//前 l 行
		a[2]=r-f(Find(r)-1);//前 r 行
		ll ans1=Ans(Find(l)-1)+a[1]*(a[1]-1)/2;//前 l 个数的和
		ll ans2=Ans(Find(r)-1)+(a[2]+1)*a[2]/2;//前 r 个数的和
		cout<<ans2-ans1<<"\n";
	}
	return 0;
}

[蓝桥杯 2019 省 B] 等差数列

#include<bits/stdc++.h>
using namespace std;
const int N=1000010; 
int a[N];
int main(){
    int n;
    scanf("%d", &n);
 
    for(int i = 0; i < n; i ++){
        scanf("%d", &a[i]);
    }
    sort(a, a + n);
    //求后面各项与第一项所有差值的最大公约数
    int d = 0;
    for(int i = 1; i<n;i++) d=__gcd(d,a[i]-a[0]);
    if(!d) printf("%d\n", n);
    else printf("%d\n", (a[n-1]-a[0])/d+1);
 
    return 0;
}

[蓝桥杯 2019 省 A] 修改数组

#include<bits/stdc++.h>
using namespace std;
const int M=1e4+10;
const int N=1e6+10;
int fa[N];
int n,a;
int Find(int x){
	if(fa[x]==x) return fa[x];
	return fa[x]=Find(fa[x]);
}
int main(){
	cin>>n;
	for(int i=1;i<N;++i) fa[i]=i;
	
	for(int i=1;i<=n;++i){
		cin>>a;
		a=Find(a);
        cout<<a<<" ";
		fa[a]=a+1;
	} 
} 

[蓝桥杯 2019 省 A] 外卖店优先级

#include <bits/stdc++.h>
using namespace std;
const int N=1e5+5;
struct node
{
    int ts,num;
}a[N];
bool cmp(node s1,node s2)
{
    if(s1.ts==s2.ts)return s1.num<s2.num;
    return s1.ts<s2.ts;
}
int n,m,t,ans;
int last[N],sum[N];//第几号店的上一次时间,记录当前第几号店的值
bool st[N];//是否在优先缓存队列中
int main()
{

    int tt=0;//记录上一个时间
    scanf("%d%d%d",&n,&m,&t);
    for(int i=1;i<=m;i++)scanf("%d%d",&a[i].ts,&a[i].num);
    sort(a+1,a+1+m,cmp);
    for(int i=1;i<=m;i++)
    {
        int tt,id;
        tt=a[i].ts;id=a[i].num;
        if(tt!=last[id])sum[id]-=tt-last[id]-1;
        if(sum[id]<0)sum[id]=0;
        if(sum[id]<=3)st[id]=0;
        sum[id]+=2;
        if(sum[id]>5)st[id]=1;
        last[id]=tt;
    }
    for(int i=1;i<=n;i++)
    {
        if(last[i]<t)sum[i]-=t-last[i];
        if(sum[i]<=3)st[i]=0;
    }
    for(int i=1;i<=n;i++)
    {
        if(st[i])ans++;
    }
    cout<<ans<<endl;
    return 0;
}

标签:const,int,ll,cin,long,寒假,2023,using,week4
From: https://www.cnblogs.com/Qinna-blogs/p/17097065.html

相关文章

  • C/C++工业数据分析与文件信息管理系统[2023-02-12]
    C/C++工业数据分析与文件信息管理系统[2023-02-12]程序设计基础A课程设计工业数据分析与文件信息管理系统题目背景智能制造是以工业生产数据分析、自动化技术为基础,具......
  • 2018至2023我的开源项目分享
    本文主要针对博主2018毕业至2023参与软件开发4年多以来自建的三个开源项目进行介绍与分享,希望对看到本文的新入行的初中级开发者或者未毕业想入行的学生们能够起到帮助。下......
  • 2023关键词:挑战
    未失踪人口回归...好久不见,不经意间拖更2个多月。今天周末,外面淅淅沥沥下着小雨,这种窝在床上的时刻最适合写点东西了。但是建议大家在办公或者写博客的时候尽量还是端......
  • YACS 2023年1月月赛 甲组 T2 分割数列(二) 题解
    题目链接继上个月的分割数列(一)又出了这道题。首先还是考虑$n^2DP$,设$f[i]$为分到$i$个的最小权重之和。转移枚举上一个在哪里分就行了。显然时间会超限,我们考虑......
  • YACS 2023年1月月赛 甲组 T1 树的独立集 题解
    题目链接半夜12:00我不睡觉来这里更文章来了。。。这次的甲组好简单,第一次$AK$了,这题看上去很难,要求什么不挨边,其实分析一下就是树形$DP$。首先要求不挨边,所以我......
  • #yyds干货盘点#【愚公系列】2023年02月 微信小程序-电商项目-添加收货地址功能实现
    前言在电商系统中,收货地址是必不可少的功能,没有收货地址用户在下单就没法收到货,而且一个用户会有多个收货地址,比如寄给自己,或者寄给别人。一搬在收货地址选择中会有个默认......
  • 2023/2/11
    今天终于把驾照拿到手了,很兴奋,也是第一天开始实现按昨日计划行动的一天,但是第一天就碰到了意外情况,对象昨晚开始就胃不舒服,今早发现是胃溃疡的症状所以带去看了医生,不过好......
  • 2023最新Python阅读书籍推荐
    abyteofpython(中文:简明Python教程)入门的书很多,但能让新手轻松看懂的就少了,作者写的思路非常清晰,对每一个知识点讲解的很到位,不多不少,对初学者来说,力道刚刚好。这本书是......
  • Word List 2023
    WordList2023记录2023年阅读论文时遇到的单词wildcard通配符wildcardpredicate通配符谓词maturation成年过程;长大成人ever-increasing不断增加的stochastic......
  • 2023/2/11 考试总结
    时间安排7.30~7.40分析了一下T2,分四种情况,有两种情况是二位数点,另外两种情况都是求前缀最大面积。一开始想的是用兔队线段树做,发现需要再套李超线段树感觉很难受,后来又......