首页 > 其他分享 >Codeforces Round 875 (Div. 2)(D)

Codeforces Round 875 (Div. 2)(D)

时间:2023-07-08 17:12:54浏览次数:44  
标签:int tt 875 Codeforces long Div include define

Codeforces Round 875 (Div. 2)(D)

D (思维)

这个题意是给你两个数组,\(a\)和\(b\),我们需要找到这样的二元组\((i,j)\)满足\(a_i\times a_j=b_i+b_j\),问一共有多少组满足以上条件的二元组

题目还告诉我们数组里面的数字都是不大于\(n\)的,那么因为两个数相乘的范围一定是\(1-n\)的,那么我们可以枚举出较小的那一个\(a\),然后再对其他的\(n\)个\(a\)和\(b\),那么已知三项,可以求出剩余的一项,就是和我们枚举的这个\(a\)所对应的\(b\),所以,我们也要记录当\(a\)为此时枚举的数字是对应的\(b\)的数量,可以用一个\(vector\)来存(用\(map\)可能会超时,正好数据范围也不大)

但是还有一个小细节的地方,就是我们需要保证\(a\)是有序的(这个解法是在知乎博主那里看到的)而且必须是从大到小的

题解

我后面自己试验了一下,如果不是有序的,那么最后获得的答案可能会少

假设此时的\(a1\)是\(1\)

后面有\((a,b) (1,1),(1,3) (3,2) (6,3)\)只有按照从小到大的顺序才可,其他的都是不对的

其中原因我也不是很清楚

这样的话,我们可以造成二元组的一定是\(a\)大于等于\(a1\),\(a\)的乘积越来越大,对于同一个\(a\),\(b\)是递增的,那么我们所需的\(a2\)是在递减,但是感觉关系不大,还不是很懂为什么一定要排序

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include<cmath>
#include <unordered_map>
#include <array>
#include <cstring>
#include <bitset>
#include <numeric>
using namespace std;
#define int long long 
#define LL long long
#define ios  ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define inf 1e18
#define INF 1e18
#define eps 1e-10
#define mem(a,b) memset((a),(b),sizeof(a))
const int maxn=1e6+10;
const int mod=1e9+7;
int tt;
int n;
pair<int,int>x[maxn];
void solve()
{
  cin>>n;
  for(int i=1;i<=n;i++)
  {
    cin>>x[i].first;
  }
  for(int i=1;i<=n;i++)
  {
    cin>>x[i].second;
  }
  sort(x+1,x+1+n);
  int ans=0;
  for(int i=1;i*i<=n<<1;i++)
  {
    vector<int>cnt(n+1,0);
    int a1=i;
    for(int j=1;j<=n;j++)
    {
      int a2=x[j].first;
      int b2=x[j].second;
      int b1=a1*a2-b2;
      if(b1>=1&&b1<=n)
      {
        ans+=cnt[b1];
      }
      if(a1==a2)
      {
        cnt[b2]++;
      }
    }
  }
  cout<<ans<<"\n";
  return ;
}
signed main ()
{
  ios;
 // cin>>t;
  tt=1;
  cin>>tt;
  while (tt--)
  {
    solve();
  }
  system ("pause");
  return 0;
}

标签:int,tt,875,Codeforces,long,Div,include,define
From: https://www.cnblogs.com/righting/p/17537495.html

相关文章

  • CodeTON Round 5 (Div. 1 + Div. 2, Rated, Prizes!) A-E
    比赛链接A代码#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;boolsolve(){intn,m;cin>>n>>m;llsuma=0,sumb=0;for(inti=1,x;i<=n;i++)cin>>x,suma+=x;for(inti=1,......
  • Codeforces Round 882 (Div. 2)
    Preface这场现场打的,顶着第二天一早起来军训硬打到一点这场题目都是JOJO确实好评,但刚开始的评测姬爆让人很难顶啊,因为这个B题挂了一发没法第一时间改导致这场罚时裂开了这场写完D还有快50min,然后看一眼榜E出的人很少但是F好多人过然后就去想F,由于军训生物钟的缘故当时好困好困......
  • Codeforces Round 882 (Div. 2) C. Vampiric Powers, anyone?
    由题目观察可得,a[m+1]=a[i]^...a[m],,结合异或的性质a^b^a=b,可得如果在末尾添加一个a[m+1],a[m+1]会和末尾几个抵消掉,求得i~k这一段的异或和,k<m,因此通过该操作实际上我就可以求得所有长度连续区间的异或和,求其最大值,n=1e5+10,如果暴力求解肯定会超时,我们观察发现a[i]的范围为0~2^8......
  • Codeforces Round 882 (Div. 2) A-D
    ATheManwhobecameaGod 假设sum为omigaabs(a[i]-a[i-1])1<=i<=n 只有设置断点的时候,假设设置在t和t-1之间thevalue才会减少abs(a[t]-a[t-1]) 所以把差距最大的几个地方分段就行了#include<bits/stdc++.h>usingnamespacestd;#definemaxn400100#defi......
  • Educational Codeforces Round 151 (Rated for Div. 2) D. Rating System
    贪心由题可得,对于k的选择一定是单调递增的,对于前面选定的k后面选的k必须大于之前选的才会发生新的变化,因此k的选择其实是一个单调栈,由前缀和组成我们要想最后的结果最大,则k值一定要尽可能的高,例如当选中i为k值时,如果从i后面某个原本的前缀和要大于选k之后所得到的前缀和的话,说明......
  • Educational Codeforces Round 151 (Rated for Div. 2) C. Strong Password
    题目翻译,给定t组数据,每组数据包含一个字符串s,两个长度为m的字符串l和r,要求判断是否存在一个长度为m的字符串res,满足l[i]<=res[i]<=r[i](i->0~m)且不是s的子序列贪心首先对于所有满足l<res<r的字符串,我们只需判断是否存在一个字符串不是子序列即可,那么我们让res成为子序列的可能......
  • Codeforces Round 879 (Div. 2)
    Preface补题其实这场题目昨天基本就写好了,但因为昨天晚上有CF所以博客就先没写,鸽到今天才补这场的难度只能说有点过于简单了,D之前都是一眼题,E最近学校那边做过类似的题目,F读懂题意后想到关键后也是个丁真题A.UnitArray为了偷懒我就直接枚举最后有多少个\(-1\)了#include<......
  • linux系统报错:系统自己弹出诸如 kernel:NMI watchdog: BUG: soft lockup - CPU#2 stuc
    1、https://blog.csdn.net/weixin_41752389/article/details/120777145 内核软死锁(softlockup)Softlockup:这个bug没有让系统彻底死机,但是若干个进程(或者kernelthread)被锁死在了某个状态(一般在内核区域),很多情况下这个是由于内核锁的使用的问题。出现死锁原因1、CPU高负载时......
  • Effective Diversity in Population-Based Reinforcement Learning
    发表时间:2020(NeurIPS2020)文章要点:这篇文章提出了DiversityviaDeterminants(DvD)算法来提升种群里的多样性。之前的方法通常都考虑的两两之间的距离,然后设计一些指标或者加权来增加种群多样性,这种方式容易出现cycling,也就是类似石头剪刀布的循环克制的关系,造成训练不上去,......
  • CodeForces 1142E Pink Floyd
    洛谷传送门CF传送门感觉很神奇啊,想了挺久的。如果没有粉色边是容易的。竞赛图中,强连通分量缩点后,拓扑序较小的点向每一个拓扑序比它大的点连边。利用这个性质,我们维护一个答案集合\(S\),当\(|S|\ge2\)时,每次随意取出两个点\(u,v\inS\)。如果边的方向是\(u\tov\)......