hdu 3747 Download

简介: 点击打开链接 题目意思:  有一个人现在想要下载一些东西,现在呢给定一个字符串T表示所以东西的原始状态,1表示打勾,0表示空,现在给定一个字符串S是这个人所要下载的东西的情况,问我么这个最少需要点击几次,这里上面有三个地方第几需要计算 1 全选 2 反选  3 下载东西对应框  解题思路:      我们先来说明一下规律                        1: 全选大于等于两次都是和全选一次相同   2:反选一次状态相反,全选两次回到原来效果。

点击打开链接


题目意思:  有一个人现在想要下载一些东西,现在呢给定一个字符串T表示所以东西的原始状态,1表示打勾,0表示空,现在给定一个字符串S是这个人所要下载的东西的情况,问我么这个最少需要点击几次,这里上面有三个地方第几需要计算 1 全选 2 反选  3 下载东西对应框 


解题思路:      我们先来说明一下规律
                       1: 全选大于等于两次都是和全选一次相同   2:反选一次状态相反,全选两次回到原来效果。(反选奇数次状态相反,反选偶数次不变)  
通过上面的规律那么我么知道我么要想最小点击次数,每一种可能的选择都是只点一次即可。

                       所以就有一下几种点击情况
                       1:不全选也不反选单个选  2:先全选再单个选  3:先反选在单个选    4先全选再反选再单个选  5 先反选再全选再单个选(其实这个是不用考虑的效果和直接全选一样),所以只要去一一求出取最小值即可


代码:

#include <algorithm>
#include <iostream>
#include <cstring>
#include <string>
#include <vector>
#include <cstdio>
#include <stack>
#include <queue>
#include <cmath>
using namespace std;

int n , ans;
char T[55] , S[55];

void solve(){
    ans = 999999999;
    //1直接单个选
    int num = 0;
    for(int i = 0 ; i < n ; i++){
        if(T[i] != S[i]) num++;
    }
    if(ans > num) ans = num;
    //2全选+单个选
    num = 1;
    for(int i = 0 ; i < n ; i++){
        if(S[i] == '0') num++;
    }
    if(ans > num) ans = num;
    //3反选+单个选
    num = 1;
    for(int i = 0 ; i < n ; i++){
        if(T[i] == '0') T[i] = '1';
        else T[i] = '0';
    }
    for(int i = 0 ; i < n ; i++){
        if(T[i] != S[i]) num++;
    }
    if(ans > num) ans = num;
    //4先全选在反选
    num = 2;
    for(int i = 0 ; i < n ; i++) T[i] = '0';
    for(int i = 0 ; i < n ; i++){
        if(T[i] != S[i]) num++;
    }
    if(ans > num) ans = num;
    printf("%d\n" , ans);
}

//主函数
int main(){
    //freopen("input.txt" , "r" , stdin);
    while(scanf("%d" , &n) != EOF){
        getchar();//注意换行
        gets(T) ; gets(S);
        solve();
    }
    return 0;
}



目录
相关文章
|
6月前
uva 11991 - Easy Problem from Rujia Liu?
这个题目的意思是输入n个数,m组询问,每组询问包含两个整数k,v,意思是询问整数v第k次出现的位置。
28 0
|
8月前
UVa11076 - Add Again
UVa11076 - Add Again
39 0
|
8月前
UVa343 What Base Is This
UVa343 What Base Is This
33 0
Leetcode-Easy 72. Edit Distance
Leetcode-Easy 72. Edit Distance
66 0
Leetcode-Easy 72. Edit Distance
HDOJ(HDU) 1976 Software Version(简单判断)
HDOJ(HDU) 1976 Software Version(简单判断)
77 0
【HDU 5572 An Easy Physics Problem】计算几何基础
2015上海区域赛现场赛第5题。 题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5572 题意:在平面上,已知圆(O, R),点B、A(均在圆外),向量V。
999 0