首页 > 其他分享 >Codeforces Global Round 15

Codeforces Global Round 15

时间:2023-08-15 16:26:40浏览次数:48  
标签:typedef 15 int Global Codeforces long cin solve define

Codeforces Global Round 15

A - Subsequence Permutation

思路:找出原串与排序后的串不同的个数

#include <bits/stdc++.h>

using namespace std;

void solve(){
    int n;cin>>n;
    string s;cin>>s;
    string t=s;
    sort(t.begin(),t.end());
    int ans=0;
    for(int i=0;i<n;++i){
        ans+=(t[i]!=s[i]);
    }
    cout<<ans<<'\n';
}
int main() {
    ios::sync_with_stdio(0), cin.tie(0);
    int T;
    cin>>T;
    while(T--){
        solve();
    }
    
    return 0;
}
View Code

 

B - Running for Gold

思路:要找出一个人比所有人都好,依次比较所有人,找出一个最好的,再检查此人是否比其他人都好

#include <bits/stdc++.h>

using namespace std;

#define int long long

void solve() {
    int n;
    cin >> n;
    vector a(n, vector<int>(5));
    for (auto &i: a)
        for (auto &j: i)
            cin >> j;
    int t = 0;
    for (int i = 1, f; i < n; i++) {
        f = 0;
        for (int j = 0; j < 5; j++)
            f += (a[i][j] < a[t][j]);
        if (f >= 3) t = i;
    }
    int cnt = 0;
    for (int i = 0, f; i < n; i++) {
        if (i == t) continue;
        f = 0;
        for (int j = 0; j < 5; j++)
            f += (a[i][j] > a[t][j]);
        if (f >= 3) cnt++;
        else break;
    }
    if (cnt == n - 1) cout << t+1 << "\n";
    else cout << "-1\n";
    return;
}

int32_t main() {
    ios::sync_with_stdio(0), cin.tie(0);
    int t;
    cin >> t;
    while (t--)
        solve();
    return 0;
}
View Code

 

C - Maximize the Intersections

思路:对于初始没有弦的2n个点,可知连接1——1+n,2——2+n,...,n——n+n后的交点最多(弦的两边点的数量相同,弦与弦的较点更多);

那么忽略已定的点,剩余的点一定有偶数个,为1~2(n-k),连接1——1+n-k,2——2+n-k,...,n-k——2(n-k)后的图即为最优情况;

枚举所有两条边的情况,分别为x1、y1,x2、y2,当x1<x2时,满足x2<y1和y1<y2即满足两条边相交

#include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=200+5,INF=0x3f3f3f3f,Mod=1e9+7,mod=998244353;
const double eps=1e-6;

vector<PII>g;
vector<int>st,f;
void solve(){
    g.clear();
    f.clear();
    st=vector<int>(N,0);
    int n,k;cin>>n>>k;
    for(int i=0,u,v;i<k;++i){
        cin>>u>>v;
        if(u>v)swap(u,v);
        g.push_back({u,v});
        st[u]=st[v]=1;
    }
    for(int i=1;i<=2*n;++i){
        if(!st[i])f.push_back(i);
    }
    for(int i=0;i<n-k;++i){
        g.push_back({f[i],f[i+n-k]});
    }
    int ans=0;
    auto check=[](PII x,PII y){
        if(x.first>y.first)swap(x,y);
        return x.second<y.second&&y.first<x.second;
    };
    for(int i=0;i<n-1;++i)
        for(int j=i+1;j<n;++j){
            ans+=check(g[i],g[j]);
        }
    cout<<ans<<'\n';
    return;
}
signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t=1;
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}
View Code

 

D - Array Differentiation

思路:要构造一个数组b,满足ai=bj-bk;设a1=b1-b2,那么a2=b2-b3,...,an-1=bn-1-bn,还有一个an没有得出;

假设an=bn-b1,那么可以将b看作点,a看作边权,要得到所有的a,说明要有环,且有环的情况下:a1+a2+...+an=(b1-b2)+(b2-b3)+...+(bn-b1)=0;

由于边为有向边,且n<=10,可以用三进制表示出每条边的情况,判断是否有环;

#include<bits/stdc++.h>
using namespace std;
#define int long long
//#define int __int128
#define double long double
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef pair<string,string>PSS;
const int N=200+5,INF=0x3f3f3f3f,Mod=1e9+7,mod=998244353;
const double eps=1e-6;


