zoukankan      html  css  js  c++  java
  • Codeforces 1263B. PIN Codes(暴力)

    传送门

    题意:

    t组数据,每组n个四位数,目的是改变最小的次数,使得n个数各不相同

    思路:

    看这个数据:2<=n<=10,因此发现重复的,暴力改变千位的值,如果改变后的数,没出现过,则break,一共十个数,for(0-9)改变千位,肯定能找的

    代码:

    #include <iostream>
    #include <stdio.h>
    #include <algorithm>
    #include <string.h>
    #include <vector>
    #include <math.h>
    #include <map>
    #include <queue>
    #include <set>
    using namespace std;
    typedef long long ll;
    const int N=2e6+50;
    const int mod=1e9+7;
    int a[N];
    map<int,int>mp;
    void solve(int t)
    {
        int n;scanf("%d",&n);
        mp.clear();
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]),mp[a[i]]++;
        int ans=0;
        for(int i=1;i<=n;i++){
            if(mp[a[i]]>1)//大于1说明有重复的
            {
                ans++;
                mp[a[i]]--;
                int x=a[i]-(a[i]/1000)*1000;//该数去掉千位剩的值,例a[i]=2345,x=345
                for(int j=0;j<=9;j++)
                {
                    int p=x+j*1000;
                    if(mp[p]==0)
                    {
                        a[i]=p;
                        mp[p]++;
                        break;
                    }
                }
            }
    
        }
        printf("%d
    ", ans);
        for(int i=1;i<=n;i++)
            printf("%04d
    ",a[i] );
    }
    int main()
    {
        //freopen("in.txt","r",stdin);
        int t;
        scanf("%d",&t);for(int i=1;i<=t;i++)solve(i);
        return 0;
    }
     
  • 相关阅读:
    源代码的下载和编译
    搭建Android开发环境
    Git使用入门
    Android系统构架
    Android深度探索心得<9>
    Android深度探索心得<10>
    Android深度探索心得<8>
    android深度探索xinde < 7>
    android深度探索xinde < 5>
    android深度探索xinde < 6>
  • 原文地址:https://www.cnblogs.com/zzl_Alexander/p/11965720.html
Copyright © 2011-2022 走看看