题意:给你a1~an,k,要求a1 + ... + ak < a2 + .... + ak+1 < a3 + ... + ak+2 <...,然后这里的ai有可能是?,要求你填?的数字,并且使a1~an的绝对值之和最小,不可能输出Incorrect sequence

思路:由上式要求我们可以得到a1 < ak+1 < ak+k+1 < ....且a2 < ak+2 < ak+k+2 < ....且...,所以可以转化为这样的要求。但是要绝对值最小怎么办,我们每次找连续的一连串?,尽可能让中间的位置为0,这样绝对值最小。所以我们先按中间赋值0这样去操作,然后再根据左右边界对整个区间进行修正,全加或全减一个数使得符合要求。

代码:

#include<cmath>
#include<set>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include <iostream>
#include<algorithm>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxn = 1e5 + 10;
const ull seed = 131;
const int INF = 0x3f3f3f3f;
const int MOD = 1000000009;
int n, k, none[maxn];
ll a[maxn];
int id(int j, int k, int i){return j * k + i;}
void solve(int ii, int l, int r){int m = (l + r) / 2;int num = 0;for(int i = m; i <= r; i++)a[id(i, k, ii)] = num++;num = 0;for(int i = m; i >= l; i--)a[id(i, k, ii)] = num--;int dis;if(l != 0){dis = a[id(l - 1, k, ii)] - a[id(l, k, ii)];if(dis >= 0){dis++;for(int i = l; i <= r; i++)a[id(i, k, ii)] += dis;}}if(id(r + 1, k, ii) <= n){dis = a[id(r, k, ii)] - a[id(r + 1, k, ii)];if(dis >= 0){dis++;for(int i = l; i <= r; i++)a[id(i, k, ii)] -= dis;}}
}
int main(){char o[20];scanf("%d%d", &n, &k);for(int i = 1; i <= n; i++){scanf("%s", o);if(o[0] == '?'){none[i] = 1;}else{sscanf(o, "%lld", &a[i]);}}for(int i = 1; i <= k; i++){int l = 0, r = 0, ok = 0;for(int j = 0; j * k + i <= n; j++){if(none[id(j, k, i)] && (j == 0 || !none[id(j - 1, k, i)])){l = j;ok = 1;}if(none[id(j, k, i)]){r = j;}else{if(ok){solve(i, l, r);ok = 0;}}}if(ok) solve(i, l, r);}ll tot = 0, pre;for(int i = 1; i <= k; i++){tot += a[i];}pre = tot;for(int i = k + 1; i <= n; i++){tot = tot - a[i - k] + a[i];if(tot <= pre){printf("Incorrect sequence\n");return 0;}pre = tot;}for(int i = 1; i <= n; i++){if(i != 1) printf(" ");printf("%d", a[i]);}printf("\n");return 0;
}

转载于:https://www.cnblogs.com/KirinSB/p/10692913.html