void solve(){
    int n,m=1;cin>>n;
    vector<int>a(n);
    for(auto &v:a)cin>>v,m*=3;
    for(int i=1;i<m;++i){
        int now=i,sum=0;
        for(int j=0;j<n;++j){
            if(now%3==1)sum+=a[j];
            else if(now%3==2)sum-=a[j];
            now/=3;
        }
        if(!sum){
            cout<<"YES\n";return;
        }
    }
    cout<<"NO\n";
    return;
}
signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t=1;
    cin>>t;
    while(t--){
        solve();
    }
    return 0;
}
View Code

 

标签:typedef,15,int,Global,Codeforces,long,cin,solve,define
From: https://www.cnblogs.com/bible-/p/17631573.html

相关文章

  • Codeforces Round 892 (Div. 2) A-E
    A.UnitedWeStand题意:给出一个长为\(n\)的数组\(a\),将其中的元素分别放到空数组\(b\)和\(c\)中,使得\(c\)中的任意一个元素都不是\(b\)中任意一个元素的因数,并且两个数组都不是空数组Solution把\(a\)中最小的数放到\(b\),其它的都放到\(c\),一定可以保证要求成立voidsolve(){......
  • 8-15| _ctypes.COMError: (-2147352567, '发生意外。', ('无法获取 Document 对象', '
    此错误是一个COM错误,它与试图从Python通过`pyautocad`与AutoCAD通信时出现的问题有关。错误信息"无法获取Document对象"指示了问题的本质,即Python无法访问AutoCAD的当前文档。这里有一些建议来解决这个问题:1.**确保AutoCAD已经运行**:在尝试从Python访问Aut......
  • 8.15集训笔记
    上午测试讲题U259234累加累乘/accmul分析:直接开两个变量记录答案即可,使用for循环n次,对于s1也可以使用等差数列求和公式。点击查看代码#include<bits/stdc++.h>usingnamespacestd;intn;intmain(){cin>>n;ints1=0,s2=1;for(inti=1;i<=n;i++){......
  • ChatGPT 问答00015 Java中如何判断字符串中含有3个以上日语字符
    要判断一个字符串中是否包含3个或更多日语字符,可以使用Java的正则表达式进行匹配,并配合计数器来统计匹配到的日语字符数量。以下是一个示例的Java代码:importjava.util.regex.*;publicclassMain{publicstaticvoidmain(String[]args){Stringstr="Hell......
  • 软件测试|Chrome 115之后的版本,如何更新driver?
    2023年8月,chrome自动更新到115版本了,而从https://registry.npmmirror.com/binary.html?path=chromedriver/处只能下载114版本的driver,无法工作。参考:https://blog.csdn.net/Tester_muller/article/details/132086996  找到https://googlechromelabs.github.io/chrome-for......
  • LOJ 10115. 「一本通 4.1 例 3」校门外的树
    \(LOJ\10115\).「一本通4.1例3」校门外的树一、题目描述校门外有很多树,学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两种操作:\(K=1\),读入\(l,r\)表示在\(l\)到\(r\)之间种上一种树,每次操作种的树的种类都不同;\(K=2\),读入\(l,......
  • 15项设计原则
    N+1设计。回滚设计。禁用设计。监控设计。设计多活数据中心。使用成熟的技术。异步设计。无状态系统。水平扩展而非垂直升级。设计时至少要有两步前瞻性。非核心则购买。使用商品化硬件。小构建、小发布和快试错。隔离故障。自动化。......
  • Codeforces Ronud 892(Div.2)
    CodeforcesRonud892(Div.2)关于A题我有话说传送门题意给定一个长度为n的数组a,问能否将元素全部放入两个空数组b和c中,使得b和c数组同时满足非空,且c数组中没有任何数是b数组中的数的除数,如果可以输出一种存储方案,不可以就输出-1思路当天晚上一开始没有做出来,我一开始的思路是......
  • CodeForces-1798#B 题解
    正文开个数组\(last_k\)统计\(a_{i,j}\)最后买彩票的时间,再开一排桶\(day_t\)记录该天最后买彩票的有哪些人(即:有\(p\)满足\(last_p=t\)的集合)。将\(last_k\)放入\(day_t\)中,判断\(day_t\)中是否存在空桶,若有则无解(因为没有人在当天是最后买彩票的)。因为本题是......
  • 2023.08.12 codeforces round 892 div2
    年轻人的第三场div2(已完成:ABCDE)rank:1265solved:4ratingchange:+276newrating:1323A.UnitedWeStand题意:给定一个数列a,问是否能分成两个非空的数列b和c,使得c中任意一个数不是b中任意一个数的因子;若x是y的因子则有x<=y;因此不妨将数列的最大值放入c,把剩下的数放入b;注意数列中......