zoukankan      html  css  js  c++  java
  • Codeforces Round #260 (Div. 2)

    A. Laptops

    题目意思:

      给定n台电脑,第i台电脑的价格是ai ,质量是b,问是否存在一台电脑价格比某台电脑价格底,但质量确比某台电脑的质量高,即是否存在a< a且 b> b?

    解题思路:

      这题一定要看题目,a都是1~n的不同数,b也是1~n的不同数,此题只需要判断a是否等于bi ,如果a!= bi 的话,则输出“Happy Alex”,如果所有的ai  == bi 则输出“Poor Alex”

      证明:先将a按照从小到大排序,当i<j时a< aj

        假设不存在a< a且 b> bj ,即对所有的bi <= b

        又不b的各个数都不同,所有b也应该从1到n从小到大排序,即此时ai  == bi ,

        即当ai  == bi 时才输出“Poor Alex”

        否则肯定输出 “Happy Alex”

    #include <iostream>
    using namespace std;
    
    int main(){
        int n,a,b;
        cin >> n;
        bool flag = false;
        for(int i = 0; i < n; ++i){
            cin >> a >> b;
            if(a!=b) flag=true;
        }
        if(flag) cout<<"Happy Alex"<<endl;
        else cout<<"Poor Alex"<<endl;
    }
    View Code

    B. Fedya and Maths

    题目的意思:

      给定一个非常大的n,求(1^n + 2^n + 3^n + 4^nmod 5

    解题思路是:

      通过将前面几个数打出来,然后找规律,发现当n是4的倍数时输出4,其他输出的时0,所以此题判断n是不是4的倍数。

      第一种方法是将n当成一个字符串,然后判断n是不是能被4整除

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main(){
        string n;
        cin >>n;
        int left = 0;
        for(int i = 0 ; i < n.size(); ++i){
            left=(left*10+(n[i]-'0'))%4;
        }
        if(left) cout<<0<<endl;
        else cout<<4<<endl;
    }
    View Code

      第二种方法是,由于大数会溢出,根据一个数表示成二进制,当溢出时,截取溢出的位,所以地位的二进制保持不变

    #include <stdio.h>
    using namespace std;
    
    int main(){
        long long n;
        scanf("%I64d",&n);
        if(n%4 == 0) printf("4
    ");
        else printf("0
    ");
    }
    View Code

    C. Boredom

    题目的意思:

      给定一个含有n个整数的数组,你可以进行多次操作,每次操作从数组选一个数ak,然后将其删除,然后删除与a-1和a+1相等的数,则可以得到a分,求进行多次操作后得到的最多的分

    解题思路:

      利用动规,设dp[i]表示到达第i个数得到的最大的分, cnt[i] 表示第i个数的个数

      则dp[i] = max(dp[i-1], dp[i-2]+cnt[i]*i) , 2≤i≤n

        dp[1] = cnt[1];

        dp[0] = 0

    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    int main(){
        int n,a;
        cin >> n;
        int cnt[100001]={0};
        for(int i = 0 ; i < n;++ i){
            cin>>a;cnt[a]++;
        }
        long long dp[100001]={0};
        dp[0] = 0,dp[1]=cnt[1];
        for(int i = 2; i <= 100000;++ i){
            dp[i] = max(dp[i-1],dp[i-2]+(long long)cnt[i]*i);
        }
        cout<<dp[100000]<<endl;
    }
    View Code
  • 相关阅读:
    让DBGrid不能插入记录
    利用Stream下载文件
    设置文本框只能输入数字
    正则表达式的使用
    在同一页面处理提交代码
    HTML集合属性的应用
    移动MAS短信API libmySQL.dll无法添加引用
    ArcServer for Silverlight系列之属性查询
    aspnet_wp.exe w3wp.exe
    更改嵌入互操作类型 无法从程序集**中嵌入互操作类型,因为该程序集缺少“ImportedFromTypeLibAttribute”特性或“PrimaryInteropAssemblyAttribute“特性
  • 原文地址:https://www.cnblogs.com/xiongqiangcs/p/3903572.html
Copyright © 2011-2022 走看看