首页 > 其他分享 >CF(div2)816 A~C

CF(div2)816 A~C

时间:2022-08-21 13:44:18浏览次数:96  
标签:const int void CF _.- return include div2 816

A Crossmarket

思维

矩阵走路径,发现走Z字型怎么走都是一样的耗费,所以直接O(1)算出来就好

/*
 *                                |~~~~~~~|
 *                                |       |
 *                                |       |
 *                                |       |
 *                                |       |
 *                                |       |
 *     |~.\\\_\~~~~~~~~~~~~~~xx~~~         ~~~~~~~~~~~~~~~~~~~~~/_//;~|
 *     |  \  o \_         ,XXXXX),                         _..-~ o /  |
 *     |    ~~\  ~-.     XXXXX`)))),                 _.--~~   .-~~~   |
 *      ~~~~~~~`\   ~\~~~XXX' _/ ';))     |~~~~~~..-~     _.-~ ~~~~~~~
 *               `\   ~~--`_\~\, ;;;\)__.---.~~~      _.-~
 *                 ~-.       `:;;/;; \          _..-~~
 *                    ~-._      `''        /-~-~
 *                        `\              /  /
 *                          |         ,   | |
 *                           |  '        /  |
 *                            \/;          |
 *                             ;;          |
 *                             `;   .       |
 *                             |~~~-----.....|
 *                            | \             \
 *                           | /\~~--...__    |
 *                           (|  `\       __-\|
 *                           ||    \_   /~    |
 *                           |)     \~-'      |
 *                            |      | \      '
 *                            |      |  \    :
 *                             \     |  |    |
 *                              |    )  (    )
 *                               \  /;  /\  |
 *                               |    |/   |
 *                               |    |   |
 *                                \  .'  ||
 *                                |  |  | |
 *                                (  | |  |
 *                                |   \ \ |
 *                                || o `.)|
 *                                |`\\) |
 *                                |       |
 *                                |       |
 */
#include<iostream>
#include<queue>
#include<vector>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<stack>
#include<unordered_map>
#include<unordered_set>
#include<set>
#include<map>
// #pragma GCC optimize(3)
using namespace std;
#define rep(i,x,y) for(int i=x;i<y;i++)
#define scan(x)   scanf("%lld",&x)
#define int long long
#define lowbit(x) x&(-x) //二进制最低位所代表的数
#define PI 3.1415926535
typedef pair<int,int> PII;
int gcd(int a,int b){
    return b>0 ? gcd(b,a%b):a;
}
int exgcd(int a,int b,int &x,int &y)
{
    if(!b)
    {
        x = 1,y = 0;
        return a;
    }
    int d = exgcd(b,a%b,y,x);
    y-=a/b*x;
    return d;
}
const int N = 1e6+10;
const int mod = 1e9+7;
const int INF = 0x3f3f3f3f;
void init()
{
    cin.tie(0),cout.tie(0);
    ios::sync_with_stdio(false);
}

void solve()
{
    int n,m;
    cin>>n>>m;
    if(n<m)swap(n,m);
    if(n==1&&m==1)
    {
        cout<<0<<endl;
        return;
    }
    int t = n+(m-2)+2+(m-2);
    cout<<t<<endl;
}

signed main()
{
    init();
    int t;
    cin>>t;
    while(t--)solve();
}
View Code

B Beautiful a Array

构造

放k*b就满足了“漂亮”性质,然后还要每个都加上min(s,k-1)来满足总数和的性质

/*
 *                                |~~~~~~~|
 *                                |       |
 *                                |       |
 *                                |       |
 *                                |       |
 *                                |       |
 *     |~.\\\_\~~~~~~~~~~~~~~xx~~~         ~~~~~~~~~~~~~~~~~~~~~/_//;~|
 *     |  \  o \_         ,XXXXX),                         _..-~ o /  |
 *     |    ~~\  ~-.     XXXXX`)))),                 _.--~~   .-~~~   |
 *      ~~~~~~~`\   ~\~~~XXX' _/ ';))     |~~~~~~..-~     _.-~ ~~~~~~~
 *               `\   ~~--`_\~\, ;;;\)__.---.~~~      _.-~
 *                 ~-.       `:;;/;; \          _..-~~
 *                    ~-._      `''        /-~-~
 *                        `\              /  /
 *                          |         ,   | |
 *                           |  '        /  |
 *                            \/;          |
 *                             ;;          |
 *                             `;   .       |
 *                             |~~~-----.....|
 *                            | \             \
 *                           | /\~~--...__    |
 *                           (|  `\       __-\|
 *                           ||    \_   /~    |
 *                           |)     \~-'      |
 *                            |      | \      '
 *                            |      |  \    :
 *                             \     |  |    |
 *                              |    )  (    )
 *                               \  /;  /\  |
 *                               |    |/   |
 *                               |    |   |
 *                                \  .'  ||
 *                                |  |  | |
 *                                (  | |  |
 *                                |   \ \ |
 *                                || o `.)|
 *                                |`\\) |
 *                                |       |
 *                                |       |
 */
