079C.D Decrease 构造+思维

题意:op:选出最大值减去n,其余值加上1. 构造出长度为n的序列,使得其经过k次操作后,每个元素都小于等于n-1. k<=1e16

逆操作:选一个元素加上n,其余减去1.(经过逆操作后,加上n个要为最大,其余不能<0)
k次操作后每个元素都小于等于n,最后的序列若能经过k次合法的逆操作就能得到答案.
构造最后的序列为
:0,1,2...n-1 k=0
:n,0,1...n-2 k=1
:n-1,n,0,.n-3 k=2
.....
2,3,4.....0 k=n-1.
1,2,3.....n k=n 经过n次操作后的序列和初始偏差一
则最后的序列开头为k/n...剩下k%n个操作暴力即可.

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+20;
const ll inf=1e16+1000;
ll k,n,a[N];
int main()
{
	while(cin>>k)
	{
		n=50;
		ll num=k/n,re=k%n;
		for(int i=1;i<=n;i++)
			a[i]=num+i-1;
		for(int p=1;p<=re;p++)
		{
			for(int i=1;i<=n;i++)
			{
				if(i==p)
					a[i]+=n;
				else
					a[i]--;
			}
		}
		printf("%lld\n",n);
		for(ll i=1;i<=n;i++)
			printf("%lld%c",a[i],i==n?‘\n‘:‘ ‘);
	}
	return 0;
}
//25720164523
//154320986863
//500000000000000000

  

题意:操作如上题,给出长度为n的序列a[i],为经过多少次操作后每个元素的值都小于等于n-1.
n<=50 a[i]<=1e16。

每次操作总和减小1,l=sum-n*(n-1) r=sum n^2枚举ans
等价操作:先给每个元素加上x后,还剩下x次减n+1操作.

若有元素大于n-1则 肯定要用减法 判断使用次数是否超过即可

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+20;
const ll inf=1e16+1000;
ll a[N];
int n;
int main()
{
    while(cin>>n)
    {
        ll sum=0;
        for(int i=1;i<=n;i++)
            cin>>a[i],sum+=a[i];
        ll l=sum-n*(n-1),r=sum;
        for(ll k=l;k<=r;k++)
        {
            if(k<0)    continue;
            ll res=0;
            bool ok=true;
            for(int i=1;i<=n;i++)
            {
                ll dif=max(0ll,a[i]+k-n+1);
                ll x=dif/(n+1);
                if(dif%(n+1))
                    x++;
                res+=x;
            }
            if(res==k)
            {
                cout<<res<<endl;
                break;
            }
        }
    }
    return 0;
}
//25720164523
//154320986863
//500000000000000000
时间: 2024-12-17 06:47:00

079C.D Decrease 构造+思维的相关文章

CF980B Marlin 构造 思维 二十四

Marlin time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output The city of Fishtopia can be imagined as a grid of 44 rows and an odd number of columns. It has two main villages; the first is locate

【构造 思维题】7.12道路建设

算是 [构造 meet in middle 随机 矩阵树定理]#75. [UR #6]智商锁 的变式吧 题目大意 构造一张点数$n\le 300$的图,使得$1$到$n$的最短路数量恰好为$k$($k\le 1000000007$) 题目分析 原文地址:https://www.cnblogs.com/antiquality/p/11181615.html

牛牛的BRD迷宫2 构造+思维

题目描述 牛牛有一个n*m的迷宫,对于迷宫中的每个格子都为'R','D','B'三种类型之一,'R'表示处于当前的格子时只能往右边走'D'表示处于当前的格子时只能往下边走,而'B'表示向右向下均可以走. 我们认为迷宫最左上角的坐标为(1,1),迷宫右下角的坐标为(n,m),除了每个格子有向右移动以及向下移动的限制之外,你也不能够走出迷宫的边界. 牛牛现在请你设计迷宫,但是要求你设计的迷宫符合他的要求,他要求你设计的迷宫从(1,1)节点移动到(n,m)节点不同的移动序列种类数目≡k(mod109+

Codeforces Round #628 (Div. 2)(异或,构造思维)

题意:给出u,v.要求给出一个最短的数组,要求这个数组异或结果为u,和为v.   解析 :所谓xor,相同为0,否则为1.就是一个不进位的二进制加法(这里不理解的建议去看看二进制加法法则,再与此做对比). 1:u>v.根据上述,不进位的u都比v大,那进位的话会更大,这些数加起来肯定比v大,所以无解,-1. 2:u==v,直接输出u即可    3:u<v.我们可以从结果为3个 数入手.可以构造为x,x,u.为什么,因为x^x==0,而0异或一个数等于这个数的本身,即x^x^u==u.要想保证和为

HDU 5379 Mahjong tree (详解,构造+思维)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5379 题面: Mahjong tree Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1148    Accepted Submission(s): 351 Problem Description Little sun is an art

CF989C A Mist of Florescence 构造 思维好题 第八题

A Mist of Florescence time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output As the boat drifts down the river, a wood full of blossoms shows up on the riverfront. "I've been here once," Mino

CodeForces 1325D - Ehab the Xorcist【构造+思维】

题意: 给出两个数 \(u,v\),求出一个元素个数最少的集合使得所有数的异或和为 \(u\),和为 \(v\).并输出元素个数和各个元素. 数据范围:\(0\leq u,v \leq 10^{18}\) 分析: 先分类讨论: 1.当 \(u>v\) 时,显然无解: 2.当 \(u=v\) 且 \(u!=0\) 时,解为 \(u\): 3.当 \(u=v\) 且 \(u=0\) 时,解为空: 4.当 \(u<v\) 时, 根据异或的性质,两个相同数异或结果肯定为 \(0\). 那么 \(v\)

如何运用结构化思维进行故障处理

近期收到朋友赠送的一本书-<深入浅出MySQL>.闲暇之余,阅读了部分章节,书中针对故障处理一节,给我印象颇深.书中提炼出的一些方法论,正是我之前在团队中推广的方法.其目的是为了将故障应急操作标准化,进而提升处理效率.推而广之,这其实是一种结构化思维在具体工作中的体现.而这种思想在某具体工作.乃至个人.团队发展等,均可发挥重要作用.特写下此文. 一.故障处理流程 1.1 示例:数据库故障处理 下面是来自网易的一些经验,整理自<深入浅出MySQL>一书. 1.1.1 事前:故障处理原

阅读说明和开发环境

一.阅读说明 计算机学科内在规律和特征,两个最根本的:"构造性" 和 "可行性".与构造性相应的的--构造思维,又称计算思维:通过算法的 "构造" 和实现来解决 一个给定问题 的 一种"能行"的思维方式. 本书最好有人带着学习:一定要注重书中的提示 学习算法的最好方法不是编写程序,而是手算 本书代码可在github下载,可上UVa做在线OJ 阅读本书请根据自身情况,因材施教ed 二.博客园使用 markdown:https:/