CodeForces 518E Arthur and Questions(贪心 + 思维)题解相关推荐

  1. CodeForces 508E Arthur and Brackets 贪心

    题目: E. Arthur and Brackets time limit per test 2 seconds memory limit per test 128 megabytes input s ...

  2. Codeforces 893 D Credit Card 贪心 思维

    题目链接: http://codeforces.com/contest/893/problem/D 题目描述: 每天晚上一个数值a,如果a>0表示今天收入a元,<0表示亏损a元,=0表示去 ...

  3. 1450F The Struggling Contestant(贪心+思维)

    1450F The Struggling Contestant(贪心+思维) Codeforces Global Round 12 F. The Struggling Contestant 题面:Th ...

  4. codeforces Gym 100338E Numbers (贪心,实现)

    题目:http://codeforces.com/gym/100338/attachments 贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案. #include< ...

  5. 贪心/思维题 UVA 11292 The Dragon of Loowater

    题目传送门 1 /* 2 题意:n个头,m个士兵,问能否砍掉n个头 3 贪心/思维题:两个数组升序排序,用最弱的士兵砍掉当前的头 4 */ 5 #include <cstdio> 6 #i ...

  6. cf:B. Patchouli‘s Magical Talisman【数学贪心思维 + 奇偶分析】

    分析 给出一堆数 可以通过相加或除2让它们全部变成奇数 如果全奇数返回0 由于奇数 + 偶数 = 奇数 所以只要有一个奇数就能把偶数和它相加不停的变成奇数 所以只要存在奇数,就可以返回偶数的个数 否则 ...

  7. 《C语言程序设计实践》————如何买玫瑰?(贪心思维)

    <C语言程序设计实践>----如何买玫瑰?(贪心思维) 要求:小慧过生日,小明要买玫瑰送她.每枝红玫瑰5元,满5支送1枝,满20枝送5枝.小明一共有n(n>10)元钱,最多能买到多少 ...

  8. CodeForces - 353E Antichain(贪心+思维)

    题目链接:点击查看 题目大意:给出n个点,用n-1条边连接,第i条边连接着点i与点(i+1)%n,也就是首尾相接组成了一个环,现在0表示点i连到点(i+1)%n的一条有向边,1表示点(i+1)%n连到 ...

  9. Codeforces Round #459 (Div. 2) C 思维,贪心 D 记忆化dp

    Codeforces Round #459 (Div. 2) C. The Monster 题意:定义正确的括号串,是能够全部匹配的左右括号串. 给出一个字符串,有 (.). ? 三种字符, ? 可以 ...

  10. Codeforces Round #694 (Div. 2) F. Strange Housing (贪心思维)

    F. Strange Housing 题意 有 nnn 个点和 mmm 条边,对点进行染色.要求一条边的两个点不能都染色,并且删除两端都没有染色的边之后,图连通.请给出一种染色方案. 题解 暴力贪心即 ...

最新文章

  1. 16万辆汽车已经用上中国“车规AI第一芯”,量产还在加速
  2. linux跳出循环的三种方式,shell study-13day--跳出循环(break、continue)
  3. linux查看服务依赖关系图,技术|教你如何在Fedora,CentOS,RHEL中检查RPM包的依赖性
  4. python 异常函数调用栈_Python捕获异常堆栈信息的几种方法
  5. Session,Cookie,jsessionid,Url重写
  6. 帧间、帧内像素块预测
  7. 迷失lost结局什么意思_蒙上你的眼结局是什么意思?最后谁活下来了
  8. 【安全风险通告】Spring Framework远程代码执行漏洞(CVE-2022-22965)安全风险通告第二次更新...
  9. 哥写的不是代码,是寂寞
  10. 原版Caffe在Windows10 VS2015 python3.7 CPU版本 详细安装笔记 BVLC caffe
  11. 苹果手机编辑word_苹果手机自带了三个PDF功能!每一个都这么好用!你知道几个呢?...
  12. 嵌入式开发-Telink芯片-入门介绍
  13. Vin码识别即车架号识别
  14. CentOS7安装 jq
  15. 阿里云的这群疯子--深度好文请仔细看完
  16. 图形界面介绍Violation Browser
  17. Fragment中OnCreate与OnCreateView区别
  18. 1407. 排名靠前的旅行者
  19. 《大明王朝》以牺牲换来大义
  20. js诟病Typescript、Java、JavaScript之间的借鉴与总结

热门文章

  1. 没有用括号确定操作符的优先级顺序,导致错误一例
  2. 编译OpenJDK8:specified bound depends on the length of the source argument
  3. 某LINUX下,从快捷方式的目录运行程序,参数就是快捷方式的名
  4. 线程锁并不是想象的那样可靠
  5. iOS锁屏代码注意使用新接口
  6. 使用pyqt开发gui(pyqt集成到pycharm)
  7. 服务器内的虚拟机无法上网,VMware虚拟机中无法上网如何解决
  8. 微博api unexpected response status: 403_抖音直播监控Api:开播查询
  9. 模型描述的关系模式_图解各种管理模型大全--管理模型大全
  10. android socket 失败,安卓Socket发起失败 急