Imprecise Computer - ( 思维 / 递推 )

中位数专题 题目一:洛谷P1168 中位数(vector用upper-bound二分有序插入) 题目描述 给出一个长度为NN的非负整数序列A_iAi​,对于所有1 ≤ k ≤ (N + 1) / 21≤k≤(N+1)/2,输出A_1, A_3, …, A_{2k - 1}A1​,A3​,…,A2k−1​的中位数。即前1,3,5,…1,3,5,…个数的中位数。 输入格式 第11行为一个正整数NN,表示了序列... 阅读详情
题目描述

The Imprecise Computer (IC) is a computer with some structural issue that it can compare two integers correctly only when their difference is at least two. For example, IC can always correctly answer ‘4 is larger than 2’, but it can answer either ‘2 is larger than 3’ or ‘3 is larger than 2’ (in this case, IC arbitrarily chooses one of them). For two integers x and y, we say ‘x defeats y’ when IC answers ‘x is larger than y’.

Given a positive integer n, let Pn = {1, 2, … , n} be the set of positive integers from 1 to n. Then we run a double round-robin tournament on Pn using IC. The double-round-robin tournament is defined as follows:
1.The tournament is composed of two rounds (the 1st round and the 2nd round).
2.For each round, each element in Pn is compared to every other element in Pn.
Now for each element k in Pn, let ri(k) be the number of wins of k in the i-th round of the tournament. We also define the ‘difference sequence’ D = d1d2…dn where for each 1 ≤ k ≤ n, dk = |r1(k) − r2(k)|.

The following shows an example when n = 5.

在这里插入图片描述
In the example above, r1(1) = 0, r1(2) = 1, r1(3) = 3, r1(4) = 3, r1(5) = 3, and r2(1) = 1, r2(2) = 1, r2(3) = 1, r2(4) = 3,r2(5) = 4. Therefore, the difference sequence is D = 1 0 2 0 1 in this example.

Given a sequence of n nonnegative integers, write a program to decide whether the input sequence can be a difference sequence of Pn.

输入

Your program is to read from standard input. The input starts with a line containing an integer n, (3 ≤ n ≤ 1,000,000), where n is the size of Pn. In the following line, a sequence of n integers between 0 and n is given, where each element in the sequence is separated by a single space.

输出

Your program is to write to standard output. Print exactly one line. Print YES if the sequence can be the difference sequence of Pn, and print NO otherwise.

样例输入
【样例1】
5
1 0 2 0 1
【样例2】
5
1 1 2 1 0
样例输出
【样例1】
YES
【样例2】
NO
题意

集合 Pn = { 1,2,3 … n },两轮游戏 , 每轮游戏 ,集合中的数两两对决,r1 ( k ) 代表数字 k 在 第一轮 游戏中胜利的次数 , r2 ( k ) 代表数字 k 在 第二轮 游戏中胜利的次数 ,d ( k ) = | r1 ( k ) - r2 ( k ) | ;
对决的规则:
如果 | 数x - 数y | >= 2 , 那么两个数中大的数胜利;
如果 | 数x - 数y | == 1 ,那么有两种可能( x 胜利 或者 y 胜利 )
给你数字 n ,再给你一个 d ( i ) ( 1 <= i <= n ) 的序列,问这个序列是否合法

思路

对于 1 , 只受 2 的影响;
对于 i ( 2 <= i <= n - 1 ) 只受 i - 1 和 i + 1 的影响;
对于 n 只受 n - 1 的影响;
取变量 pre 为 i - 1 对 i 产生的影响:

如果第一轮与第二轮 i - 1 与 i 的大小关系不一样,那么 i - 1 将对 i 产生 1 的影响( 单看这两个,差值为 1 );
如果第一轮与第二轮 i - 1 与 i 的大小关系一样,那么 i - 1 将对 i 产生 0 的影响( 单看这两个,差值为 0 );

