解题:CF1130E Wrong Answer
2024-10-12 04:53:14
巧妙构造题
这种题一定要限制一个条件,使得在这个条件下能推出要叉的代码的式子
令序列$a$的第一个元素为负,其余元素为正,且保证序列中至少有两个元素,那么Alice的代码将会从第二个元素开始计算,得到$(n-1)*(sum-a[1])$的答案。而这里答案实际可能有两种,Alice那样的$(n-1)*(sum-a[1])$和全部选取的$n*sum$(因为后面全是正的所以其他方案一定劣于这两种)。我们后者-前者作个差得到$sum-n-a[1]$,不妨令$a[1]=-1$,那么只需要构造一个长度为$n$而总和为$k+n-1$的序列即可
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,Maxx=1e6;
int k,s,p,a[N];
int main()
{
scanf("%d",&k);
a[p=]=-,s=-;
while(p!=)
{
a[++p]=Maxx,s+=a[p];
if(s-p+>k) {s-=a[p],a[p]-=s+a[p]-p+-k; break;}
}
s=;
for(int i=;i<=p;i++) s+=a[i];
if(s!=k+p-) printf("-1");
else
{
printf("%d\n",p);
for(int i=;i<=p;i++)
printf("%d ",a[i]);
}
return ;
}
最新文章
- P2有什么用
- $.grep(array, callback, [invert])过滤,常用
- 各种边缘检测算子特点比较(canny)
- xvfb启动PyQt4程序报Unable to load library icui18n错误
- Java、JVM和操作系统之间的关系,写给新人,
- C语言运算符优先级表
- MySQL 跳过同步错误方法
- linux xampp eclipse xdebug 无法进入断点
- SQL Server死锁的分析、处理与预防
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite
- ImageMagick图片服务器
- 【linux】mysql安装问题 g++: not found
- 全排列递归算法(元素有重复与无重复,C++实现)
- ningx.conf location
- 工程师常犯的web后台界面用户体验错误
- Spring容器初始话原理图
- linux中创建python的虚拟环境
- Linux中rz和sz命令用法详解
- poj3278
- ios中设置input为readonly后,解决弹起软键盘的问题