(寒假开黑gym)2018 USP Try-outs



layout: post
title: (寒假开黑gym)2018 USP Try-outs
author: "luowentaoaa"
catalog: true
tags:
mathjax: true
- codeforces



传送门

付队!

许老师!

B.Aesthetics in poetry (暴力模拟)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=998244353;
const int maxn=1e6+50;
const ll inf=1e10;
const ll INF = 1000000000;
const double eps=1e-5;
map<int,int>mp;
int a[maxn];
int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);
    int n;
    cin>>n;
    for(int i=0;i<n;i++)cin>>a[i];
    bool flag=false;
    for(int i=2;i<=(n);i++){
        if(n%i==0){
            mp.clear();
            for(int j=0;j<n;j++)mp[a[j]%i]++;
            if(mp.size()==i){
                bool ok=false;
                for(int j=0;j<i;j++){
                    if(mp[j]!=n/i){ok=true;break;}
                }
                if(!ok){
                    cout<<i<<endl;return 0;
                }
            }
        }
    }
    cout<<-1<<endl;
    return 0;
}

D.Maximizing Advertising (离散化)

题意

在平面内有两种点,让你用两个不相交的矩形把平面覆盖,让一个平面的黑点+另一个平面内的百白点数目最多

思路

直接枚举两平面的相隔点就行,数据太大无法计数用离散化解决

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=998244353;
const int maxn=1e6+50;
const ll inf=1e10;
const ll INF = 1000000000;
const double eps=1e-5;
#define bug cout<<"mx="<<mx<<endl;
vector<int>x1,x2,y1,y2;
vector<int>X;
int sum1,sum2;
int vis1x[maxn],vis1y[maxn],sum1x[maxn],sum1y[maxn];
int vis2y[maxn],vis2x[maxn],sum2x[maxn],sum2y[maxn];
void get(int id){
    sum1x[id]=vis1x[id];
    sum1y[id]=vis1y[id];
    sum2x[id]=vis2x[id];
    sum2y[id]=vis2y[id];
    if(id){
        sum1x[id]+=sum1x[id-1];sum1y[id]+=sum1y[id-1];
        sum2x[id]+=sum2x[id-1];sum2y[id]+=sum2y[id-1];
    }
}
int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        int x,y;char ch;
        cin>>x>>y>>ch;
        if(ch=='b')x1.push_back(x),y1.push_back(y),sum1++;
        else x2.push_back(x),y2.push_back(y),sum2++;
        X.push_back(x);X.push_back(y);
    }
    sort(X.begin(),X.end());
    X.erase(unique(X.begin(),X.end()),X.end());
    int sz=X.size();
    for(int i=0;i<x1.size();i++){
        x1[i]=lower_bound(X.begin(),X.end(),x1[i])-X.begin();
        y1[i]=lower_bound(X.begin(),X.end(),y1[i])-X.begin();
    }
    for(int i=0;i<x2.size();i++){
        x2[i]=lower_bound(X.begin(),X.end(),x2[i])-X.begin();
        y2[i]=lower_bound(X.begin(),X.end(),y2[i])-X.begin();
    }
    int mx=0;
    for(int i=0;i<sum1;i++){
        vis1x[x1[i]]++;
        vis1y[y1[i]]++;
    }
    for(int i=0;i<sum2;i++){
        vis2x[x2[i]]++;
        vis2y[y2[i]]++;
    }
    for(int i=0;i<sz;i++){
       get(i);
        mx=max(mx,sum1x[i]+sum2-sum2x[i]);
        mx=max(mx,sum2x[i]+sum1-sum1x[i]);
        mx=max(mx,sum1y[i]+sum2-sum2y[i]);
        mx=max(mx,sum2y[i]+sum1-sum1y[i]);
    }
    cout<<mx<<endl;
    return 0;
}

E.Group work (组合数学)

题意

N个学生分组,可以大于等于三个人一组 问分组数量有多少中

思路

