首页 > 其他分享 >4.82022河南ccpc省赛

4.82022河南ccpc省赛

时间:2024-04-09 14:47:16浏览次数:14  
标签:include 相与 int ccpc long cin using 省赛 4.82022

A题
签到题
找到102345 这个规律,即可,大于10就直接是-1了
先打个1.然后从2开始,有2打0,有3打3-1,有4打4-1
直接打印数字就好了,一共就最多10个,不用转接to_string

#include<bits/stdc++.h>
using namespace std;
#define int long long
const char nl = '\n';

void test(){
 int n;
 cin>>n;
 if(n>10){
     cout<<-1<<endl;
 }else{
     cout<<1;
     for(int i=2;i<=n;i++){
         if(i==2){
			cout<<0; 
         }
         else
         {
         	cout<<i-1;
		 }
     }
 }
}


signed main() {
	ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    int t;
    t=1;
    while(t--)
    test();
    return 0;
}

E题
//存不存在(YES/NO)问题,都要看边界,看如果存在则最边的一定存在

//这道题,我想的是怎么解决交叉问题
//其实根本不用想那么多,你先给我找到5个再说(找到最前面的5个再说,这是最基本条件吧)
//然后你把那5个都截了,再给我找7个。
//所以只要观察最边界,最基本的东西就行了,你先别管交叉,前面有5个再说吧

//cui想的确实很快,这个底线思维很好,我在那纠结怎么交叉这种高级问题,实际上你先把最基本的做了再说


#include<bits/stdc++.h>
using namespace std;
#define int long long
const char nl = '\n';

void test(){
 int n;
 char mp[4];//记录这个字符 
 bool t1=false,t2=false;
 map<char,int>m;
 int cnt=0;
 cin>>n;
string s;
cin>>s;
if(n<17){//如果整个串小于17,直接输出无 
    cout<<"none"<<endl;
}else{
    for(int i=0;i<s.size();i++){
       m[s[i]]++;//m对字符计数 
       if(m[s[i]]==5&&!t1){//达到5个了 
           mp[++cnt]=s[i];//记录这个字符 
           t1=true;//只要第一个5个字符的 
           m.clear();//清空,重新计数了 
           continue;
       }
        if(m[s[i]]==7&&t1){//第一个有7个的字符 (而且还是先有了5个之后的,t1的作用) 
            mp[++cnt]=s[i];//记录 
            t2=true;
            m.clear();//再清空 
            continue;
        }
        if(m[s[i]]==5&&t2){//如果连着的7个找到了 
            mp[++cnt]=s[i];
          break;
        }
    }
    if(cnt<3){//如果你只记录了两个字符,那么肯定是...只有5 7 没有最后一个5 
        cout<<"none"<<endl;
    }else{//如果是3个,那就是成功了,下面只是打印,不需要再验证了 
        for(int i=1;i<=cnt;i++){
            if(i==1){
                for(int j=0;j<5;j++){
                    cout<<mp[i];
                }
                continue;
            }
            if(i==2){
                for(int j=0;j<7;j++){
                    cout<<mp[i];
                }
                continue;
            }
            if(i==3){
                for(int j=0;j<5;j++){
                    cout<<mp[i];
                }
                continue;
            }
        }
    }
}
}


signed main() {
	ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    int t;
    t=1;
    while(t--)
    test();
    return 0;
}


F题
没啥可解释的,先找奇数的规律,再找奇数通过什么样一种变换,让其个数+1吧
1、先猜到0这个特殊值
2、猜到奇数规律 0123
3、偶数就是把3加1 0124

#include<bits/stdc++.h>
using namespace std;
#define int long long
const char nl = '\n';

void test(){
 int n;
 cin>>n;
    if(n==1){//如果是1, 
        cout<<1<<nl;
        cout<<1<<endl;
        return ;
    }
 if(n%2==0){
    if(n==2){
        cout<<-1<<endl;
        return ;
    }
     if(n==4){
         cout<<-1<<endl;
         return ;
     }
     n++;
     n/=2;
     cout<<n<<endl;
     for(int i=0;i<n-1;i++){
         cout<<i<<" ";
     }
     cout<<n<<" ";
    cout<<endl;
 }else{
    n++;
    n/=2;
    cout<<n<<endl;
    for(int i=0;i<n;i++)
        cout<<i<<" ";
 }
}


signed main() {
    int t;
    t=1;
    while(t--)
    test();
    return 0;
}

