首页 > 其他分享 >2024.3.04~2024.3.10 by manjuan

2024.3.04~2024.3.10 by manjuan

时间:2024-03-10 21:44:06浏览次数:26  
标签:10 2024.3 cout int manjuan long -- test save

给你一个数组 a1,a2…an 。请计算有多少个图元 (i,j,k,l)符合以下条件:
· \(1\) \(\le\) \(i\)<\(j\)<\(k\)\(<\)\(l\)\(\le\)n
· a\(i\)\(=\) a\(k\) 和 a\(j\) \(=\) a\(l\)

\(Input\)
The first line contains a single integer \(t\) (\(1\)≤\(t\)≤\(100\)) — the number of test cases.

The first line of each test case contains a single integer \(n\) (\(4\)≤\(n\)≤\(3000\)) — the size of the array a.

The second line of each test case contains n integers a\(1\),a\(2\),…,a\(n\)(\(1\)≤a\(i\)≤\(n\)) — the array a.

It's guaranteed that the sum of n in one test doesn't exceed 3000.

\(Output\)
For each test case, print the number of described tuples.

题目链接:https://codeforces.com/contest/1400/problem/D

哈希一下其实可以更快,但是数据量不大,n方解决即可;

AC代码:


#include"bits/stdc++.h"
using namespace std;
using ll=long long;
#define int long long
const int Mod=998244353;


void save_the_people(){
    int n,ans{0};
    cin>>n;
    vector<int> a(n);
    for(int i{0};i<n;i++){
        cin>>a[i];
        a[i]--;
    }
    vector<int> c1(n),c2(n);
    for(int i{0};i<n;i++){
        fill(c1.begin(), c1.end(),0);
        fill(c2.begin(), c2.end(),0);
        for(int l{i+1};l<n;l++){
            c2[a[l]]++;
        }
        int res{0};
        for(int k{i+1};k<n;k++){
            res-=c1[a[k]];
            c2[a[k]]--;
            if(a[i]==a[k])
                ans+=res;
            res+=c2[a[k]];
            c1[a[k]]++;
        }
    }
    cout<<ans<<"\n";
}

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int t{1};
    cin>>t;
    while(t--) {
        save_the_people();
    }

}

题目链接:https://codeforces.com/contest/1934/problem/D1

一道位运算的题,只要找出初始数n转为二进制后第一二个1的位置和目标数第一个1的位置的关系即可解决;

/***
 *    author:  touirst
 *    created: now
***/
#include <bits/stdc++.h>

using namespace std;

using ll=long long;
const int N=1e9+5;

void save_the_newnew() {
    ll n,m;
    cin>>n>>m;
    //cout<<n<<"\n";
    //cout<<(n^m)<<"\n";
    if((n^m)<n){cout<<1<<"\n"<<n<<" "<<m<<"\n";return;}
    ll lim{0},bn{63},bm{63};
    vector<int> a(65),b(65);
    //cout<<n<<"\n";
    while(!((n>>bn)&1)){
        bn--;
    }
    //cout<<bn<<"\n";
    bn--;
    //cout<<bn<<"\n";
    while(!((n>>bn)&1)){
        bn--;
    }
    //cout<<bn<<"\n";
    lim=(1ll<<(bn+1))-1;
    //cout<<lim<<"\n";
    while(!((m>>bm)&1)){
        bm--;
    }
    if(lim==m){
        cout<<1<<"\n"<<n<<" "<<m<<"\n";return;
    }else if(lim<m||lim>=n){
        cout<<"-1\n";return;
    }else{
        cout<<2<<"\n"<<n<<" "<<lim<<" "<<m<<"\n";
    }
    //cout<<bm<<"\n";
    //cout<<((7>>0)&1)<<" "<<((7>>1)&1)<<" "<<((7>>2)&1);
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int ttt{1};
    cin>>ttt;
    while(ttt--){
        save_the_newnew();
    }
}