Cn0+Cn1+Cn2+Cn3+...+Cnn等于2^n 减去取0个和取1个就是答案

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=998244353;
const int maxn=1e6+50;
const ll inf=1e10;
const ll INF = 1000000000;
const double eps=1e-5;
#define bug cout<<"mx="<<mx<<endl;
int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);
    int n;
    cin>>n;
    cout<<((1LL<<n)-n-1)<<endl;
    return 0;
}

G.Running a penitentiary (区间交集)

题意

有n个警察,第i个警察看管监狱的区间是【Li,Ri】。
有两种操作:C i l r :把第i个警察的区间变为【l,r】。
?l r :询问从第l个警察到第r个警察共同看管的区间长度是多少

H. Wine Production (莫队算法+离散化)

题意

给出N个数,每次查询一个区间 返回一个K,表示区间有K个数出现了至少K个次

题解

首先用num[x]表示X出现了多少次,cnt[x]表示出现次数为X的个数,

因为N个数有负数所以需要离散化一下, 然后就是莫队算法瞎搞(模板是从1开始的,我一开始是从0开始的。。)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=998244353;
const int maxn=1e5+50;
const ll inf=1e10;
const ll INF = 1000000000;
const double eps=1e-5;
#define bug cout<<"mx="<<mx<<endl;

// ---
// 莫队算法,可以解决一类静态,离线区间查询问题。分成 $\sqrt{x}$ 块,分块排序。
// ---
int unit;
int a[maxn];
vector<int> b;
struct query { int L, R, id; };
int ans[maxn];
int num[maxn];///出现次数
int cnt[maxn]; ///出现个数
int tmp;
void add(int x){
    num[x]++;cnt[num[x]]++;
    if(min(num[x],cnt[num[x]])>tmp)tmp=min(num[x],cnt[num[x]]);
}
void del(int x){
    cnt[num[x]]--;
    if(num[x]==tmp&&cnt[num[x]]<tmp){
        tmp=cnt[num[x]];
    }
    num[x]--;
}
void solve(query node[], int m)
{
    memset(ans, 0, sizeof(ans));
    sort(node, node + m, [](query a, query b) {
        return a.L / unit < b.L / unit
               || a.L / unit == b.L / unit && a.R < b.R;
    });
    int L = 0, R = -1;
    for (int i = 0; i < m; i++)
    {
        while (node[i].L < L) add(a[--L]);
        while (node[i].L > L) del(a[L++]);
        while (node[i].R < R) del(a[R--]);
        while (node[i].R > R) add(a[++R]);
        ans[node[i].id] = tmp;
    }
}
query my[maxn];
int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);
    int n,m;
    cin>>n>>m;
    unit=sqrt(n);
    for(int i=0;i<n;i++)cin>>a[i],b.push_back(a[i]);
    sort(b.begin(),b.end());b.erase(unique(b.begin(),b.end()),b.end());
    for(int i=0;i<n;i++)a[i]=lower_bound(b.begin(),b.end(),a[i])-b.begin();
    for(int i=0;i<m;i++){
        cin>>my[i].L>>my[i].R;my[i].id=i;
        my[i].L--;my[i].R--;
    }
    solve(my,m);
    for(int i=0;i<m;i++)cout<<ans[i]<<endl;
    return 0;
}

I.A story about tea ()

J.Meme Wars (模拟)

思路

就按照题意构造字符串,第一次交超内存了,于是就判断长度是否大于N在构造

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=998244353;
const int maxn=1e5+50;
const ll inf=1e10;
const ll INF = 1000000000;
const double eps=1e-5;
#define bug cout<<"mx="<<mx<<endl;

int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);
    string s="a";
    int n;cin>>n;
    for(char c='b';c<'z'&&s.size()<n;c++)s=s+c+s;cout<<s[n-1];
    return 0;
}

原文地址:https://www.cnblogs.com/luowentao/p/10352019.html

时间: 2024-11-10 13:20:56

(寒假开黑gym)2018 USP Try-outs的相关文章

(寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest

layout: post title: (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest author: "luowentaoaa" catalog: true tags: mathjax: true - codeforces 传送门 付队! 许老师! Hello SCPC 2018! (签到) #include<bits/stdc++.h> using namespace std; typedef

(寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest(爽题)

layout: post title: (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest(爽题) author: "luowentaoaa" catalog: true tags: mathjax: true - codeforces - DP - 状态压缩 - LCA 传送门 付队! C - Greetings! (状态压缩) 题意 给N种信件,你可以任意选择K种信封装信件,问你最少的浪费是多少 不能大的信件装

(寒假开黑gym)2017-2018 ACM-ICPC German Collegiate Programming Contest (GCPC 2017)

layout: post title: (寒假开黑gym)2017-2018 ACM-ICPC German Collegiate Programming Contest (GCPC 2017) author: "luowentaoaa" catalog: true tags: mathjax: true - codeforces 传送门 付队! 许老师! B.Buildings (polya定理) 题意 B:给你m面墙,每面墙是n*n的格子,你有c种颜色,问你有多少种涂色方案.用po

团战开黑必备“良药”了解一下!

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯游戏云发表于云+社区专栏 第十八届亚运会在印度尼西亚首都雅加达进行得如火如荼,电子竞技作为2018亚运会的表演赛项目,首次登上亚运会的舞台.对于团队合作的电竞赛事来说,队友间的"语音"交流不可或缺.实时与队友流畅沟通战术,交流操作已成为电竞选手在比赛中取得好成绩的一大关键. 随着移动设备性能大幅攀升,移动游戏也从场景简单的休闲类游戏发展为更追求操作和游戏体验的竞技类和大型MMO类等重度游戏,游戏中嵌入实时语音功能也已

好像回家跟他们开黑啊~

来学校已经20多天了,每天都是在机房 做题,看安卓.跟五五.艾格.娃娃他们 每天也都聊天,但是越是聊的开心越是想 回家与他们玩耍.前天大鱼鱼.小鱼鱼也 回去了而且去了项城,笨笨,淼儿也在家 想想都感到有意思,但是回不了家感到好 不爽啊! 不过在这每天有所知识上的收获还是很 开心的,上了大学后越来越赶到这样的环 境难得,还是要珍惜的. 二少等着我们回家,我跟娃娃回去咱们阔 以五黑了!不错的酸泽,还记得吗,那些年 我们一起追过的泽~~~ 好像回家跟他们开黑啊~,布布扣,bubuko.com

51Nod 算法马拉松23 开黑记

惨啊--虽然开了半天黑,但是还是被dalao们踩了-- 第二次开黑,还是被卡在rank20了,我好菜啊--= = 写一写比赛经过吧-- 看到题之后习惯性都打开,A~D看上去似乎并没有什么思路,F应该是道数论题,看了E感觉有点意思,一看数据范围,咦怎么只有$50000$,再仔细看一看式子,手动分情况讨论之后得到一个结论-- 这题是水的线段树维护莫队啊= = 然后就开始码码码,由于一些脑残错误调了一会儿,然后就得到了这样的结果: 我坚信自己莫队的复杂度没错,然后就开始各种王逸松卡常,使用的卡常技巧包

(寒假GYM开黑)2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018)

layout: post title: 2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018) author: "luowentaoaa" catalog: true tags: mathjax: true - codeforces 传送门 付队! B.Baby Bites (签到模拟) 按照题意模拟就行了 int a[maxn]; string s; int main() { std::ios::syn

(寒假GYM开黑)2018 German Collegiate Programming Contest (GCPC 18)

layout: post title: 2018 German Collegiate Programming Contest (GCPC 18) author: "luowentaoaa" catalog: true tags: mathjax: true - codeforces 传送门 付队博客 C.Coolest Ski Route (记忆化搜索) 题意 给出一个有向图,求出一个权值最长的链, 题解 暴力dfs会超时,所以直接储存每个起点能走到的最远距离 #include<

(寒假GYM开黑)2018-2019 ACM-ICPC Brazil Subregional Programming Contest

layout: post title: 2018-2019 ACM-ICPC Brazil Subregional Programming Contest author: "luowentaoaa" catalog: true tags: mathjax: true - codeforces 传送门 付队! 许老师! B.Marbles (nim博弈) 题意 一个棋盘n个点,每次可以把一个棋子移动到(x-d,y) or (x,y-d) or (x-d,y-d) 把其中一个棋子移动到(0