首页 > 其他分享 >『模拟赛』NOIP2024(欢乐)加赛3

『模拟赛』NOIP2024(欢乐)加赛3

时间:2024-11-10 18:07:42浏览次数:4  
标签:ch int ll long 欢乐 加赛 fo NOIP2024 define

Rank

真欢乐吗,

不过 mission accomplished.

image

A. Sakurako and Water

CF2033B *900

byd 还懂难易搭配,不过这个 b 翻译甚至不着重以下主对角线差评,被硬控半个小时,直到手模样例才发觉不对。

读懂题就很简单了,最优一定是找最长的对角线每次加,一共只有 \(2n-1\) 条线,枚举一下求出每条线上的最大值之和即可。复杂度 \(\mathcal{O(n^2)}\)。

点击查看代码
#include<bits/stdc++.h>
#define fo(x, y, z) for(int (x) = (y); (x) <= (z); (x)++)
#define fu(x, y, z) for(int (x) = (y); (x) >= (z); (x)--)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define lx ll
inline lx qr()
{
    char ch = getchar(); lx x = 0, f = 1;
    for(; ch < '0' || ch > '9'; ch = getchar()) if(ch == '-') f = -1;
    for(; ch >= '0' && ch <= '9'; ch = getchar()) x = (x << 3) + (x << 1) + (ch ^ 48);
    return x * f;
}
#undef lx
#define qr qr()
#define pii pair<int, int>
#define ppp pair<pii, pii>
#define fi first
#define se second
#define M_P(x, y) make_pair(x, y)
#define P_B(x) push_back(x)
const int Ratio = 0;
const int N = 500 + 5;
const int mod = 998244353;
int n;
int a[N][N];
namespace Wisadel
{
    short main()
    {
        int T = qr;
        while(T--)
        {
            n = qr; ll ans = 0;
            fo(i, 1, n) fo(j, 1, n) a[i][j] = qr;
            fo(j, 1, n)
            {
                int x = 1, y = j;
                int maxx = 0;
                while(x <=n && y <= n)
                {
                    if(a[x][y] < 0) maxx = max(maxx, -a[x][y]);
                    x++, y++;
                }
                ans += maxx;
            }
            fo(i, 2, n)
            {
                int x = i, y = 1;
                int maxx = 0;
                while(x <= n && y <= n)
                {
                    if(a[x][y] < 0) maxx = max(maxx, -a[x][y]);
                    x++, y++;
                }
                ans += maxx;
            }
            printf("%lld\n", ans);
        }
        return Ratio;
    }
}
signed main(){return Wisadel::main();}
// 佳墙坂诶迦币等渔塞

B. Binomial Coefficients, Kind Of

CF2025B *1100

这位更是唐氏。翻译没写 akshiM 求得是错误的组合数差评,被硬控 20min,直到手模才发觉不对。

读懂题就很简单了,手模容易发现 akshiM 求的是:

\[ans=\begin{cases}2^k\quad n\neq k\\ 1\quad\,\, n = k \end{cases} \]

然后写个快速幂或者预处理二的幂就做完了,前者 \(\mathcal{O(T\log k)}\) 后者 \(\mathcal{O(k)}\),不知道哪个快。

点击查看代码
#include<bits/stdc++.h>
#define fo(x, y, z) for(int (x) = (y); (x) <= (z); (x)++)
#define fu(x, y, z) for(int (x) = (y); (x) >= (z); (x)--)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define lx ll
inline lx qr()
{
    char ch = getchar(); lx x = 0, f = 1;
    for(; ch < '0' || ch > '9'; ch = getchar()) if(ch == '-') f = -1;
    for(; ch >= '0' && ch <= '9'; ch = getchar()) x = (x << 3) + (x << 1) + (ch ^ 48);
    return x * f;
}
#undef lx
#define qr qr()
#define pii pair<int, int>
#define ppp pair<pii, pii>
#define fi first
#define se second
#define M_P(x, y) make_pair(x, y)
#define P_B(x) push_back(x)
const int Ratio = 0;
const int N = 1e6 + 5, M = 1e6;
const int mod = 1e9 + 7;
int n[N];
namespace Wisadel
{
    ll Wqp(ll x, int y)
    {
        ll res = 1;
        while (y){if (y & 1)res = res * x % mod; x = x * x % mod; y >>= 1;}
        return res;
    }
    short main()
    {
        int T = qr;
        fo(i, 1, T) n[i] = qr;
        fo(i, 1, T)
        {
            int k = qr;
            printf("%lld\n", Wqp(2, n[i] == k ? 0 : k));
        }
        return Ratio;
    }
}
signed main(){return Wisadel::main();}
// 佳墙坂诶迦币等渔塞

