• CF1419ABCD 思维+数学


    CF1429A 思维
    题意:
    给定一个长度(n)序列,两个人可以轮流取,alice取奇数位,bob取偶数位,若最后留下的数是奇数则alice胜,否则bob胜
    题解:
    可以知道最终留下的数是奇数位/偶数位,那么尽量留下奇数/偶数即可

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<algorithm>
    #include<queue>
    #include<cstring>
    #include<string>
    #include<map>
    #include<stack>
    #define INF 1e9+7
    #define ll long long
    using namespace std;
    int T,n;
    char ch[2001];
    void solve()
    {
    	scanf("%d%s",&n,ch);
    	bool fl=0;
    	if(n&1)
    	{
    	  fl=0;
    	  for(int i=1;i<=n;i+=2)if((ch[i-1]-'0')&1)fl=1;
    	}
    	else
    	{
    	  fl=1;
    	  for(int i=2;i<=n;i+=2)if(!((ch[i-1]-'0')&1))fl=0;
        }
        printf(fl?"1
    ":"2
    ");
    }
    int main()
    {
    	scanf("%d",&T);
    	while(T--)
    	{
    	  solve();
    	}
    	return 0;
    }
    

    CF1419B 数学
    题意:
    (x)个小格子
    小格子组成(i*i)的大块
    每个阶梯由若干个大块组成
    一个(n)阶梯是美丽的,当且仅当他用(n)个大块组成
    求可以组成多少个不同的美丽阶梯
    题解:
    阶梯只有满足(2^n-1)才可以美丽
    于是从小到大枚举计算答案

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<algorithm>
    #include<queue>
    #include<cstring>
    #include<string>
    #include<map>
    #include<stack>
    #define INF 1e9+7
    #define ll long long
    using namespace std;
    int T;
    ll x,ans; 
    void solve()
    {
        scanf("%lld",&x);
        ll t=2;ans=0;
        while(t*(t-1)/2<=x)
        {
        	//printf("  %lld %lld %lld
    ",t,cnt,(1+t-1)*cnt/2);
          x-=t*(t-1)/2;ans++;t<<=1;//cnt+=2;
    	}
    	printf("%lld
    ",ans);
    }
    int main()
    {
    	scanf("%d",&T);
    	while(T--)
    	{
    	  solve();
    	}
    	return 0;
    }
    

    CF1419C 思维
    题意:
    一开始有一个病原体,其能量为x
    有n个人,每个人有个免疫值,当一个人的免疫值等于某个被感染的人的免疫值时,他将会被感染
    初始免疫值等于病原体能量时,会直接被感染
    随后可以选定若干个人,对他们的免疫值进行修改,要求修改量的总和等于0,修改后立即进行感染
    求是所有人感染的最少操作次数
    题解:
    如果所有人的免疫值都等于病原体能量,那么初始就会感染所有人,ans=0
    如果存在有人的免疫值初始等于病原体能量,那么他一开始被感染,但是有初始免疫值不同于病原体能量的,那么此时选一个被感染的,和所有未被感染的变成一个相同的值,那么一定可以将剩下的都感染,ans=1
    如果所有人的初始免疫值都不等于病原体能量,那么求他们的平均值,如果平均值等于病原体能量,那么直接将所有值改为平均值,ans=1,否则需要先感染一部分,再用这一部分感染剩下的人,ans=2

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<algorithm>
    #include<queue>
    #include<cstring>
    #include<string>
    #include<map>
    #include<stack>
    #define eps 1e-7
    #define ll long long
    using namespace std;
    int T,n,x;
    int a[1001],sum;
    double r;
    void solve()
    {
        scanf("%d%d",&n,&x);
        int fl=0,fl2=0;
        for(int i=1;i<=n;i++){scanf("%d",&a[i]);if(a[i]!=x)fl=1;if(a[i]==x)fl2=1;}
        if(!fl){printf("0
    ");return;}
        if(fl2){printf("1
    ");return;}
        sum=0;
        for(int i=1;i<=n;i++)sum+=a[i];
        r=sum*1.0/n;
        if(fabs(r-x)<eps){printf("1
    ");return;}
        printf("2
    ");
    }
    int main()
    {
    	scanf("%d",&T);
    	while(T--)
    	{
    	  solve();
    	}
    	return 0;
    

    CF1419D 思维
    题意:
    给定n个数,将其重新排列,一个数是好的,当且仅当他比周围两个数要小,求如何排列可以得到最多的好数
    题解:
    排序之后大小大小间隔排

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<algorithm>
    #include<queue>
    #include<cstring>
    #include<string>
    #include<map>
    #include<stack>
    #define INF 1e9+7
    #define ll long long
    using namespace std;
    int T,n;
    int a[100001],b[100001];
    void solve()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)scanf("%d",&a[i]);
        sort(a+1,a+1+n);
        int t=n/2+1;
        for(int i=t;i<=n;i++)b[(i-t)*2+1]=a[i];
    	for(int i=1;i<t;i++)b[i*2]=a[i];
    	int ans=0;
    	for(int i=2;i<n;i++)if(b[i]<b[i-1] && b[i]<b[i+1])ans++;
    	printf("%d
    ",ans);
    	for(int i=1;i<=n;i++)printf("%d%c",b[i]," 
    "[i==n]);
    }
    int main()
    {
    	//scanf("%d",&T);
    	T=1;
    	while(T--)
    	{
    	  solve();
    	}
    	return 0;
    }
    
  • 相关阅读:
    【spring】基于AspectJ的AOP
    【matlab】stanford线性回归,logistic regression 实验
    【Python】列表、字典和元组的排序
    PHP 二叉树的深度优先与广度优先遍历
    PHP 定义栈结构,实现min函数,获取栈最小元素,要求时间复杂度为O(1)
    PHP 短连接生成
    一条SQL查询访问记录表(visit_log)中某个类目(catalog_id)的访问量(visit)排前两名的记录行
    利用 p, 1p 随机数发生器知道等概率发生器
    PHP 将二叉查找树转换为双向链表,要求不能创建新节点,只能调节节点指针
    PHP 求最大递增子序列长度
  • 原文地址:https://www.cnblogs.com/worcher/p/13844732.html
Copyright © 2020-2023  润新知