G题
规律1:如果某一列但凡有一个0的话,那相与的最后结果就是0
规律2:两个字符子串进行相与,但凡有一个0,你再怎么替换也去除不了这个0,一直都是0.
规律3:两个字符子串进行相与,如果这一列都是1,你再怎么相与,替换,结果还是1
结论:相与或者补相与根本没啥影响,因为一开始是啥,结果就是啥————所以结果一直都只有一个,而且其可能性是100%,所以期望,就是这个结果(根本没用着期望的计算)
实现思路:看哪一行是一开始就没有0,全是1的。去寻找0的个数,有0就标记本列,最后找出全1列的个数,就是最终答案

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

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
	int n,m;cin>>n>>m;
	int f[4000]={0};
	string s;
	while(n--)
	{
		cin>>s;
		for(int i=0;i<m;i++)
		{
			if(s[i]=='0')
			{
				f[i]=1;//标记本列 
			}
		}
	}
	int t;cin>>t;//只是给个位置让你输入而已,没啥用处
	while(t--)
	{
		int a,b,c,d,e;
		cin>>a>>b>>c>>d>>e;//只是给个位置让你输入而已,没啥用处 
	} 
	cout<<count(f,f+m,0);//永远都是这个数 

    return 0;
}

标签:include,相与,int,ccpc,long,cin,using,省赛,4.82022
From: https://www.cnblogs.com/yzzyang/p/18123918

相关文章

  • 第十四届蓝桥杯省赛研究生组python
    目录试题A:工作时长excel处理代码试题B:分糖果试题C:填充试题D:互质数的个数题解:暴力试题E:阶乘的和题解:暴力+备忘录试题F:公因数匹配题解:暴力试题G:小蓝的旅行计划题解试题A:工作时长excel处理把数据复制到excel,并选中列右键选择设置单元格格式注意:因为求和之后总小时数可能会超过2......
  • 第十四届蓝桥杯单片机省赛
    第一部分客观题1.D2.BD3.CA时序逻辑电路是一类具有记忆功能且其输出不仅依赖于当前输入信号,还依赖于电路过去状态的数字电路。常见的时序逻辑电路包括但不限于以下几种类型:1.**触发器**:最基本的存储单元,如RS触发器、JK触发器、D触发器、T触发器等。2.**寄存器**:由多......
  • 2023年蓝桥杯省赛——买二赠一
    目录题目链接:1.买二赠一-蓝桥云课(lanqiao.cn)题目描述输入格式输出格式样例输入样例输出样例说明思路队列+贪心代码实现总结题目链接:1.买二赠一-蓝桥云课(lanqiao.cn)题目描述        某商场有N件商品,其中第i件的价格是Ai。现在该商场......
  • 蓝桥杯嵌入式2023年第十四届省赛主观题解析
    1 题目2 代码/*Includes------------------------------------------------------------------*/#include"main.h"#include"adc.h"#include"rtc.h"#include"tim.h"#include"gpio.h"/*Privateinclud......
  • 第十四届蓝桥杯省赛A组
    目录试题A:特殊日期题解试题B:分糖果试题C:三国游戏试题D:平均试题E:翻转试题F:子矩阵题解:暴力试题G:阶乘的和题解试题H:奇怪的数试题A:特殊日期题解mon=[0,31,28,31,30,31,30,31,31,30,31,30,31]defrun(x):#判断是否为闰年ifx%400==0or(x%4==0andx%100!=0):r......
  • 第十四届蓝桥杯省赛大学B组填空题(c++)
    日期统计:暴力枚举+set(自带排序加去重)#include<iostream>#include<set>usingnamespacestd;set<int>ans;inta[100]={5,6,8,6,9,1,6,1,2,4,9,1,9,8,2,3,6,4,7,7,5,9,5,0,3,8,7,5,8,1,5,8,6,1,8,3,0,3,7,9,2,7,0,5,8,......
  • 蓝桥杯 历届真题 杨辉三角形【第十二届】【省赛】【C组】
    资源限制内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s思路:    由于我第一写没考虑到大数据的原因,直接判断导致只得了40分,下面是我的代码:#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN......
  • 第十四届蓝桥杯省赛B组
    目录试题A:2023题解正确题解试题B:硬币兑换试题C:松散子序列题解:动态规划试题D:管道题解:二分+区间合并试题E:保险箱试题A:2023题解a='2023'cnt,i,k=0,0,0forjinrange(12345678,98765433):whilei<len(a):whilek<8:ifa[i]==str(j)[k]:......
  • 蓝桥杯,省赛,动态规划专题,青蛙,更小的数,松散子序列,接龙数列
    #include<bits/stdc++.h>usingnamespacestd;constintN=1e5+9;doublex[N],a[N],b[N];doubledp[N][5];intmain(){intn;cin>>n;for(inti=1;i<=n;i++)cin>>x[i];for(inti=1;i<=n-1;i++)cin>>a[i]>>b[i......
  • 蓝桥杯嵌入式2017年第八届省赛主观题解析
    1 题目2  代码/*USERCODEENDHeader*//*Includes------------------------------------------------------------------*/#include"main.h"#include"rtc.h"#include"tim.h"#include"gpio.h"/*Privateincludes--......