对于每个位置的数 d ( i ) = d ( i - 1 ) 的影响 + d ( i + 1 ) 的影响;
因此 d ( i + 1 ) 的影响 = d ( i ) - d ( i - 1 ) 的影响;
即:

如果当前位置的数 d ( i ) == pre ,说明只有 d ( i - 1 ) 对它起了影响,d ( i + 1 ) 对它的影响为 0 ,也就是 d ( i ) 对 d ( i + 1 ) 的影响为 0 ,所以更新 pre 取值 0 ;

如果当前位置的数 d ( i ) == pre + 1 ,说明 d ( i - 1 ) 和 d ( i + 1 ) 都对它起了影响,d ( i + 1 ) 对它的影响为 1 ,也就是 d ( i ) 对 d ( i + 1 ) 的影响为 1 ,所以更新 pre 取值 1 ;
(例:1,2,3,第一轮:1 > 2 , 2 < 3 , 第二轮:1 < 2 , 2 > 3 , d 序列为,1,2,1)( 3 对 2 产生正影响 )

如果当前位置的数 d ( i ) == pre - 1 ,说明 d ( i - 1 ) 和 d ( i + 1 ) 都对它起了影响,d ( i + 1 ) 对它的影响为 1 ,也就是 d ( i ) 对 d ( i + 1 ) 的影响为 1 ,所以更新 pre 取值 1 ;
(例:1,2,3,第一轮:1 > 2 , 2 > 3 , 第二轮:1 < 2 , 2 < 3 , d 序列为,1,0,1)( 3 对 2 产生负影响 )

通过递推更新 pre 的值,来确定序列 d 的合法性

代码
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<queue>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;
const int maxn=1e6+10;
int n,a[maxn],flag,pre;
int main()
{
    ios::sync_with_stdio(false);
    cin>>n; 
    for(int i=1;i<=n;i++)    
        cin>>a[i];
    for(int i=1;i<n;i++)
    {
        if(a[i]==pre) 
            pre=0;
        else if(abs(a[i]-pre)==1)
            pre=1;
        else
        {
            flag=1;
            break;  
        }
    }
    if(flag) cout<<"NO";
    else
    {
        if(a[n]!=pre) flag=1;
        if(!flag) cout<<"YES";
        else cout<<"NO";
    }
    return 0;
}
swing hack 源代码 SWING HACKS:100个业界最尖端的技巧和工具。源代码。 立即下载

相关推荐

TI C2000 DSP CLA实战:用F28069的协处理器实现ADC采样与PWM相位实时联动控制

本文详细介绍了如何利用TI C2000系列DSP的CLA协处理器在TMS320F28069上实现ADC采样与PWM相位的实时联动控制。通过CLA的零周期上下文切换和硬件级任务触发特性,显著提升了电机控制和数字电源应用的实时性能,特别适用于需要亚微秒级响应的场景。

weixin_30932215的博客 3966

GYM-102920-L. Two Buildings(决策单调性+分治)

题目链接 题目大意: 求一段序列的 (h[i]+h[j])*(j-i) 的最大值 step1: 转化一下题意 (h[i]+h[j])(j-i) = ( h[j] - (-h[i]) )(j-i) 令a[i] = -h[i] ,b[i] = h[i] 然后全部转化为两种坐标 (i,a[i]) (i,b[i]) 这样题目就转化成了在一个坐标系中 求最大矩形的面积(选出左上角和右下角的点) step2: 去除一些多余的点 对于一个固定的(i,a[i])坐标,要想矩形面积最大,肯定是越往左上越好 对于

wmy0536的博客 462

OceanBase备租户创建(二):通过BACKUP DATABASE PLUS ARCHIVELOG

OceanBase数据库备租户创建方法二:通过BACKUP DATABASE PLUS ARCHIVELOG功能实现,特别适用于社区版和单机版部署模式。

Sebastien23的博客 539

gym102920 L. Two Buildings(决策单调性+分治)

