zoukankan      html  css  js  c++  java
  • Codeforces Round #265 (Div. 2) B. Inbox (100500)

    Over time, Alexey's mail box got littered with too many letters. Some of them are read, while others are unread.

    Alexey's mail program can either show a list of all letters or show the content of a single letter. As soon as the program shows the content of an unread letter, it becomes read letter (if the program shows the content of a read letter nothing happens). In one click he can do any of the following operations:

    • Move from the list of letters to the content of any single letter.
    • Return to the list of letters from single letter viewing mode.
    • In single letter viewing mode, move to the next or to the previous letter in the list. You cannot move from the first letter to the previous one or from the last letter to the next one.

    The program cannot delete the letters from the list or rearrange them.

    Alexey wants to read all the unread letters and go watch football. Now he is viewing the list of all letters and for each letter he can see if it is read or unread. What minimum number of operations does Alexey need to perform to read all unread letters?

    Input

    The first line contains a single integer n (1 ≤ n ≤ 1000) — the number of letters in the mailbox.

    The second line contains n space-separated integers (zeros and ones) — the state of the letter list. The i-th number equals either 1, if the i-th number is unread, or 0, if the i-th letter is read.

    Output

    Print a single number — the minimum number of operations needed to make all the letters read.

    Sample test(s)
    Input
    5
    0 1 0 1 0
    
    Output
    3
    
    Input
    5
    1 1 0 0 1
    
    Output
    4
    
    Input
    2
    0 0
    
    Output
    0
    题意:查看邮件,求须要操作的次数
    思路:题意题,模拟
    
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    int main() {
    	int n, num[1010];
    	scanf("%d", &n);
    	for (int i = 1; i <= n; i++)
    		scanf("%d", &num[i]);
    	int ans = 0;
    	for (int i = 0; i < n; i++)
    		if (num[i] && num[i+1])
    			ans++;
    		else if (num[i] && !num[i+1])
    			ans += 2;
    	if (!num[n] && ans)
    		ans--;
    	else if (num[n])
    		ans++;
    	printf("%d
    ", ans);
    	return 0;
    }



  • 相关阅读:
    org.tinygroup.tinydb-数据库开发组件
    org.tinygroup.database-数据库元数据定义
    org.tinygroup.databasebuinstaller-数据库结构及元数据自动创建
    org.tinygroup.dbrouter-数据库分区分表
    org.tinygroup.metadata-元数据定义
    org.tinygroup.jsqlparser-SQL解析器
    org.tinygroup.xmlparser-XML解析器
    四则运算程序扩展:将程序改为java语言,并允许用户输入,对输入结果进行验证
    课堂练习四: 返回一个整数数组中最大子数组的和。
    自动生成四则运算问题的测试
  • 原文地址:https://www.cnblogs.com/llguanli/p/6790235.html
Copyright © 2011-2022 走看看