#2 DeBug日志

YBT P1243 GeBug日志

题目

【题目描述】

输入n个数,从小到大将它们输出,重复的数只输出一次。保证不同的数不超过500个。

【输入】

第一行是一个整数n。1≤n≤100000。

之后n行,每行一个整数。整数大小在int范围内。

【输出】

一行,从小到大不重复地输出这些数,相邻两个数之间用单个空格隔开。

【样例】

7 5
100
400
300
100
500
101
400
500

代码

int a[100099],m,n;
bool cmp(int x){
    int ans = 1;
    int tot = x;
    for(int i = 1;i <= n; i++){
        // cout << a[i] << ‘:‘ << tot << ‘:‘ << ans << endl ;
        if(a[i] > x) return true;
        if(tot >= a[i]){
            tot -= a[i];
        }
        if(tot < a[i+1]){
            tot = x;
            ans++;
        }
    }
    // cout << ans << endl;
    return ans > m; ①
}
int main(){
    cin >> n >> m;
    int sum = 0;
    int l = 0,r = sum,mid;
    for(int i = 1;i <= n; i++){
        cin >> a[i];
        sum += a[i]; ②
        l = max(a[i],l);
    }
    r = sum;
    int ans;
    while(r >= l){ ③
        mid = (l + r) >> 1;
        // cout << l << ‘ ‘ << r << ‘ ‘ << mid << endl;
        if(cmp(mid)){
            l = mid+1;
        }else{
            r = mid-1; ④
            ans = mid; ⑤
        }
    }
    // cout << l << ‘ ‘ << r << ‘ ‘ << mid << endl;
    cout << ans << endl;
    return 0;
}

DeBug

①:等号取不取的问题。

之前写的代码是 return ans >= m; 这里仔细思考一下。我的代码假设的是如果不符合要求就返回1,符合要求就返回0,那么 ans == m 很显然是符合条件的,如果也返回1,那就被算成错误的了。

②:左右端点的问题

其实这个地方比较无关紧要。右端点取总和,但是我的左端点一开始写的是取0,后来改成了a的最大值。其实我的cmp判断函数里面对这个东西有特判,所以这一句在DeBug的时候没啥用。

③④:返回条件的问题

二分模板掌握不熟练,打死好了。

⑤:答案记录的问题

只有mid的值返回0(也就是mid满足要求)的时候才能记录到ans,我之前不管返回几都记录,导致我答案不对。后来才放到else里面。

原文地址:https://www.cnblogs.com/Cao-Yucong/p/12562640.html

时间: 2024-10-24 09:44:12

#2 DeBug日志的相关文章

(Unity)Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进展混淆,避免被反编译

Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进行混淆,避免被反编译. 1.打开VS,博主所用版本是Visual Studio 2013. 2.新建一个VC项目,选择类库,取名为JefferyChan,具体步骤如下图: 3.因为要调用Unity中的相关文件,所以这里要引入外部文件.首先在Unity的安装文件夹中找到UnityEngine.dll,我的路径是:D:\Program Files (x86)\Unity\Editor\Data\Managed 如

logback debug 日志没有信息

可能是项目绑定的日志不是logback的jar包,而是其他包,具体可查看tomcat启动日志 log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).log4j:WARN Please initialize the log4j system properly.log4j:WARN See http://logging.apache.org/log4j/1.2

#1 DeBug日志

我好难过~ 这不是我要的那种~ 结果~ 结果~~~ DeBug日志 luogu P1967 货车运输 我是从哪里学会的 \(crazydave\) 的题解 题目描述 $A $国有 \(n\) 座城市,编号从 \(1\)到\(n\),城市之间有 \(m\)条双向道路.每一条道路对车辆都有重量限制,简称限重. 现在有 \(q\)辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物. 输入 第一行有两个用一个空格隔开的整数 \(n, m\),表示\(A\)国有\(n\)座

log4net 打开自身的debug日志

log4net自身启用debug 1.设置启用参数: <appSettings> <add key="log4net.Internal.Debug" value="true "/> </appSettings> 2.设置启用路径: <system.diagnostics> <trace autoflush="true"   > <listeners> <add name

解决mybatis3.2.8和log4j2整合打印sql debug日志的问题

框架:Spring4.1.5+mybatis3.2.8+log4j2+... 问题描述:使用service调用dao进行数据库操作时,发现mybatis没有打印日志,对开发调试非常不方便. 解决:在mybatis-config.xml添加: <configuration>      <settings>          <setting name="logImpl" value="LOG4J2" />      </set

php 打印debug日志

A lesser known trick is that mod_php maps stderr to the Apache log. And, there is a stream for that, so file_put_contents('php://stderr', print_r($foo, TRUE)); will nicely dump the value of $foo into the Apache error log. 转自: http://stackoverflow.com

debug日志1(python)

1.     Python中向文件中写入内容的时候如果想每写一个就输入一个回车,做法是:f.write(str + '\n').\n 是要加引号的,写入的时候unix系统会直接写\n, win系统会自动替换为\r\n.如果在此处写入'\r\n',则windows上这里相当于回车加上再空一行. 2.     在windows操作系统上一定要注意'\'才是转义字符,'/'是除,'//'是取余. 3.     Python中range()的三个参数分别是起始元素,终止值,步长.但是终止值是不包括在里面

debug日志2(python)

1.      写正则表达式时,为什么要加上re.S Make the '.' special character match any character at all, including a newline; without this flag, '.' will match anything except a newline. 2.    正则匹配中search,match,findall的差别 match()函数只检测RE是不是在string的开始位置匹配,search()会扫描整个st

DNS的视图功能以及日志系统

实验环境:RHEL5.8 32Bit DNS的视图功能以及日志系统详解 DNS的主配置文件中的allow-recursion参数用来定义能够和DNS服务器进行递归的客户端来源,allow-query参数用来定义允许到DNS服务器上面发起查询请求的客户端,allow-transfer参数用来定义允许和DNS服务器进行区域传送的客户端,区域传送主要有两种方式,axfr和ixfr,使用dig命令也可以模拟实现区域传送: 如果我们的DNS服务器允许进行递归.发起查询请求以及进行区域传送的客户端比较多的话