题意: 给定长度为n的数组h, 要求计算max{(h[i]+h[j])*(j-i)},其中i<j. 数据范围:n<=1e6,1<=h(i)<=1e6

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 884

异构图中的注意力机制网络:节点级别和语义级别的注意力(Python实现)

在本文中,我们介绍了如何使用Python实现异构图中的节点级别注意力和语义级别注意力。通过语义级别注意力,我们可以根据节点的语义信息对节点进行加权聚合。在本文中,我们将介绍如何使用Python实现异构图中的注意力机制网络,包括节点级别的注意力和语义级别的注意力。最后,我们使用注意力权重对节点特征进行加权聚合,得到聚合后的节点表示。然后,将聚合后的节点表示传递给语义级别注意力模型,根据节点的语义信息进行加权聚合,得到最终的表示。函数中,首先使用节点级别注意力模型对节点特征进行聚合,得到聚合后的节点表示。

HackNebulaZ的博客 485

服务器取证——服务器基础知识

服务器基础知识

记录并分享学习安全的知识点.. 2480

练习赛一 B 朴素的中位数

B 朴素的中位数 时间限制:1000ms   内存限制:65536kb 通过率:62/80 (77.50%)    正确率:62/354 (17.51%) 题目描述 两个有序数组num1和num2,均是从小到大排列,长度分别为n和m。找出这两个数组的中位数。 输入 两个整数n,m,分别为数组num1和num2的长度(0 接下来n个数为num1中的整数。

Winjay_233的博客 489

华为od 面试八股文_测试/测试开发_05_含答案

华为od 面试八股文_测试/测试开发_05_含答案

MISAYAONE的博客 2555

给定一个由N个非负整数构成的序列,我们来定义一下序列的中位数,如果N是奇数,在对序列排序后,中位数就是最中间的那个数,即排序后,中位数的位置为(N+1)/2,这里序列的位置从1开始。如果N是偶数,则中

Problem Description 给定一个由N个非负整数构成的序列,我们来定义一下序列的中位数,如果N是奇数,在对序列排序后,中位数就是最中间的那个数,即排序后,中位数的位置为(N+1)/2,这里序列的位置从1开始。如果N是偶数,则中位数为排序后中间两个数和的一半,即N/2和(N/2)+1处。但是需要注意的是原始序列可能是未排序的。 你的任务就是编程找出给定序列中的中位数。 Input 第一行只有一个整数N,表示序列的长度。接下来就是N个数,每个数占一行,序列的长度范围为1到250000。序列中的每个

weixin_40222848的博客 1526

SOI LDMOS器件的Sentaurus TCAD建模与关键电学特性仿真研究

本文研究了SOI LDMOS器件的TCAD建模与电学特性仿真。通过Sentaurus TCAD平台建立了单RESURF结构的SOI LDMOS模型,详细阐述了器件结构原理和RESURF耐压机制。研究采用SDE进行几何定义和掺杂配置,在Sentaurus Device中构建了完整的物理模型体系,包括迁移率、复合和碰撞电离模型。通过系统仿真提取了器件的转移特性、输出特性和击穿特性等关键参数,分析了各参数对性能的影响规律。研究结果为功率半导体器件的仿真建模提供了规范化参考,有助于优化SOI LDMOS的性能设计。

huanghm88的专栏 134

信号与电源完整性5:轨道塌陷噪声/电源轨道噪声分析及降低解决方案

经过上一节关于串扰的分析,我们已经清楚,噪声问题不仅仅来源于信号网络;电源和地网络所产生的噪声,被反馈到其所在的元器件和信号网络时,其破坏力也是巨大的;本节所讨论的轨道塌陷噪声就是一个典型的实例。在经过电源的地网络的电流发生改变时,在电源和地之间的阻抗上将产生一个压降;由于该压降的产生,用电元件的电压将直接被拉低,甚至可能对电路产生功能性的错误。接下来硬小二将详细的分析电源轨道噪声和降低其的解决方法。...

fydar的博客 2241

2020-2021 ACM-ICPC [Gym-102920E] E - Imprecise Computer(构造,贪心)

方法一:DPDPDP 由于确定的答案对我们没有影响,只计算相邻数字的胜负情况 定义f[i][0/1]f[i][0/1]f[i][0/1]为ai,ai+1a_i,a_{i+1}ai​,ai+1​的胜负情况,每次直接暴力转移即可。 方法二:构造 考虑怎么来构造 由于一个数pxp_xpx​只取决于ak,ak+1a_k,a_{k+1}ak​,ak+1​的胜负关系和ak−1,aka_{k-1},a_kak−1​,ak​的胜负关系就好了 然后由于a1a_1a1​没有前缀,所以暂时只考虑a1,a2a_1,a_2a1​,

jziwjxjd的博客 870

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

2020-2021 ACM-ICPC, Asia Seoul Regional Contest

B - Commemorative Dice 签到。暴力枚举 C - Dessert Café 读懂题意就好做了。。(一直没读懂题意所以一直WA) 树。数有多少个点是在两个字母点之间的。 # include <bits/stdc++.h> # define fo(i,a,b) for(int i=(a);i<=(b);++i) # define pb push_back using namespace std; const int maxn = 1e5+10; int n,k; vecto

Artist's Garden 1735

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

upc string

时间限制: 1 Sec 内存限制: 128 MB 题目描述 Dave最近学习了字符串的字典序,他现在在思考这样一个问题,对于一个由小写字母组成的字符串s,最多可以去掉其中一个字符,如何使得得到的字符串的字典序最小。 字典序,顾名思义就是字典中的顺序,比较的方法是从前往后依次比较,直到第一个不同的字符来确定字典序,如果没有则长度较短的字典序小。 例如对于字符串s1 = “abc”, s2=“abdc”, 先比较第一个字符,相同,继续比较第二个字符,也相同,而第三个字符’c’<‘d’, 所以字典序s1&

Cosmic_Tree的博客 326

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Gym - 102920E E - Imprecise Computer题解

原题链接 题意 IC出了问题,对于两个差值小于二的数a,b进行大小比较时,有可能输出a >b也有可能输出a <b。 现对于长度为n的数列Pn={1,2,3,…,n}中每个数依次与别的数进行比较,若大于得一分,比赛进行两轮,让你判断输入的数组Dn是否为两场比赛中每个数可能出现的分差。 解析 由于电脑IC可能出现类似1 > 2 的情况并且这种错误会影响到下一个数的分数判断,所以我们的程序就是要判断出出错的地方并消除IC所判断的误差(将误差向后移动),最后判断当前位置的值是否符合题意即可。

Is_TuTouYa的博客 467

Imprecise Computer

原题链接 题意 存在一种不精确的计算机, 只有两个整数差值是 2 的时候才能正确比较两个数的大小, 而相邻两数比较时就会出现误差, 例如 2 和 3 比较, 它的答案是 "2 大于 3" 或 "3 大于 2"; 存在整数集 Pn = {1, 2, ..., n} 其中的某一元素 k 与其他元素比较, 统计出在不精确计算机比较下 k 小的元素的个数 r(k), 进行两轮比较, 即得出 r1(k) 和 r2(k); 定义一个差序列, d1, d2, ..., dn; 且dk = | r1(k) - r2(k)|

qq_51116262的博客 404

MATLAB矩阵求值

这篇博客我将介绍在MATLAB中矩阵的一些求值操作。有矩阵的行列式值,矩阵的秩,矩阵的迹,矩阵的范数,矩阵的条件数。 1.方阵的行列式。 det(A):求方阵A所对应的行列式的值。 2.矩阵的秩 矩阵线性无关的行数或列数成为矩阵的秩。 rank(A):求矩阵A的秩。 3.矩阵的迹 矩阵的迹等于矩阵的对角线之和,也等于矩阵的特征值之和. trace(A):求矩阵的迹. 4.向量和矩阵的范数. 矩阵或向量的范数用来度量矩阵或向量在某种意义下的长度。 5.矩阵的条件数。 矩阵A的条件数等于A的范数与A

追梦少年ML的博客 1万+

gym 102920 2020-2021 ACM-ICPC, Asia Seoul Regional Contest(部分简单题题解)

gym 102920I 题意:2e3大小a数组,2e5个询问,每次l r x,求l~r之间连续子段和小于等于x的最大值 题解:考虑离线做法,预处理所有区间的子段和,按照询问和子段和的大小从小到大排序,这样可以保证,每次询问的时候只要询问最大值,那么l ~ r拆开来拆成l一维r一维,就相当于求一个子矩形的最大值,用线段树维护,发现常数巨大,所以考虑树状数组,但树状数组维护的是前缀最大值,所以,把l翻转,前缀换成后缀,因为l>r时l ~ r的前缀和永远不会被更新,永远是-inf,所以查询后缀的大子矩形等价

m0_51128939的博客 777

SDUT 2021 Winter Team Contest - 8(Gym 102920)

Gym 102920B - Commemorative DiceC - Dessert CaféE - Imprecise ComputerG - Mobile Robot B - Commemorative Dice 题目链接 答案: #include <bits/stdc++.h> using namespace std; #define ll long long #define inf 0x3f3f3f3f int a[101],b[101]; int main() { for(int

qq_45830025的博客 403

Dessert Café

题目链接: Gym - 102920C . 题目描述: Kim, who wishes to start a business, is trying to open a dessert cafe he has been preparing after graduating from college. The road network in the town where Kim lives forms a tree structure, that is, a connected acyclic graph a

A1234567C8的博客 726

gym102920 G. Mobile Robot(思维)

题意:

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 754

《算法竞赛进阶指南》序列

序列 给定m个序列,每个包含n个非负整数。 现在我们可以从每个序列中选择一个数字以形成具有m个整数的序列。 很明显,我们一共可以得到nm个这种序列, 然后我们可以计算每个序列中的数字之和,并得到nm个值。 现在请你求出这些序列和之中最小的n个值。 输入格式 第一行输入一个整数T,代表输入中包含测试用例的数量。 接下来输入T组测试用例。 对于每组测试用例,第一行输入两个整数m和n。 接下在m行输入m个整数序列,数列中的整数均不超过10000。 输出格式 对于每组测试用例,均以递增顺序输出最小的n个序列和,数值

qq_42635159的博客 691

山东理工oj1833答案

A Problem Description 有一个长度为n的整数序列,其中最大值和最小值不会出现在序列的第一和最后一个位置。 请写一个程序,把序列中的最小值与第一个数交换,最大值与最后一个数交换。输出转换好的序列。 Input 输入包括两行。 第一行为正整数n(1≤n≤10)。 第二行为n个正整数组成的序列。 Output 输出转换好的序列。数据之间用空格隔开。 #i

a_madara的博客 9357

gym 102920 2020-2021 ACM-ICPC, Asia Seoul Regional Contest E G

E. Imprecise Computer 题意 总共进行两轮比赛,每一轮比赛每一个单位要和其他所有单位以位置为基础进行比较。 比较规则 1 位置差大于1,位置靠后的胜 2 位置差等于1,随机胜负 给定每个位置两轮胜场差的绝对值,问是否可能出现给定的胜负情况 题解 显然位置差大于1的会在两轮比较后抵消,对胜场差没有贡献,所以仅需考虑与左右两个位置的胜负关系即可。 G. Mobile Robot 题意 给定n个点的位置和一个距离d,移动这n个点使相邻点(值索引相差1的点)的距离变为d,求移动距离最大值的最小值

weixin_52315538的博客 580
上一篇: P2057 [SHOI2007]善意的投票 / [JLOI2010]冠军调查( 最小割 )
下一篇: Errich-Tac-Toe (Hard Version)
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值