首页 > 其他分享 >Codeforces Round 886 (Div. 4)

Codeforces Round 886 (Div. 4)

时间:2023-07-22 10:57:22浏览次数:52  
标签:typedef const 886 int Codeforces long solve Div define

Codeforces Round 886 (Div. 4)

A - To My Critics

思路:最大的两个数的和大于等于10则YES

#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int,int>PII;

typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e6+5,INF=0x3f3f3f3f,Mod=1e9+7;
const double eps=1e-6;

void solve(){
    int a[3];
    cin>>a[0]>>a[1]>>a[2];
    sort(a,a+3);
    if((a[1]+a[2])>=10)cout<<"YES\n";
    else cout<<"NO\n";
}
signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t=1;
    //init();
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}
View Code

 

B - Ten Words of Wisdom

思路:找出a小于等于10的,对应的最大的b

#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int,int>PII;

typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e6+5,INF=0x3f3f3f3f,Mod=1e9+7;
const double eps=1e-6;

void solve(){
    int n;cin>>n;
    int ans,ma=-1;
    for(int i=0,a,b;i<n;++i){
        cin>>a>>b;
        if(a<=10&&b>ma){
            ans=i+1;
            ma=b;
        }
    }
    cout<<ans<<'\n';
}
signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t=1;
    //init();
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}
View Code

 

C - Word on the Paper

思路:枚举8*8,找出所有英文字符

#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int,int>PII;

typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e6+5,INF=0x3f3f3f3f,Mod=1e9+7;
const double eps=1e-6;

void solve(){
    string s[8];
    string ans="";
    for(int i=0;i<8;++i){
        cin>>s[i];
        for(int j=0;j<8;++j){
            if(s[i][j]!='.')ans.push_back(s[i][j]);
        }
    }
    cout<<ans<<'\n';
}
signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t=1;
    //init();
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}
View Code

 

D - Balanced Round

题意:操作有:任意排序、任意移出,问最小的移出数使得序列中相邻两个数的差不大于k;

思路:对序列排序后,找出相邻两个数不超k的最长序列长度s,答案为n-s

#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int,int>PII;

typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e6+5,INF=0x3f3f3f3f,Mod=1e9+7;
const double eps=1e-6;

void solve(){
    int n,k;cin>>n>>k;
    vector<int>ve(n);
    for(int i=0;i<n;++i)cin>>ve[i];
    sort(ve.begin(),ve.end());
    int ans=1;
    for(int i=1,c=ve[0],p=1;i<n;++i){
        if(abs(ve[i]-c)<=k)p++;
        else{
            ans=max(ans,p);
            p=1;
        }
        c=ve[i];
        if(i==n-1)ans=max(ans,p);
    }
    cout<<n-ans<<'\n';
}
signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t=1;
    //init();
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}
View Code

 

E - Cardboard for Pictures

题意:所有图片下都有宽为w的框架,问w为多少时所有图片加上框架后的面积刚好为c

思路:c=(s1+2*w)2+(s2+2*w)2+...+(sn+2*w)2=(s12+s22+...sn2)+4*n*w2+4*w*(s1+s2+...+sn),二分w即可

#include<bits/stdc++.h>
using namespace std;
//#define int long long
#define int __int128
typedef pair<int,int>PII;

typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e6+5,INF=0x3f3f3f3f,Mod=1e9+7;
const double eps=1e-6;
int read()
{
    int res=0;
    char scan[1005];
    scanf("%s",scan);
    for(int i=0;i<strlen(scan);i++)
        res*=10,res+=scan[i]-'0';
    return res;
}
void print(int num)
{
    if(num>9)
        print(num/10);
    putchar(num%10+'0');
}
void solve(){
    int n,c;
    n=read(),c=read();
    vector<int>s(n);
    int s1=0,s2=0;
    for(int i=0;i<n;++i){
        s[i]=read();
        s1+=s[i]*s[i];
        s2+=s[i];
    }
    int l=0,r=1e9,ans;
    auto check=[&](int x){
        int y=s1+4*x*s2+4*x*x*n;
        return y>=c;
    };
    while(l<=r){
        int mid=l+r>>1;
        if(check(mid))ans=mid,r=mid-1;
        else l=mid+1;
    }
    cout<<(long long)ans<<'\n';
}
signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t=1;
    //init();
    t=read();
    while(t--){
        solve();
    }
    return 0;
}
View Code

 