#include<iostream>
#include<queue>
#include<vector>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<stack>
#include<unordered_map>
#include<unordered_set>
#include<set>
#include<map>
// #pragma GCC optimize(3)
using namespace std;
#define rep(i,x,y) for(int i=x;i<y;i++)
#define scan(x)   scanf("%lld",&x)
#define int long long
#define lowbit(x) x&(-x) //二进制最低位所代表的数
#define PI 3.1415926535
typedef pair<int,int> PII;
int gcd(int a,int b){
    return b>0 ? gcd(b,a%b):a;
}
int exgcd(int a,int b,int &x,int &y)
{
    if(!b)
    {
        x = 1,y = 0;
        return a;
    }
    int d = exgcd(b,a%b,y,x);
    y-=a/b*x;
    return d;
}
const int N = 1e6+10;
const int mod = 1e9+7;
const int INF = 0x3f3f3f3f;
void init()
{
    cin.tie(0),cout.tie(0);
    ios::sync_with_stdio(false);
}



void solve()
{
    int n,k,b,s;
    cin>>n>>k>>b>>s;
    vector<int> a(n);
    a[0]=k*b;
    s-=k*b;
    if(s<0)
    {
        cout<<-1<<endl;
        return;
    }
    for(int i=0;i<n;i++)
    {
        int t = min(s,k-1);
        a[i]+=t;
        s-=t;
    }
    if(s>0)
    {
        cout<<-1<<endl;    
    }
    else
    {
        for(int i=0;i<n;i++)
        {
            cout<<a[i]<<' ';
        }
        cout<<endl;
    }
}

signed main()
{
    init();
    int t;
    cin>>t;
    while(t--)solve();
}
View Code

C Monoblock

数学规律

这种查询题就是先找出最终结果然后进行减法操作,这样才不会超时。

所以这道题的触发是换之后是否相等,相等的话那么会进行减法,减去有这两个元素的区间,不相等的话加上。

子区间( i )*( n - i )

/*
 *                                |~~~~~~~|
 *                                |       |
 *                                |       |
 *                                |       |
 *                                |       |
 *                                |       |
 *     |~.\\\_\~~~~~~~~~~~~~~xx~~~         ~~~~~~~~~~~~~~~~~~~~~/_//;~|
 *     |  \  o \_         ,XXXXX),                         _..-~ o /  |
 *     |    ~~\  ~-.     XXXXX`)))),                 _.--~~   .-~~~   |
 *      ~~~~~~~`\   ~\~~~XXX' _/ ';))     |~~~~~~..-~     _.-~ ~~~~~~~
 *               `\   ~~--`_\~\, ;;;\)__.---.~~~      _.-~
 *                 ~-.       `:;;/;; \          _..-~~
 *                    ~-._      `''        /-~-~
 *                        `\              /  /
 *                          |         ,   | |
 *                           |  '        /  |
 *                            \/;          |
 *                             ;;          |
 *                             `;   .       |
 *                             |~~~-----.....|
 *                            | \             \
 *                           | /\~~--...__    |
 *                           (|  `\       __-\|
 *                           ||    \_   /~    |
 *                           |)     \~-'      |
 *                            |      | \      '
 *                            |      |  \    :
 *                             \     |  |    |
 *                              |    )  (    )
 *                               \  /;  /\  |
 *                               |    |/   |
 *                               |    |   |
 *                                \  .'  ||
 *                                |  |  | |
 *                                (  | |  |
 *                                |   \ \ |
 *                                || o `.)|
 *                                |`\\) |
 *                                |       |
 *                                |       |
 */
