首页 > 其他分享 >#888

#888

时间:2023-08-06 16:22:04浏览次数:25  
标签:int 888 cin long vis num ans

//A
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+10,mod=1e9+7;
string s;
int n,t,a[N],f[N],res,num,ans,m,k,p;
bool vis[N];
signed main()
{
    std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    cin>>t;
    while(t--){
        cin>>n>>m>>k>>p;
        res=0;
        for(int i=0;i<n;i++){
            cin>>num;
            if(abs(num-p)%k!=0) continue;
            if(abs(num-p)>m*k) continue;
            res++;
        }
        cout<<res<<endl;
    }
    return 0;
}
//B
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+10,mod=1e9+7;
string s;
int n,t,a[N],f[N],res,num,ans,m;
bool vis[N];
signed main()
{
    std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    cin>>t;
    while(t--){
        cin>>n;
        for(int i=0;i<n;i++) cin>>a[i],f[i]=a[i];
        sort(f,f+n);
        for(int i=0;i<n;i++){
            if(f[i]%2==0&&a[i]%2==0) continue;
            else if(f[i]%2!=0&&a[i]%2!=0) continue;
            else{
                cout<<"NO"<<endl;
                goto nexts;
            }
        }
        cout<<"YES"<<endl;
        nexts:;
    }
    return 0;
}
//c
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+10,mod=1e9+7;
string s;
int n,t,a[N],f[N],res,num,ans,m,k;
bool vis[N];
signed main()
{
    std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    cin>>t;
    while(t--){
        cin>>n>>k;
        int num1=0,num2=0;
        for(int i=0;i<n;i++) cin>>a[i];
        for(int i=0;i<n;i++){
            if(a[i]==a[0]) num1++;
            if(num1>=k&&a[i]==a[n-1]) num2++;
        }
        if((num1>=k&&num2>=k)||(a[0]==a[n-1]&&num1>=k)) cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }
    return 0;
}
//d
//可以观察规律,当差分数组有两个数未出现,则第一个数组的合一定是序列的前缀和
//如果只有一个数没出现,则用序列的前缀和减去第一个数组的合就是那个剩下的数
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+10,mod=1e9+7;
string s;
int n,t,a[N],f[N],res,num,ans,m,k,c[N];
map<int,int>vis;
void solve()
{
    vis.clear();
    cin>>n;
    int num=0,ans=0,sum=(n*(n+1))/2,flag=1;    
    for(int i=1;i<n;i++){
        cin>>a[i];
        c[i]=a[i]-a[i-1];
        vis[c[i]]=1,num+=c[i];
    }
    for(int i=1;i<=n;i++) if(!vis[i]) ans++;
    if((ans==2&&num==sum)||(ans==1&&((sum-num)>=1&&(sum-num)<=n))) cout<<"YES"<<endl;
    else cout<<"NO"<<endl;
}
signed main()
{
    std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}
//d
//记忆化搜索
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+10,mod=1e9+7;
string s;
int n,t,a[N],f[N],res,num,ans,m,k;
int e[N*2],ne[N*2],h[N*2],idx;
bool vis[N];
void add(int a,int b){
    e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
void dfs(int x)
{
     if(vis[x]) return;
     vis[x]=true;
     int ans=0,cnt=0;
     for(int i=h[x];~i;i=ne[i]){
        int j=e[i];
        dfs(j);
        ans+=a[j],cnt++;
     }
     if(cnt) a[x]=min(a[x],ans);
}
void solve()
{
    scanf("%lld%lld", &n, &m);
    memset(vis,false,sizeof vis);
    memset(h, -1, sizeof h);
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=m;i++) cin>>k,a[k]=0;
    for(int i=1;i<=n;i++){
        int x,y;
        scanf("%lld", &x);
       while(x--) scanf("%lld", &y),add(i,y);
    }
    for(int i=1;i<=n;i++){
        dfs(i);
        printf("%lld ",a[i]);
    }
    printf("\n");
}
signed main()
{
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}

 

