【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

12545 - Bits Equalizer(贪心?)

原创 2015年07月07日 20:03:24

这道题我是自己出的思路,一遍A的 ,0.000ms。 看网上的题解大多相仿,我就说说我的思路吧 。

假设字符串 a、b

我们只需要从前向后扫一遍就行了,遇到?跳过去,遇到a[i] = '0'&&a[i]!=b[i] ;那么就向后找一个a[j]=='1'&&a[i]!=b[j],也就是说先用交换这个技能比较省步骤 。如果没有可以交换的,再扫一遍找? 如果a[i]==? && b[i]==0  那么显然可以先将?变成1 再和a[i]交换  ,需要两步,如果仍然没有满足的,那只能直接把a[i]变成1

a[i]==1 && a[i]!=b[i]的情况和上面相仿,只是如果前两种无法满足,那么这个序列是无法变成b序列的

所以一开始就想清楚再敲代码比较好,将分类理清。

代码如下:

#include<bits/stdc++.h>
using namespace std;
int T,maxn = 0;
char a[105],b[105];
int main(){
    scanf("%d",&T);
    while(T--){
        scanf("%s%s",a,b);
        printf("Case %d: ",++maxn);
        int n = strlen(a);
        bool ok = true;
        int cnt = 0;
        for(int i=0;i<n;i++){
            if(a[i]=='?') continue;
            else if(a[i]!=b[i]&&a[i]=='0') {
                bool flage = false;
                for(int j=i+1;j<n;j++){
                    if(a[j]!=b[j]&&a[j]=='1') { flage = true; a[j] = '0'; a[i] = '1'; cnt++; break; }
                }
                if(!flage) {
                    for(int j=0;j<n;j++) {
                        if(a[j] == '?'&&b[j]=='0') { flage = true; a[j] = '0'; a[i] = '1'; cnt+=2;  break; }
                    }
                    if(!flage) { a[i] = '1'; cnt++; }
                }
            }
            else if(a[i]!=b[i]&&a[i]=='1') {
                bool flage = false;
                for(int j=i+1;j<n;j++) {
                    if(a[j]!=b[j]&&a[j]=='0') { flage = true; a[j] = '1'; a[i] = '0'; cnt++; break; }
                }
                if(!flage) {
                    for(int j=0;j<n;j++) {
                        if(a[j]=='?'&&b[j]=='1') { flage = true; a[j] = '1'; a[i] = '0'; cnt+=2; break; }
                    }
                    if(!flage) { ok = false; break; } //无法变换
                }
            }
        }
        if(ok) {
            for(int i=0;i<n;i++) if(a[i] == '?') cnt++; //别忘了这里
            printf("%d\n",cnt);
        }
        else printf("-1\n");
    }
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

uva 12545 Bits Equalizer

You are given two non-empty strings S and T of equal lengths. S contains the characters ‘0’, ‘1...

RAC Connection Redirected To Wrong Host-IP ORA-12545 [ID 364855.1]

<td style="background-color: transparent; border: #f0f0f0; padding: 0cm;" colspa

UVa:12545 Bits Equalizer(贪心)

题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=845&page=show_pr...

因主机名更改造成oracle控制台登录错误:ora-12545,ora-12541

http://blog.csdn.net/rookie_one/archive/2006/11/30/1421781.aspx 昨天临下班因嫌自己的计算机名太丑,就改成了别的。(当初装系统的时候太匆忙,没改,安装程序在名字后遍加了好多乱其八糟的字符)   今晨再启动oracle控制台的时候,报错“Ora-12545:因目标主机或者对象不存在,连接失败”,但是用sqlplus登录到没问题,不解。   google了一下,才知道是昨天修改主机名的原因,然后把“D:\oracle\ora92\network \admin\tnsnames

UVA 12545 Bits Equalizer(模拟+贪心)

B - Bits Equalizer Time Limit:1000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit...

记一次离奇的TNS-12545 TNS-12560 TNS-00515

最近reportDB监听无法随系统自启动,现象比较怪异。因为该服务器上的另一个实例的监听可以正常启动,这个不能自启动实例的监听手动启动又是正常的。因此记下这次离奇暂未找到原因的故障。 1、故障现象 Starting CRON daemondone Oracle 10g auto start/stop Startup "USMTHLY" listener. LSNRCTL

[思路贪心]UVa12545 - Bits Equalizer

先把0变1 然后把变的这一组的_0_1与对应_1_?变 #include using namespace std; const int maxn = 210; char s[maxn],s0[ma...
  • a197p
  • a197p
  • 2015-09-26 01:54
  • 189

ORA-12545:因目标主机或对象不存在,连接失败的解决办法

ORA-12545:因目标主机或对象不存在, 原因:机器名称改过后出现的 网上参考的解决办法 1. 搜索你的oracle安装目录,找到这俩个文件 tnsnames.ora 和 listener.ora 记住就改这俩个文件就行了,还有一个大写的TNSNAMES.ORA不用管它。他们的路径如下:如 E:\oracle\ora92\network\admin 这是我的路径 你的肯定和我的不一样,但能找到这俩个文件就行了,他们在同一个目录里,编辑这俩个文件,把里面的Host= 的地方改为你的计算机名就行了。注意有多个,看仔细了。或者改成IP,下次改了IP注意再修改要统一 2.

12545-Bits Equalizer贪心

比较蛋疼贪心,具体除非S和T在tongyiz

声音处理中Equalizer(均衡器)的原理

均衡器的作用就是调节不同频率的信号的强度。声音作为一种波具有三个要素:幅度,频率,相位。其中幅度决定了声音的大小,频率决定了声音音调的高低。实际的声音往往都不是单一频率的波,而是有各种频率的波叠加而成,从而形成了各具特色的声音。 y = Asin(wt+fi)+A0 (单频率声波描述) y = A1sin(w1t+fi1) + A2sin(w2t+fi2) + ...(实际的声波描述)声音的不同就在于不同频率的声信号具有不同的强度。而均衡器就是根据这个原理来实现的。均衡器能自动分离不
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)