zoukankan      html  css  js  c++  java
  • C. Minimize The Integer(贪心)

    传动门前往传送门

    (看完题解后觉得自己好蠢......)

    (相信大部分人会先拿样例做实验)

    (可以从前往后贪心,第一个位置只可以和后面的第一个不同类的数交换)

    (基于这个,我们可以写出一个O(n^2)的算法)

    (因为找后面第一个不同类的数和找到后进行冒泡交换的时间都难以优化!!)

    (color{Red}{但是,有时候我们只考虑结果不考虑过程,这才是贪心})

    (其实上面发现规律的本质是奇数向左或者向右交换都有一道鸿沟)

    (那就是不能到上一个奇数之前,不能到下一个奇数之后,除此之外任意)

    (color{Orange}{那么,只需要维护最终的序列奇数相对位置不变,偶数相对位置不变})

    (那么每次取最前的奇数和偶数比较大小,看看哪个小直接输出)

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn=3e5+9;
    int ou[maxn],top;
    int ji[maxn],cnt;
    string s;
    int main()
    {
    	int t;
    	scanf("%d",&t);
    	while(t--)
    	{
    		top=cnt=0;
    		cin>>s;
    		for(int i=0,l=s.length();i<l;i++)
    		{
    			int k=s[i]-'0';
    			if(k%2==1)	ji[++cnt]=k;
    			else	ou[++top]=k;
    		}
    		int i,j;
    		for(i=1,j=1;i<=cnt&&j<=top;)
    		{
    			if(ou[j]<ji[i])	printf("%d",ou[j++]);
    			else	printf("%d",ji[i++]);	
    		}
    		while(i<=cnt)	printf("%d",ji[i++]);
    		while(j<=top)	printf("%d",ou[j++]);
    		cout<<endl;
    	}
    }
    
  • 相关阅读:
    十万个为什么
    安装VmwareTools遇到的问题
    CentOS7没有ifconfig命令怎么办
    ftp/ http/ https/ tcp的关系
    C/S和B/S架构
    Nginx 安装以及验证教程
    osi七层模型
    在linux上安装tenginx
    Awvs、Snort的下载安装
    Laravel——DI(依赖注入)
  • 原文地址:https://www.cnblogs.com/iss-ue/p/12886648.html
Copyright © 2011-2022 走看看