关于临时HY学长被安排拉二分题不想翻译找到DYM学长这件事(二)

简介: 关于临时HY学长被安排拉二分题不想翻译找到DYM学长这件事(二)

C(二分答案)

C - NYOJ

mid越大,操作次数越少。

求操作次数,用向上取整,(判断a[i]-mid是否大于0,)

scanf,printf防超时

l,r设置,r可以略大,l可以略小(>0)

模拟时注意有哪些限制条件,列出来以正确设置变量

#include <iostream>
#include <cmath>
using namespace std;
int n,d;
#define int long long
typedef long long ll;
const int N = 1e5 + 10;
int a[N],k,maxn;
int res;
bool check(int mid){
    ll cnt = 0;
    for(int i = 0;i < n;i++){
        {//模拟中存在什么限制条件。
        if(a[i] - mid > 0)
           d = a[i] - mid;
        else d = 0;
        cnt += (d + k - 1 -1) / (k - 1);\//分子+分母-1/分母
        }//if(a[i]-mid>0) cnt+=(int)ceil(double(a[i]-mid)/(k-1));
        //int宏定义成long long了
    }
//    cout << "cnt = " << cnt << endl;
    if(cnt <= mid) return true;
    else return false;
}
signed main(){
    while(cin >> n){
        maxn = 0;
        for(int i = 0;i < n;i++){
            scanf("%lld",&a[i]);
            maxn = max(a[i],maxn);
        }
//    if(sum == n * a[0]) {cout << a[0] << endl; return 0;}
        cin >> k;
        if(k == 1 ){cout << maxn << endl; continue;}
        ll l = 1, r= maxn+1;
        while(l < r){
            ll mid = (l + r) >> 1;
            if(check(mid)) r = mid,res = mid;
            else l = mid + 1;
//           cout << "mid =" << mid << "l = " << l << "r=" << r << endl;
        }
    cout << res << endl;
    }   
    return 0;
}

D(贪心

D - NYOJmm

目前做的贪心思想普遍简单,不要想得太复杂

#include <iostream>
#include <algorithm>
typedef long long ll;
using namespace std;
const int N = 1e5;
struct cow{
    ll strength,weight;
}a[N];
bool cmp(cow a,cow b){
    return a.strength+a.weight > b.strength+ b.weight;
}
int main(){
    int n;
    ll cnt = 0;
    cin >> n;
    for(int i = 0;i < n;i++){
        cin >> a[i].weight >> a[i].strength;
        cnt += a[i].weight;
    }
    sort(a,a+n,cmp);
    ll maxn = -999999999999;
    for(int i = 0;i < n;i++){
        cnt -= a[i].weight;
        maxn = max(maxn,cnt - a[i].strength);
    }
    cout << maxn ;
    return 0;
}

总结

做的好:很快想出了大体思路

做的不好:细节几乎完全没有注意

花费了大量时间死磕。

反思:

1、卡题时直接判错,去模仿题解纠正

2、要学会找题解

3、哪怕摆烂几天都无所谓,但反思中的内容要严格执行

目录
相关文章
|
监控 数据可视化 安全
一套成熟的Spring Cloud智慧工地平台源码,自主版权,开箱即用
这是一套基于Spring Cloud的智慧工地管理平台源码,具备自主版权,易于使用。平台运用现代技术如物联网、大数据等改进工地管理,服务包括建设各方,提供人员、车辆、视频监控等七大维度的管理。特色在于可视化管理、智能报警、移动办公和分布计算存储。功能涵盖劳务实名制管理、智能考勤、视频监控AI识别、危大工程监控、环境监测、材料管理和进度管理等,实现工地安全、高效的智慧化管理。
173 8
|
JSON 小程序 Android开发
小程序列表左滑效果在IOS呈上下滑动影响样式
小程序列表左滑效果在IOS呈上下滑动影响样式
175 0
|
11月前
|
Rust 前端开发 jenkins
Tauri 开发实践 — 使用 CI/CD 自动构建发布 Tauri 桌面端应用
本文介绍如何使用 CI/CD 自动构建发布 Tauri 应用。Tauri 是一个轻量级跨平台客户端框架,适合个人应用。文章首先概述了 CI/CD 的基本流程,并介绍了 GitHub Actions、GitLab CI 和 Jenkins 三种工具。最终选择了 GitHub Actions 进行配置。文中详细展示了使用 GitHub Actions 脚本实现 Tauri 应用构建的过程,并解决了权限和安全问题。项目源码可在 GitHub 上获取。
606 5
Tauri 开发实践 — 使用 CI/CD 自动构建发布 Tauri 桌面端应用
|
11月前
|
存储 缓存 Java
Spring高手之路23——AOP触发机制与代理逻辑的执行
本篇文章深入解析了Spring AOP代理的触发机制和执行流程,从源码角度详细讲解了Bean如何被AOP代理,包括代理对象的创建、配置与执行逻辑,帮助读者全面掌握Spring AOP的核心技术。
262 3
Spring高手之路23——AOP触发机制与代理逻辑的执行
|
11月前
|
机器学习/深度学习 前端开发 网络架构
Django如何调用机器学习模型进行预测
Django如何调用机器学习模型进行预测
239 5
|
iOS开发
IOS编译出现Command PhaseScriptExecution failed with a nonzero exit code
IOS编译出现Command PhaseScriptExecution failed with a nonzero exit code
1652 2
|
缓存 负载均衡 应用服务中间件
Nginx 代理管理器强势登场!轻松设置反向代理,为你的网络安全与高效护航,快来探索!
【8月更文挑战第23天】Nginx 代理管理器(NPM)是一款强大的工具,用于简化反向代理的设置流程。反向代理能隐藏后端服务器的真实IP,提升安全性,实现负载均衡与缓存等功能。用户需先安装Nginx 代理管理器,然后通过其Web界面添加代理主机,指定代理名称、协议类型、服务器地址及端口等信息。对于HTTPS协议,还需上传SSL证书/密钥。完成设置后,可通过浏览器测试反向代理是否正常工作。Nginx 代理管理器还支持高级特性,如负载均衡、缓存及访问控制等。
339 1
|
移动开发 JavaScript 前端开发
Phaser和Three.js是两个非常流行的JavaScript游戏框架,它们各自拥有独特的核心功能和使用场景
【6月更文挑战第16天】Phaser是开源的2D游戏引擎,适合HTML5游戏,提供物理引擎、图像渲染和资源管理,适用于2D游戏,如消消乐。Three.js是基于WebGL的3D库,用于创建复杂的3D场景和应用,涵盖从游戏到可视化领域的多种用途。两者分别在2D和3D开发中展现强大功能,选择取决于项目需求。
298 8
|
存储 关系型数据库 MySQL
深入研究MySQL意向锁
MySQL意向锁是一种特殊的表级锁,由InnoDB存储引擎在操作数据之前自动添加,无需用户干预。它分为意向共享锁(IS)和意向排他锁(IX)两种。意向锁的主要作用是协调行锁和表锁的关系,优化加锁策略,避免全表扫描判断是否存在行锁。意向锁之间不会冲突,但会与表级别的排他锁冲突,从而确保数据库并发访问的一致性和完整性。简而言之,意向锁提高了数据库并发操作的性能和效率。
23017 5
|
数据库 SQL
间隙锁+临键锁
【8月更文挑战第1天】
134 0

热门文章

最新文章