URAL 1830 Help in the RNOS 思路,读题 难度:1

http://acm.timus.ru/problem.aspx?space=1&num=1830

这道题需要理解题目操作的意思,

要更改第i位的状态,第i-1位必须激活为1,0-i-2位必须为0,如果0-i-1位开始时全为0,那么从0位开始进行操作

一.首先考虑对于0-i-1位都是0,需要更改i位的情况,需要 1.更改i-1位,2.按一下打开下一页

对于更改i-1位,需要1.更改i-2位,2.按一下打开下一页,3.更改i-2位

可以得到一个式子,设f[i]为第0-i-1位均为0时,使得状态成为第i位被更改,第0-i-1位仍为0的操作数,则f[i]=2*f[i-1]+1

二.因为从前往后更改会影响之前的状态,所以我们从后往前更改,当最后一个不相同位置e已被上面的操作更改后,只有e-1位为1,其它都为0,满足上面的条件,可以直接相加

三.对于更改最后一位e的操作,因为这个时候前面不一定全都为0,所以有:

假设第e位是第i个1,

对于第i-1个1,这个1是有用的,可以作为起点,如果它是第j位,它的操作数为f[j]+1,对于e来说,因为计算f[e]时认为2*f[j]+1,所以要减去f[j],

对于第i-2个1,这个1阻碍了第i-1个1,是无用的,如果它是第j位,它的操作数为3*f[j]+1(一次关闭操作),对于e来说,需要加上f[j]

对于第i-3个1,有用,

对于第i-4个1,无用........

依次类推,直接相加可得答案

四:注意long long

#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;
char org[100],aim[100];
ll f[50];
int main(){
        int n;
        ll ans=0;
        scanf("%d%s%s",&n,org,aim);

        f[0]=1;
        for(int i=1;i<n;i++){
                f[i]=2*f[i-1]+1;
        }

        for(int i=n-1;i>=0;i--){
                if(org[i]==aim[i])continue;
                ll sub=0;
                int fl=1;
                for(int j=i-1;j>=0;j--){
                        if(org[j]==‘1‘){
                                sub=sub+f[j]*fl;
                                if(j!=i-1)org[j]=‘0‘;
                                fl=-fl;
                        }
                }
                if(i>0)org[i-1]=‘1‘;
                ans+=(i>0?f[i-1]:0)-sub+1;
                org[i]=aim[i];
        }

        printf("%I64d\n",ans);
        return 0;
}

  

时间: 2024-10-05 18:56:11

URAL 1830 Help in the RNOS 思路,读题 难度:1的相关文章

poj 2739 Sum of Consecutive Prime Numbers 素数 读题 难度:0

Sum of Consecutive Prime Numbers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 19697   Accepted: 10800 Description Some positive integers can be represented by a sum of one or more consecutive prime numbers. How many such representatio

ZOJ 3652 Maze 模拟,bfs,读题 难度:2

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4842 要注意题目中两点: 1.在踏入妖怪控制的区域那一刹那,先减行动力,然后才能杀妖怪 2.在妖怪控制区域行动力也会恢复 3.妖怪也许不在自己的控制区域 #include <cstdio> #include <cstring> #include <algorithm> #include <queue> using namespace st

LeetCode 2 Add Two Numbers 模拟,读题 难度:0

https://leetcode.com/problems/add-two-numbers/ You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked

HDU2076 夹角有多大(题目已修改,注意读题)【水题】【计算几何】

夹角有多大(题目已修改,注意读题) Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 10194    Accepted Submission(s): 4072 Problem Description 时间过的好快,一个学期就这么的过去了,xhd在傻傻的看着表,出于对数据的渴望,突然他想知道这个表的时针和分针的夹角是多少.现在xhd知道的

hdu 2079 选课时间(题目已修改,注意读题) 多重背包

选课时间(题目已修改,注意读题) Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3162    Accepted Submission(s): 2472 Problem Description 又到了选课的时间了,xhd看着选课表发呆,为了想让下一学期好过点,他想知道学n个学分共有多少组合.你来帮帮他吧.(xhd认为一样学分的课没区别

poj1789 MST 读题生涯永不停歇

题目: 链接在此 1.图论刷刷乐#1的第一题,无奈看了好长时间题目还是看不懂= =,明知是最水的题目 2.搜懂题目后,比较裸的MST,但还是决定写个题解,虽然没什么可说的,只是来警戒自己,还是要努力读题,YY大法,这也是水平的一个体现! #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <vector> #include &

URAL 1023 Buttons(巴什博弈水题)

1023. Buttons Time limit: 2.0 secondMemory limit: 64 MB Background As you surely already know, Yekaterinburg has gotten its right to hold The Summer Olympic Games of the 2032. It is planned that it will be allowed to Russia as a country-organizer to

hdu2098分拆素数和(读题很重要!!!)

分拆素数和 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2098 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 39300    Accepted Submission(s): 17193 Problem Description 把一个偶数拆成两个不同素数的和,有几种拆法呢? Input

HDU 2079 选课时间(题目已修改,注意读题)【母函数】

选课时间(题目已修改,注意读题) Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3250    Accepted Submission(s): 2551 Problem Description 又到了选课的时间了,xhd看着选课表发呆,为了想让下一学期好过点,他想知道学n个学分共有多少组合.你来帮帮他吧.(xhd认为一样学分的课没区别