原题连接:https://cn.vjudge.net/contest/298281
B - Element SwappingZOJ - 4101 题意:数组a通过交换一对值得到数组b,且已知 x= ∑ i = 1 n i ∗ a [ i ] \sum_{i=1}^ni*a[i] ∑i=1ni∗a[i]和y= ∑ i = 1 n i ∗ a [ i ] ∗ a [ i ] \sum_{i=1}^ni*a[i]*a[i] ∑i=1ni∗a[i]∗a[i] 和交换后的数组b, 求原来被交换的可能对数。 题解:用数组b求出交换后的x1= ∑ i = 1 n i ∗ b [ i ] \sum_{i=1}^ni*b[i] ∑i=1ni∗b[i]和y1= ∑ i = 1 n i ∗ b [ i ] ∗ b [ i ] \sum_{i=1}^ni*b[i]*b[i] ∑i=1ni∗b[i]∗b[i] 那么 ( y − y 1 ) / ( x − x 1 ) (y-y1)/(x-x1) (y−y1)/(x−x1)就是对应被交换的两个数 ( v a l 1 + v a l 2 ) ∗ k (val1+val2)*k (val1+val2)∗k,其中k为他们两个数下标的距离差值,详见代码
#include
#include
#include
#include
#include
using namespace std;
#define ll long long
const int maxn=100010;
int n;
int a[maxn];
ll x,y,x2,y2;
int c[maxn];
int main()
{
int t;
scanf("%d",&t);
while(t--){
scanf("%d%lld%lld",&n,&x,&y);
x2=y2=0LL;
for(int i=0;i0&&yy
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?