首页 > 其他分享 >Codeforces Round #831 (Div. 1 + Div. 2)

Codeforces Round #831 (Div. 1 + Div. 2)

时间:2022-10-29 20:57:17浏览次数:59  
标签:831 题意 int 质数 Codeforces 长方形 Div define

A. Factorise N+M

题意:给出一个质数,求另一个质数,使得两个数之和不是质数。

解:把那个质数再输出一遍就行了。

B. Jumbo Extra Cheese 2

题意:给出一些长方形,按照以下规则把长方形拼起来:

1. 每个长方形的一条边和x轴重合,长方形之间边互相平行;

2. 长方形之间不能重叠;

3.所有长方形联通。

求拼起来后最小周长。

解:把所有长方形较短的边贴到x轴上,这样整个图形周长为(短边之和 + 最高的高)*2.

(一开始看样例以为能叠起来,困惑了很久,发现那是非法例子)

C. Bricks and Bags

题意:给出一堆砖和三个袋子,每块砖有一个重量。把所有砖都放到袋子里,保证每个袋子里至少有一块砖,从第i个袋子里拿出的砖重wi。然后B来了,他会从每个袋子里拿一块砖,使得 value = |w1−w2|+|w2−w3| 最小。现在你来放砖,使得B得到的value最大,求这个最大值。

解:看完题就知道自己做不出来,数数能力:缺陷。明天看tutorial。

D. Knowledge Cards

题意:有一个m*n的格子阵(m≥3, n≥3),(1, 1)的位置放了一叠纸牌,每个纸牌上有一个数字,整叠牌是k的一个排列。现在要移动这叠牌到(m, n)去,并且在(m, n)处以:最下面是k,最上面是1的顺序叠成一叠。每次可以把一张牌挪到相邻的四个格子去,除了起点和终点,每个格子只能有一张牌。也就是说,如果相邻格子有牌,就不能挪过去了。并且,每张牌离开(1, 1)就不能回去;到达(m, n)也不能离开。问是否有这样一种方案,使得在每个操作合法的情况下把这叠牌挪过去。

解:首先第一次要把n挪过去,第二次把n-1挪过去,以此类推。如果要把n挪过去,就要把n之前的牌都放到空格子里去,如果放不下,肯定无解。接下来考虑最少留几个空位能把n挪过去。有点像以前铅笔盒上那个拼图,从那个拼图能拼起来可以猜测(……)留一个空位就能把任何一个格子上的牌送到终点。考虑过空位连一条过起点和终点的环,然后循环向前,因为全图大于等于3*3所以这个环必然存在。接下来只要检测轮到第i个数时图里是否有一个空位即可。

代码:

#include <bits/stdc++.h>
using namespace std;
#define maxx 300005
#define maxn 25
#define maxm 205
#define ll long long
#define inf 1000000009
#define mod 998244353
int a[maxx],pos[maxx];
signed main() {
    int T;
    scanf("%d",&T);
    while(T--){
        int n,m,k;
        scanf("%d%d%d",&n,&m,&k);
        for(int i=1;i<=k;i++){
            scanf("%d",&a[i]);
            pos[a[i]]=i;
        }
        int now=0,empty=n*m-2;
        for(int i=k;i>=1;i--){
            int p=pos[i];
            if(p>now){
                if(p-now-1>=empty-1) {
                    printf("TIDAK\n");
                    goto nxt;
                }
                else{
                    empty-=(p-now-1);
                }
                now=p;
            }
            else{
                empty++;
            }
        }
        printf("YA\n");
        nxt:;
    }
    return 0;
}
View Code

 

 

标签:831,题意,int,质数,Codeforces,长方形,Div,define
From: https://www.cnblogs.com/capterlliar/p/16839821.html

相关文章

  • Codeforces Round #750 (Div. 2) F1
    F1.KorneyKorneevichandXOR(easyversion)我们观察题意发现我们需要找的是一个上升序列我们回忆上升序列的状态设计dp[i]表示第i个作为结尾最长的序列长度是多少......
  • Educational Codeforces Round 93 (Rated for Div. 2) D
    D.ColoredRectangles考虑数据范围显然可以n3dp我们发现dp转移时不是特别好枚举所以我们选择记忆化搜索打完你们可能会发现过不去第三个样例显然我们应该sort一遍......
  • Codeforces Round #827 (Div. 4) A-G
    比赛链接A题解知识点:模拟。时间复杂度\(O(1)\)空间复杂度\(O(1)\)代码#include<bits/stdc++.h>#definelllonglongusingnamespacestd;boolsolve(){......
  • Educational Codeforces Round 1
    EducationalCodeforcesRound1C.Nearestvectors题目大意给出n个向量,求出其中夹角最小的两个向量。分析求出所有向量与x轴的夹角,然后排序,两两比较夹角。AC_code#......
  • Codeforces Round #826 (Div. 3) A-E
    比赛链接A题解知识点:模拟。时间复杂度\(O(n)\)空间复杂度\(O(n)\)代码#include<bits/stdc++.h>#definelllonglongusingnamespacestd;boolsolve(){......
  • Codeforces Round #830 (Div. 2)(持续更新)
    PrefaceAB很水,C一般难度,D1很简单但D2确实巧妙没有现场打有点可惜,后面补的时候都是1A(结果每次比赛的时候都要莫名WA上好久)A.Bestie我刚开始没咋想,感觉操作步数不会很......
  • Codeforces Round #739 (Div. 3) E
    E.PolycarpandStringTransformation显然我们可以通过看谁消失的最早知道删除序列然后有了删除序列以后我们能干什么呢显然对于每一个删除序列我们要是第一次就把......
  • Codeforces Round #672 (Div. 2) D
    D.RescueNibel!转化题意就是叫我们求k条线段都有重合的方案数最开始想的是离散化+线段树手模拟一下样例这样会是有重复的我们要如何保证不重不漏!显然我们可以将线......
  • Codeforces Round #631 (Div. 1) - Thanks, Denis aramis Shitov! A
    A.DreamoonLikesColoring显然我们不看把整块涂满最优的构造就是1234....但是要考虑将整块板涂满我们就要往右挪显然我们每次挪后面的板子都会动我们一定要让......
  • 【PNR#2 Div1 D】找零(DP)(贪心)
    找零题目链接:PNR#2Div1D题目大意有500,100,50,10,5,1这些面额的纸币,你有X块钱,使用最少的纸币数表示的。然后有一些物品,每种只有一个,有费用。每次你可以选择一些......