C. QED's Favorite Permutation

CF2030D *1700

这位更是唐氏,想了半天的可持久化并查集怎么做,愣了一大圈才回头想起来可以换角度先预处理出需要的边然后做,被硬控 1.4h。

如果某个点不在自己该在的位置上那么一定需要向本来的位置移动,即当前位置到原本位置都要有边。边读入边做,好像暴力处理就行,不过我上了线段树,相当于做区间赋值操作,由于只会赋值一次所以复杂度大概处于 \(\mathcal{O(n)}\) 到 \(\mathcal{O(n\log n)}\) 之间。

然后计数当前的边,按位置记,并记录有多少该有的边没有,翻转很简单,左右做一遍就完了,同时维护上面要记的,询问只有当所有需要的边都有的时候为 YES,否则为 NO

时间复杂度 \(\mathcal{O(n)}\) 到 \(\mathcal{O(n\log n)}\)。

点击查看代码
#include<bits/stdc++.h>
#define fo(x, y, z) for(int (x) = (y); (x) <= (z); (x)++)
#define fu(x, y, z) for(int (x) = (y); (x) >= (z); (x)--)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define lx ll
inline lx qr()
{
    char ch = getchar(); lx x = 0, f = 1;
    for(; ch < '0' || ch > '9'; ch = getchar()) if(ch == '-') f = -1;
    for(; ch >= '0' && ch <= '9'; ch = getchar()) x = (x << 3) + (x << 1) + (ch ^ 48);
    return x * f;
}
#undef lx
#define qr qr()
#define pii pair<int, int>
#define ppp pair<pii, pii>
#define fi first
#define se second
#define M_P(x, y) make_pair(x, y)
#define P_B(x) push_back(x)
const int Ratio = 0;
const int N = 2e5 + 5;
const int mod = 1e9 + 7;
int n, m;
string s;
int a[N], e[N], ned[N];
int al[N << 2];
namespace Wisadel
{
    #define ls (rt << 1)
    #define rs (rt << 1 | 1)
    #define mid ((l + r) >> 1)
    inline void Wpushup(int rt)
    {
        al[rt] = al[ls] && al[rs];
    }
    inline void Wupd(int rt, int l, int r, int x, int y)
    {
        if(al[rt]) return ;
        if(x <= l && r <= y)
        {
            al[rt] = 1;
            return ;
        }
        if(al[rt]) al[ls] = al[rs] = 1;
        if(x <= mid) Wupd(ls, l, mid, x, y);
        if(y > mid) Wupd(rs, mid + 1, r, x, y);
        Wpushup(rt);
    }
    inline int Wq(int rt, int l, int r, int x)
    {
        if(al[rt]) return 1;
        if(l == r) return al[rt];
        if(x <= mid) return Wq(ls, l, mid, x);
        else return Wq(rs, mid + 1, r, x);
    }
    short main()
    {
        int T = qr;
        while(T--)
        {
            n = qr, m = qr;
            fill(al + 1, al + 1 + (n << 2), 0);
            fill(e + 1, e + 1 + n, 0);
            fo(i, 1, n)
            {
                a[i] = qr;
                if(a[i] > i) Wupd(1, 1, n, i, a[i] - 1);
                if(a[i] < i - 1) Wupd(1, 1, n, a[i], i - 1);
            }
            cin >> s;
            s = " " + s;
            fo(i, 1, n) if(s[i] == 'L') e[i - 1]++;
                else e[i]++;
            int lan = 0;
            fo(i, 1, n - 1)
            {
                ned[i] = Wq(1, 1, n, i);
                if(e[i] < ned[i]) lan++;
            }
            fo(i, 1, m)
            {
                int x = qr;
                if(s[x] == 'L')
                {
                    e[x - 1]--;
                    if(e[x - 1] < ned[x - 1]) lan++;
                    if(e[x] < ned[x]) lan--;
                    e[x]++;
                    s[x] = 'R';
                }
                else
                {
                    e[x]--;
                    if(e[x] < ned[x]) lan++;
                    if(e[x - 1] < ned[x - 1]) lan--;
                    e[x - 1]++;
                    s[x] = 'L';
                }
                puts(lan == 0 ? "YES" : "NO");
            }
        }
        return Ratio;
    }
}
signed main(){return Wisadel::main();}
// 佳墙坂诶迦币等渔塞