标签:int,888,cin,long,vis,num,ans
From: https://www.cnblogs.com/o-Sakurajimamai-o/p/17609524.html

相关文章

  • 1851 Round 888 (Div. 3)
    EscalatorConversations判断两人台阶是否为\(k\)的倍数且在\((0,m)\)内即可#include<bits/stdc++.h>usingnamespacestd;signedmain(){ intT; scanf("%d",&T); for(intn,m,k,H;T;--T){ scanf("%d%d%d%d",&n,&m,&a......
  • Codeforces Round 888 (Div. 3)
    比赛链接:https://codeforces.com/contest/1851A.EscalatorConversations题意:一个扶梯,共m阶,n人站,每个台阶高k,Vlad身高H,Vlad任意站,问有多少人站在这个扶梯上正好和Vlad齐平满足abs(H-h[i])%k==0&&abs(H-h[i])/k<=m-1&&H!=h[i]即可B.ParitySort题意:给出......
  • Codeforces Round 888 (Div. 3) 补题
    独立补了一道记忆化搜索的题,https://codeforces.com/contest/1851/problem/E由于初次接触对于使用场景和注意事项都不是很熟悉,写加调估计得有3h。本题的题面保证了本题是个无环图,允许dfs函数会有出口,存图不能用链式前向图,因为非常容易构造数据使得为稠密图,所以用二维数组或vec......
  • Codeforces Round 888 (Div. 3)
    传送门AEscalatorConversations读懂题意即可/*Author:north_hFile:A.cppTime:2023/7/26/12:32____________||_||__||__|'_\/_\|'__|__|'_\|'_\|......
  • Codeforces Round 888 (Div. 3)
    CodeforcesRound888(Div.3)T1​ 思路:直接模拟。T2​思路:首先记录原始数组的奇偶性,然后将奇数、偶数分为不同两组进行排序,然后再根据原数组的奇偶性按顺序填入奇数偶数,最后判断整个数组是否非递减。T3思路:我们已知开始在\(a_1\),最后在\(a_n\)。那么当\(a_1\ne......
  • Codeforces Round 888 (Div. 3) 题解
    考场上\(7\)题做出来\(4\)题,最后几分钟才把D题调出来,但还是吃了不少罚时A.EscalatorConversations\(O(n)\)枚举即可,对于每个人计算需要的间隔台阶数是否在\((0,m)\)以内以及相差高度是否是\(k\)的倍数B.ParitySort显然,偶数和奇数是不可能产生交换操作的,而偶数......
  • Codeforces Round 888 (Div. 3)记录
    A.EscalatorConversations#include<cstdio>#include<algorithm>#include<cmath>#include<vector>#include<string.h>#include<set>#include<string>#include<map>#include<iostream>#include<queue>......
  • Error: listen EADDRINUSE: address already in use 127.0.0.1:8888
    编译打包报错,Error:listenEADDRINUSE:addressalreadyinuse127.0.0.1:8888查询原因是端口被占用,关闭占用的端口号即可。具体怎么关闭端口,可以参考网上其他资料:https://blog.csdn.net/m0_55930697/article/details/118026084......
  • Codeforces Round 888 (Div. 3) A-F
    A.EscalatorConversations题意:有一个扶梯,有n个人要站扶梯,这个扶梯有m个位置,第i个位置的高度为i*k,Vlad高H,第i个人高h[i],当且仅当两个人所处的位置高度加上自身身高刚好相同时才能谈话,问能和Vlad谈话的有多少人。Solution直接计算即可voidsolve(){ intn,m,k,H;cin>>n>>m>>......
  • Codeforces Round 888 (Div. 3) - D
    目录D.PrefixPermutationSumsCodeforcesRound888(Div.3)赛后摘记D.PrefixPermutationSums题意判断给定的长为n-1数组,是否为某个1~n的序列的前缀和数组漏了一个数形成的数组思路就是判断能否变回去,毫无感情的判断机器法一:统计给定前缀和数组的差分数组得......