一排学生共 个人在一起听课,分别坐在位置 ,每个人都有一个听课认真度 ,这时来了一个调皮的插班生,他会影响别人听课。具体来说,距离他 的学生(距离即两个人位置之差的绝对值),听课认真度将减少 ,注意,一位学生的听课认真度不会因为插班生的到来而被降低到负数(即最少被降低到 0)。总共有 个座位供插班生选择,被占领座位的学生将被踢出班级,其他人的座位不变,但听课认真度会减少。现在想知道,如果插班生坐在了位置 ,所有学生的听课认真度之和分别是多少。(插班生没有听课认真度)
区块链毕设网qklbishe.com为您提供问题的解答
一排学生共 个人在一起听课,分别坐在位置 ,每个人都有一个听课认真度 ,这时来了一个调皮的插班生,他会影响别人听课。具体来说,距离他 的学生(距离即两个人位置之差的绝对值),听课认真度将减少 ,注意,一位学生的听课认真度不会因为插班生的到来而被降低到负数(即最少被降低到 0)。总共有 个座位供插班生选择,被占领座位的学生将被踢出班级,其他人的座位不变,但听课认真度会减少。现在想知道,如果插班生坐在了位置 ,所有学生的听课认真度之和分别是多少。(插班生没有听课认真度)
主要是求使左右侧同学专注度有效的边界坐标,和维护左右侧有效的同学个数
#include <bits/stdc++.h> using namespace std; const int N = 1E5 + 5; // b[i]: 插班生在位置 i 时, 使右侧同学专注度为 0 的个数 // c[i]: 插班生在位置 i 时, 使左侧同学专注度为 0 的个数 int a[N], b[N], c[N]; int n; int main() { cin >> n; for (int i = 1; i <= n; i ++) { cin >> a[i]; if (a[i] > n - 1) continue; // 在右侧时永远有效 int x = i - n + a[i]; // 使其专注度为 0(开始失效)的插班生坐标 b[max(0, x)]++; } // 左侧有效个数,右侧有效个数 int cntl = 0, cntr = n - b[0]; long long ans = 0; // 先假设插班生在位置 0 求出此时答案 for (int i = 1; i <= n; i ++) ans += max(0, a[i] - (n - i)); // 插班生位置从左向右移动 for (int i = 1; i <= n; i ++) { // 判断第 i 名同学此前是否一直有效, 并暂时将其移除 if (a[i] > n - 1) { cntr--; ans -= (a[i] - (n - 1)); } ans -= cntr; // 右侧有效的同学每人贡献 -1 ans += cntl; // 左侧有效的同学每人贡献 +1 cout << ans << " "; // 输出答案 // 将第 i 名同学移动在左侧, 计算初始贡献 ans += max(0, a[i] - n); int x = n - a[i] + i; // 使其专注度为 0(开始生效)的插班生坐标 x = min(n + 1, x); // 防止下标越界 c[max(i, x)]++; // 至少在当前位置开始生效 // 更新下一位置的左右侧有效个数 cntr -= b[i]; cntl += c[i]; } return 0; }
56:47
以上就是关于问题一排学生共 个人在一起听课,分别坐在位置 ,每个人都有一个听课认真度 ,这时来了一个调皮的插班生,他会影响别人听课。具体来说,距离他 的学生(距离即两个人位置之差的绝对值),听课认真度将减少 ,注意,一位学生的听课认真度不会因为插班生的到来而被降低到负数(即最少被降低到 0)。总共有 个座位供插班生选择,被占领座位的学生将被踢出班级,其他人的座位不变,但听课认真度会减少。现在想知道,如果插班生坐在了位置 ,所有学生的听课认真度之和分别是多少。(插班生没有听课认真度)的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训
从业7年-专注一级市场
微信:btc9767
TELEGRAM :https://t.me/btcok9
具体资料介绍
web3的一级市场千万收益的逻辑
进群点我
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 一排学生共 个人在一起听课,分别坐在位置 ,每个人都有一个听课认真度 ,这时来了一个调皮的插班生,他会影响别人听课。具体来说,距离他 的学生(距离即两个人位置之差的绝对值),听课认真度将减少 ,注意,一位学生的听课认真度不会因为插班生的到来而被降低到负数(即最少被降低到 0)。总共有 个座位供插班生选择,被占领座位的学生将被踢出班级,其他人的座位不变,但听课认真度会减少。现在想知道,如果插班生坐在了位置 ,所有学生的听课认真度之和分别是多少。(插班生没有听课认真度)
微信:btc9767
TELEGRAM :https://t.me/btcok9
具体资料介绍
web3的一级市场千万收益的逻辑
进群点我
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 一排学生共 个人在一起听课,分别坐在位置 ,每个人都有一个听课认真度 ,这时来了一个调皮的插班生,他会影响别人听课。具体来说,距离他 的学生(距离即两个人位置之差的绝对值),听课认真度将减少 ,注意,一位学生的听课认真度不会因为插班生的到来而被降低到负数(即最少被降低到 0)。总共有 个座位供插班生选择,被占领座位的学生将被踢出班级,其他人的座位不变,但听课认真度会减少。现在想知道,如果插班生坐在了位置 ,所有学生的听课认真度之和分别是多少。(插班生没有听课认真度)
进群点我
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 一排学生共 个人在一起听课,分别坐在位置 ,每个人都有一个听课认真度 ,这时来了一个调皮的插班生,他会影响别人听课。具体来说,距离他 的学生(距离即两个人位置之差的绝对值),听课认真度将减少 ,注意,一位学生的听课认真度不会因为插班生的到来而被降低到负数(即最少被降低到 0)。总共有 个座位供插班生选择,被占领座位的学生将被踢出班级,其他人的座位不变,但听课认真度会减少。现在想知道,如果插班生坐在了位置 ,所有学生的听课认真度之和分别是多少。(插班生没有听课认真度)
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 一排学生共 个人在一起听课,分别坐在位置 ,每个人都有一个听课认真度 ,这时来了一个调皮的插班生,他会影响别人听课。具体来说,距离他 的学生(距离即两个人位置之差的绝对值),听课认真度将减少 ,注意,一位学生的听课认真度不会因为插班生的到来而被降低到负数(即最少被降低到 0)。总共有 个座位供插班生选择,被占领座位的学生将被踢出班级,其他人的座位不变,但听课认真度会减少。现在想知道,如果插班生坐在了位置 ,所有学生的听课认真度之和分别是多少。(插班生没有听课认真度)