剩下的吃完饭再写。

标签:ch,int,ll,long,欢乐,加赛,fo,NOIP2024,define
From: https://www.cnblogs.com/Ratio-Yinyue1007/p/18538273

相关文章

  • 欢乐赛
    因为本部不让打CF,所以那最近几场CF的题组了一场IOI模拟赛。ACF2033BSakurakoandWaterE内向基环树上两点最短距离,肯定是多个链连到环上,建出反边后就可以以此处理每个子树,不在环上且不同链的一定没戏,还是得先找环。然后先建出反边统计可达性,F首先,选的数很少,\[\begin......
  • 『模拟赛』多校A层冲刺NOIP2024模拟赛20
    RankmissionfailedA.星际联邦由于急着想切题,上来没细看就打了个树状数组上去,果然寄了,然后又各种方式优化,最终还是寄了,只有50pts。正解是学最小生成树时直接跳过的prim和菠萝,但是偏不这么做,而是找性质得出严格\(\mathcal{O(n)}\)的做法。首先比较平凡发现一个点的最......
  • 多校A层冲刺NOIP2024模拟赛20
    多校A层冲刺NOIP2024模拟赛20\(T1\)A.星际联邦\(25pts\)部分分\(25pts\):暴力建边后跑\(Kruskal\)或\(Prim\)。点击查看代码structnode{ intfrom,to,w;};inta[300010];vector<node>e;structDSU{ intfa[300010]; voidinit(intn) { for(inti......
  • 多校A层冲刺NOIP2024模拟赛20
    简评:新拉的......
  • 【题解】「NOIP2024模拟赛24 T3」钙绿
    【题解】「NOIP2024模拟赛24T3」钙绿https://www.becoder.com.cn/contest/5715/problem/3\(\mathcal{Description}\)给定\(n,p,m\)。对于每个\(k=0,1,\dots,m\),统计满足下面条件的\(n\)位\(10\)进制数:(允许前导零各位数之和不超过\(k\)。\(p\)能整除这个数。数据......
  • 【题解】「NOIP2024模拟赛24 T2」子序列们
    【题解】「NOIP2024模拟赛24T2」子序列们https://www.becoder.com.cn/contest/5715/problem/2\(\mathcal{Description}\)给定一个0/1串\(a\),你需要生成一个长度为\(n\)的序列\(b\),其中\(b_i\)为\(a\)的一个子序列,且满足:\(|b_i|=n-i+1\);\(\foralli\in(1,n]\),\(b......
  • NOIP2024模拟赛 #17 总结
    省流:T1对\(998244353\)取模,T2对\(mod\)取模,T3求排名,T4对\(10^9+7\)取模。比赛出锅不少。开T1,发现并没有前几天那么简单,对着题目盯了\(1\)h毫无思路,发现没看见所有高塔的高度两两不同这个条件,看到后略有思路,但是还不太行。后来说大样例出锅了,幸好没写。T2很......
  • 云上拼团GO指南——腾讯云博客部署案例,双11欢乐GO
    知孤云出岫-CSDN博客目录腾讯云双11活动介绍一.双十一活动入口二.活动亮点(一)双十一上云拼团Go(二)省钱攻略(三)上云,多类型服务器供您选择三.会员双十一冲榜活动(一)活动内容(二)新人上云福利腾讯云的应用场景1.部署博客的步骤2,安装博客环境腾讯云双11活动介绍腾......
  • [赛记] 多校A层冲刺NOIP2024模拟赛19
    图书管理85pts2s1e10助我85pts;考虑正解,仍然是算贡献;这个题有一个很通用的套路:将大于某数的数看成$1$,小于这个数的数看成$0$;那么我们枚举$a_i$,运用上面的套路将$i$左边的前缀和算出来并开个桶记录一下端点编号之和,然后在枚举$i$右边的同时找到现在的前缀和......
  • NOIP2024 前集训:多校A层冲刺NOIP2024模拟赛19
    前言这次不是之前学长吃完吐出来的shi,这次是新拉的热乎的烫嘴的shi。T1、2、3、4大样例全部错一遍,T1题面和时限再错一遍哈哈哈。T4假做法有60哈哈哈,大样例跑出来半个对的都没有能得60哈哈哈。accodersT1前半小时没数据做得快的全部都死哈哈(还好我第一份被卡常了后......