#include<iostream>
#include<queue>
#include<vector>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<stack>
#include<unordered_map>
#include<unordered_set>
#include<set>
#include<map>
// #pragma GCC optimize(3)
using namespace std;
#define rep(i,x,y) for(int i=x;i<y;i++)
#define scan(x)   scanf("%lld",&x)
#define int long long
#define lowbit(x) x&(-x) //二进制最低位所代表的数
#define PI 3.1415926535
typedef pair<int,int> PII;
int gcd(int a,int b){
    return b>0 ? gcd(b,a%b):a;
}
int exgcd(int a,int b,int &x,int &y)
{
    if(!b)
    {
        x = 1,y = 0;
        return a;
    }
    int d = exgcd(b,a%b,y,x);
    y-=a/b*x;
    return d;
}
const int N = 1e6+10;
const int mod = 1e9+7;
const int INF = 0x3f3f3f3f;
void init()
{
    cin.tie(0),cout.tie(0);
    ios::sync_with_stdio(false);
}

int a[N];

void solve()
{
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    int cnt = 0;
    int sum = 0;    
    for(int i=1;i<=n;i++)
    {
        if(a[i]!=a[i-1])cnt+=i;
        else cnt++;
        sum+=cnt;
    }
    while(m--)
    {
        int i,x;
        cin>>i>>x;
        if(a[i-1]!=a[i]&&a[i-1]==x)
        {
            sum-=(i-1)*(n-i+1);
        }
        if(a[i-1]==a[i]&&a[i-1]!=x)
        {
            sum+=(i-1)*(n-i+1);
        }

        if(a[i+1]!=a[i]&&a[i+1]==x)
        {
            sum-=(i)*(n-i);
        }
        if(a[i+1]==a[i]&&a[i+1]!=x)
        {
            sum+=(i)*(n-i);
        }


        a[i]=x;
        cout<<sum<<endl;
    }
}

signed main()
{
    init();
    int t=1;
    while(t--)solve();
}
View Code

 

标签:const,int,void,CF,_.-,return,include,div2,816
From: https://www.cnblogs.com/yeonnyuui/p/16609889.html

相关文章

  • cf1003 E. Tree Constructing
    题意:构造一棵树,要求节点数为\(n\),直径为\(d\),每个点的度不超过\(k\)思路:先构造一条\(d+1\)个节点、\(d\)条边的链。然后在链上加分支。记链上节点的编号为\(1,2......
  • cf1254 B2. Send Boxes to Alice (Hard Version)
    题意:给定非负数组,每次操作可以选一个\(a_i\neq0\),令\(a_i\)减一,\(a_i\)相邻的一个数(如果存在)加一。问最少几次操作能使所有数有\(>1\)的公因数\(n,a_i\le1e6\)......
  • Codeforces Round #816 (Div. 2)
    题面A.Crossmarket不妨设\(n\gem\),则答案为\(n+2(m-1)\)。特别地,\(n=1,m=1\)时答案为\(0\),注意特判。ViewCode#include<stdio.h>#include<algorithm>int......
  • [Codeforces Round #816 (Div. 2)] D. 2+ doors
    这次Div.2比之前我打的有些要难啊,前三道题就耗了好多时间,D题干脆摆烂了。。。还是太逊了对于一个\(x\),有\(x|y_i=z_i\),那么我们设\(num[x]=z_1\)&\(z_2\)&\(z_3\)..........
  • CF1705(思维,二进制)
    https://codeforces.com/contest/1705/problem/E题意:给出01串s和t,问通过以下操作使s变成t的最小操作数。操作:s-1不同于s+1时,s取反。eg:110->100场上直接模拟后,感觉直接模......
  • CF1715E Long Way Home
    套路题。先不考虑额外的边跑一次最短路。然后考虑一下额外的边,单独拿出来转移一次。式子为\(dis_u=min\{olddis_v+(u-v)^2,1\leqv\leqn\}\)。简单的,把凸包建出来,二......
  • CF1715D 2+ doors
    简要题意对于一个数组\(a\),给定\(Q\)个限制条件,每个条件给出\(i,j,x\)使得\(a_i|a_j=x\)。构造数组使其字典序最小。Solution以下\(ans_i\)表示最后我们构造出......
  • CF #526 部分题解
    传送门CF1083CMaxMex求一条\(\text{mex}\)值最大的路径,相当于求一个最大的前缀\(0,1,2,\cdots,k\)使得点权为\(0,1,\cdots,k\)的点都可以被包含在同一条链中。......
  • 洛谷 CF442C 紫 题解
    前言说实话这道题确实不太适合作为紫题,但是它的思路很妙,在此我详细解释一下每一步操作背后的原因。大致流程从前往后读入数组\(a\),对于一个下标\(pos\),若其满足\(a[......
  • CF1336A
    题目链接  题目意思:给一个以\(1\)为根,\(n-1\)条双向边的树形结构,让我们选出\(k\)个节点作为出发点前往根节点\(1\),算出每一个出发点到根节点的路径上有多少个非出发点的......