标签:10,2024.3,cout,int,manjuan,long,--,test,save
From: https://www.cnblogs.com/manjuan/p/18064870

相关文章

  • vs2019单独重新安装python37_64失败解决办法(bilibili上我最早写的是https://www.bilib
    上个周末的时候,我发现用vs2019编写python的时候。代码高亮出现了奇怪的问题,进入解决方案的时候,print还是蓝色的,但是过了几秒钟后就变为黑色了,因此在最开始的时候我试图通过换一个皮肤和在管理扩展里面找扩展来解决,但是还是有相关问题。于是到vs2019对应的python文件夹找问题,目录是......
  • 3.10
    昨天放假回去得知我对象给我买了一个重云的吧唧,真的好可爱啊......
  • 3101: *【莫比乌斯反演:练习】gcd(i,j)=k的对数[POI2007]ZAP-Queries
    问题给出\(n,m,k\)(\(1\leqn,m,k\leq10^5\)),求\(\sum\limits_{i=1}^n\sum\limits_{j=1}^m\lbrack\gcd(i,j)=k\rbrack\),即:满足\(1\leqi\leqn\),\(1\leqj\leqm\),且\(\gcd(i,j)=k\)的二元组\((i,j)\)的数量。题解\(\sum\limits_{i=1}......
  • 2024年3月10号题解
    299.猜数游戏解题思路对出现的数字在两个数组中进行统计先计算公牛的个数,如果有那么统计的数字的数量对应减一,因为统计是用来算奶牛的数量的遍历统计数组,奶牛的数量加上两个数组中最小的值,因为是匹配,所以不可能多出来的也可以匹配,所以是加上其中的最小值代码实现intmin(i......
  • 2024.3 记录
    3.5vp了一场edu,过了四题,但是D题有*2100,自我感觉还行。这里写一下后三题的题解。CF1913DArrayCollapse数字互不相同,先上个单调栈求出每个点的支配区间。考虑dp,\(f_i\)表示只考虑\([1,i]\)时的方案数,找到最靠左的\(j\)满足\([j,i]\)间不存在小于\(p_i\)的数,那......
  • 10
    《程序是怎样跑起来的》第十章读后感通过了解汇编语言的作用,它是一种低级语言,直接与计算机硬件交互,可以实现对计算机硬件的精细控制。接着,作者介绍了汇编语言的基本语法,包括指令、操作数、寄存器等。此外,还通过一个简单的例子,演示了如何用汇编语言来实现一个加法运算。通过这个......
  • ARM MMU和cache简介 --20240310
    参考博客:与程序员相关的CPU缓存知识MMU:memorymanagementunit,称为内存管理单元,或者是存储器管理单元,MMU是硬件设备,它被保存在主存(mainmemory)的两级也表控制,并且是由协处理器CP15的寄存器1的M位来决定是enabled还是disabled。MMU的主要作用是负责从CPU内核发出的虚拟地址到物......
  • cache操作函数 --20240310
    Baremetal不讨论多级cache的情况下,裸驱两种关于dcache的操作:flush_dcache_all();//将cache里面的东西刷入内存invalidate_dcache_all();//将数据缓存中的所有内容无效化(invalidate)。该指令一般用于确保缓存中的数据与主内存中的数据同步flush_dcache_all()函数通常在嵌入......
  • 通达信买点100%指标公式源码1
    {通达信买点100%指标公式源码1}Var1:=1;趋势线:((3*SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1)-2*SMA(SMA((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100,5,1),3,1)-50)*1.032+50),COLORRED;Var2:=(2*CLOSE+HIGH+LOW+OPEN)/5;Var3:=LLV(LOW,34)......
  • printf函数与缓冲区 --20240310
    在linux下,printf输出到控制台经历了app->libc(stdio.h)->syscall->console驱动 下面是<<linux内核完全注释>>一书中的一段描述:继续看下write函数的实现:以下是write()函数的基本定义:#include<unistd.h>ssize_twrite(intfd,constvoid*buf,size_tcount);//ssize_t......