CodeForces 518E Arthur and Questions(贪心 + 思维)题解
题意:给你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(贪心 + 思维)题解相关推荐
- CodeForces 508E Arthur and Brackets 贪心
题目: E. Arthur and Brackets time limit per test 2 seconds memory limit per test 128 megabytes input s ...
- Codeforces 893 D Credit Card 贪心 思维
题目链接: http://codeforces.com/contest/893/problem/D 题目描述: 每天晚上一个数值a,如果a>0表示今天收入a元,<0表示亏损a元,=0表示去 ...
- 1450F The Struggling Contestant(贪心+思维)
1450F The Struggling Contestant(贪心+思维) Codeforces Global Round 12 F. The Struggling Contestant 题面:Th ...
- codeforces Gym 100338E Numbers (贪心,实现)
题目:http://codeforces.com/gym/100338/attachments 贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案. #include< ...
- 贪心/思维题 UVA 11292 The Dragon of Loowater
题目传送门 1 /* 2 题意:n个头,m个士兵,问能否砍掉n个头 3 贪心/思维题:两个数组升序排序,用最弱的士兵砍掉当前的头 4 */ 5 #include <cstdio> 6 #i ...
- cf:B. Patchouli‘s Magical Talisman【数学贪心思维 + 奇偶分析】
分析 给出一堆数 可以通过相加或除2让它们全部变成奇数 如果全奇数返回0 由于奇数 + 偶数 = 奇数 所以只要有一个奇数就能把偶数和它相加不停的变成奇数 所以只要存在奇数,就可以返回偶数的个数 否则 ...
- 《C语言程序设计实践》————如何买玫瑰?(贪心思维)
<C语言程序设计实践>----如何买玫瑰?(贪心思维) 要求:小慧过生日,小明要买玫瑰送她.每枝红玫瑰5元,满5支送1枝,满20枝送5枝.小明一共有n(n>10)元钱,最多能买到多少 ...
- CodeForces - 353E Antichain(贪心+思维)
题目链接:点击查看 题目大意:给出n个点,用n-1条边连接,第i条边连接着点i与点(i+1)%n,也就是首尾相接组成了一个环,现在0表示点i连到点(i+1)%n的一条有向边,1表示点(i+1)%n连到 ...
- Codeforces Round #459 (Div. 2) C 思维,贪心 D 记忆化dp
Codeforces Round #459 (Div. 2) C. The Monster 题意:定义正确的括号串,是能够全部匹配的左右括号串. 给出一个字符串,有 (.). ? 三种字符, ? 可以 ...
- Codeforces Round #694 (Div. 2) F. Strange Housing (贪心思维)
F. Strange Housing 题意 有 nnn 个点和 mmm 条边,对点进行染色.要求一条边的两个点不能都染色,并且删除两端都没有染色的边之后,图连通.请给出一种染色方案. 题解 暴力贪心即 ...
最新文章
- 16万辆汽车已经用上中国“车规AI第一芯”,量产还在加速
- linux跳出循环的三种方式,shell study-13day--跳出循环(break、continue)
- linux查看服务依赖关系图,技术|教你如何在Fedora,CentOS,RHEL中检查RPM包的依赖性
- python 异常函数调用栈_Python捕获异常堆栈信息的几种方法
- Session,Cookie,jsessionid,Url重写
- 帧间、帧内像素块预测
- 迷失lost结局什么意思_蒙上你的眼结局是什么意思?最后谁活下来了
- 【安全风险通告】Spring Framework远程代码执行漏洞(CVE-2022-22965)安全风险通告第二次更新...
- 哥写的不是代码,是寂寞
- 原版Caffe在Windows10 VS2015 python3.7 CPU版本 详细安装笔记 BVLC caffe
- 苹果手机编辑word_苹果手机自带了三个PDF功能!每一个都这么好用!你知道几个呢?...
- 嵌入式开发-Telink芯片-入门介绍
- Vin码识别即车架号识别
- CentOS7安装 jq
- 阿里云的这群疯子--深度好文请仔细看完
- 图形界面介绍Violation Browser
- Fragment中OnCreate与OnCreateView区别
- 1407. 排名靠前的旅行者
- 《大明王朝》以牺牲换来大义
- js诟病Typescript、Java、JavaScript之间的借鉴与总结
热门文章
- 没有用括号确定操作符的优先级顺序,导致错误一例
- 编译OpenJDK8:specified bound depends on the length of the source argument
- 某LINUX下,从快捷方式的目录运行程序,参数就是快捷方式的名
- 线程锁并不是想象的那样可靠
- iOS锁屏代码注意使用新接口
- 使用pyqt开发gui(pyqt集成到pycharm)
- 服务器内的虚拟机无法上网,VMware虚拟机中无法上网如何解决
- 微博api unexpected response status: 403_抖音直播监控Api:开播查询
- 模型描述的关系模式_图解各种管理模型大全--管理模型大全
- android socket 失败,安卓Socket发起失败 急