F - We Were Both Children

思路:统计所有ai及其个数,枚举ai所有不大于n的倍数,统计其个数,最大的个数即为答案

#include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
typedef pair<int,int>PII;

typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=3e2+5,INF=0x3f3f3f3f,Mod=1e9+7;
const double eps=1e-6;


void solve(){
    int n;cin>>n;
    map<int,int>mp;
    vector<int>ve(n+1);
    for(int i=0,x;i<n;++i){
        cin>>x;
        mp[x]++;
    }
    for(auto v:mp){
        for(int i=v.first;i<=n;i+=v.first)ve[i]+=v.second;
    }
    cout<<*max_element(ve.begin(),ve.end())<<'\n';
    return ;
}

signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int T=1;
    //init();
    cin>>T;
    while(T--){
        solve();
    }
    return 0;
}
View Code

 

G - The Morning Star

思路:统计所有平行四条轴线上的点的个数;若一条线上有s个点,贡献为C(s,2),由于可以是双向的,再乘上2;统计所有线的贡献

#include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
typedef pair<int,int>PII;

typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=1e6+5,INF=0x3f3f3f3f,Mod=1e9+7;
const double eps=1e-6;

void solve(){
    int n;cin>>n;
    map<int,int>mp1,mp2,mp3,mp4;
    for(int i=0,x,y;i<n;++i){
        cin>>x>>y;
        mp1[x-y]++;
        mp2[x+y]++;
        mp3[x]++;
        mp4[y]++;
    }
    int ans=0;
    for(auto v:mp1)ans+=v.second*(v.second-1);
    for(auto v:mp2)ans+=v.second*(v.second-1);
    for(auto v:mp3)ans+=v.second*(v.second-1);
    for(auto v:mp4)ans+=v.second*(v.second-1);
    cout<<ans<<'\n';
}
signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t=1;
    //init();
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}
View Code

 

H - The Third Letter

思路:用图来表示,所有关系用带权无向边存。遍历所有点,若该点没有确定,则确定该点,而后遍历与该点相连的所有点,维护距离;根据点是否被确定过,判断距离是否冲突

#include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
typedef pair<int,int>PII;

typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=3e2+5,INF=0x3f3f3f3f,Mod=1e9+7;
const double eps=1e-6;


void solve(){
    int n,m;cin>>n>>m;
    vector<PII>ve[n+1];
    for(int i=0,a,b,d;i<m;++i){
        cin>>a>>b>>d;
        ve[a].push_back({b,d});
        ve[b].push_back({a,-d});
    }
    vector<int>d(n+1,INF);
    for(int i=1;i<=n;++i){
        if(d[i]!=INF)continue;
        d[i]=0;
        queue<int>q;q.push(i);
        while(q.size()){
            int t=q.front();q.pop();
            for(auto v:ve[t]){
                if(d[v.first]==INF){
                    d[v.first]=d[t]+v.second;
                    q.push(v.first);
                }else if(d[v.first]!=d[t]+v.second){
                    cout<<"NO\n";return ;
                }
            }
        }
    }
    cout<<"YES\n";
    return ;
}

signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int T=1;
    //init();
    cin>>T;
    while(T--){
        solve();
    }
    return 0;
}
View Code

 

标签:typedef,const,886,int,Codeforces,long,solve,Div,define
From: https://www.cnblogs.com/bible-/p/17572970.html

相关文章

  • 「解题报告」Codeforces Round 886 (Div. 4)
    比赛地址:Dashboard-CodeforcesRound886(Div.4)-Codeforces由于时间太晚了,因此并没有参加比赛,题目都是后来补做的。A.ToMyCriticsProblem-A-Codeforces\(T\)组数据,有\(a,b,c\)三个数,判断是否存在两个数的和\(sum\ge10\)。/*Thecodewaswrittenby......
  • Codeforces 1456E - XOR-ranges
    考虑一个\(L\lex\leR\)的数\(x\),必然是一段前缀贴着\(L\)或者\(R\),然后下一位脱离了\(L\)和\(R\)的限制,后面随便乱填。注意到一个性质,对于某一位\(d\),考虑这一位上没有限制的那些位置,最优方案肯定是令其等于其左边(或者右边)第一个有限制的数的第\(d\)位上的值。这......
  • Codeforces Round 886 (Div. 4)
    A.ToMyCritics#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongvoidsolve(){vector<int>a(3);for(auto&i:a)cin>>i;sort(a.begin(),a.end());if(a[2]+a[1]>=10)cout......
  • Codeforces 1830E - Bully Sort
    这种题肯定首先要寻找不变量。显然后面排好序的后缀不会被改变。因此从整体上来看我们的流程肯定是,如果当前\(p_n=n\),就令\(n\)减一,否则你一步换的\(i\)肯定满足\(p_i=n\)。而显然\(\min\limits_{j=i}^np_j\lei\),因此我们考察\(\sum|i-p_i|\)和\(\sum\limits_{i<j}[p_......
  • Codeforces 794G - Replace All
    一个比较垃圾的做法,卡着时限过了这道题。首先大胆猜个结论:要么\(|s|=|t|\),此时\(A,B\)任取,要么存在字符串\(c\)和整数\(x,y\)使得\(A=c^x,B=c^y\),其中\(c^x\)表示\(x\)个\(c\)拼接得到的结果。证明的话感觉还挺复杂的,可能要border引理之类的东西,不过我是先写了个......
  • 洛谷 P8861 - 线段
    牛逼题。先考虑\(l\le10^5,10^5+1\ler\)的部分分:一种方法是线段树,即因为左右端点是独立的,因此对左右端点各维护一个权值线段树表示有多少个区间以这个值为左/右端点,这样对于修改,左端点的部分相当于先查询\(\lel\)的数的个数,然后将它们都挂到\(l\)上,最后把\(<l\)的部......
  • Vue3 响应式全局对象json 动态绑定界面三 (Div块样式 字符串叠加)
    效果 man.js  定义响应式全局对象 globalData//全局对象constglobalData=reactive({missedCallData:"",currentUserTel:"",})app.provide('globalData',globalData);在main.js的函数中改变missedCallData 的值从而改变界面列表//改变全局变量gl......
  • Vue3 响应式全局对象json 动态绑定界面四 (Div块样式 Json数据绑定)
    效果man.js  定义响应式全局对象 globalData//全局对象constglobalData=reactive({extTelTalkData:[{userExten:"1000",userName:"刘亦菲",callStatus:"通话"},{......
  • Codeforces 856F - To Play or not to Play
    首先,DP肯定是逃不掉的,因为直接贪心其实不好判断在两个人都可以上线的时间段究竟是哪个人上线,需要通过后面的情况来做出判断,但是这题值域比较大直接维护DP值肯定不行,因此考虑先设计一个与值域有关的DP然后优化。将时间区间离散化,然后依次考虑每个时间区间。一个很自然的想法......
  • Codeforces Round div.2 C
    Smiling&Weeping----我对姑娘的喜欢,何止钟意二字题目链接:Problem-C-Codeforces自我分析:我感觉这是一道很有意义的题目,可以帮我们更好的理解二进制的本质思路:首先先了解一下题目,我们是求由第i个数到末尾的异或和(异或:相同为0,不同为1),那么我......