题解2023.6.5

这篇具有很好参考价值的文章主要介绍了题解2023.6.5。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

D - Factorial Divisibility
对于a[i]>=x的数一定可以整除,考虑a[i]<x的数,因为(x+1)*x! = (x+1)!
统计ai出现的次数, 把他转换为大的阶乘, 如果, 最终1到x - 1, ai的出现次数均为0则说明可以被x!整除
 

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(fast) 
#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<cstring>
#include<math.h>
#include<map>
#include<vector>
#include<stack>
#define ms(x,y) memset(x,y,sizeof x);
#define YES cout<<"YES"<<'\n';
#define NO  cout<<"NO"<<'\n';
#define endl cout<<'\n';
typedef long long ll;
const int maxn = 5e5 + 100, inf = 1e18;
const int mod = 1e9 + 7;
using namespace std;
ll a[maxn];
void solve() {
    int n, x;
    cin >> n >> x;
    map<int, int>mp;
    for (int i = 1; i <= n; i++) {
        int y;
        cin >> y;
        mp[y]++;
    }
    for (int i = 1; i < x; i++) {
        mp[i + 1] += (mp[i] / (i + 1));
        mp[i] = mp[i] % (i + 1);
    }
    for (int i = 1; i < x;i++) {
        if (mp[i] != 0) {
            NO
                return;
        }
    }
    YES
}
signed main()
{
    ios::sync_with_stdio(false);
    solve();
}

C1 - Make Nonzero Sum (easy version)
 思路:奇数一定不可以,偶数一定可以,两两相同放一起,不同分开
 

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(fast) 
#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<cstring>
#include<math.h>
#include<map>
#include<vector>
#include<stack>
#define ms(x,y) memset(x,y,sizeof x);
#define YES  cout<<"YES"<<'\n';
#define NO   cout<<"NO"<<'\n';
#define endl cout<<'\n';
typedef long long ll;
const int maxn=2e5+10,inf = 1e18 ; 
const int mod = 1e9 + 7;
using namespace std;
int a[maxn];
struct node {
    int l, r;
}x[maxn];
 void solve(){
     int n;
     cin >> n;
     for (int i = 1; i <= n; i++) {
         cin >> a[i];
     }
     if (n & 1) {
         cout << -1 << '\n';
         return;
     }
     int cnt = 0;
     for (int i = 1; i <= n; i += 2) {
         if (a[i] == a[i + 1]) {
             x[++cnt].l = i;
             x[cnt].r = i + 1;
         }
         else {
             x[++cnt].l = i;
             x[cnt].r = i;
             x[++cnt].l = i + 1;
             x[cnt].r = i + 1;
         }
     }
     cout << cnt << '\n';
     for (int i = 1; i <= cnt; i++) {
         cout << x[i].l << ' ' << x[i].r << '\n';
     }
 }
signed main()
{
    ios::sync_with_stdio(false);
    int t;
    cin >> t;
    while (t--) {
        solve();
    }
}


C2. Make Nonzero Sum (hard version)
思路:变成了0,1,-1三种情况,对于去除0后为奇数的一定不可以,偶数的一定可以,
和(easy version)情况相似,相邻的不为0的凑在一起

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(fast) 
#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<cstring>
#include<math.h>
#include<map>
#include<vector>
#include<stack>
using namespace std;
#define ll long long
#define pcc pair<char, char>
#define pii pair<int, int>
#define inf 0x3f3f3f3f
const int maxn = 200010;
int n, a[maxn];
void solve() {
    cin >> n;
    int cnt = 0;
    for (int i = 1; i <= n; ++i) {
        cin >> a[i];
        if (a[i]) ++cnt;
    }
    if (cnt & 1) {
        cout << -1 << '\n';
        return;
    }
    vector<pii> res;
    int l, r;
    for (int i = 1; i <= n;) {
        while (i <= n && !a[i]) {
            res.push_back({ i, i });
            ++i;
        }
        if (i > n) {
            break;
        }
        l = i;
        r = i + 1;
        if (a[r]) {   
            if (a[l] == a[r]) {
                res.push_back({ l, r });
            }
            else {
                res.push_back({ l, l });
                res.push_back({ r, r });
            }
        }
        else {
            res.push_back({ l, l });
            while (r <= n && !a[r]) {
                res.push_back({ r, r });
                ++r;
            }
            if (a[l] == a[r]) {
                res.back().second = r;
            }
            else {
                res.push_back({ r, r });
            }
        }
        i = r + 1;
    }
    int len = res.size();
    cout << len << '\n';
    for (auto p : res) {
        cout << p.first << ' ' << p.second << '\n';
    }
}
int main() {
    ios::sync_with_stdio(false);
    int t ;
    cin >> t;
    while (t--) {
        solve();
    }

}

G    严肃古板的秩序

思路:?只有12个,暴力,dfs3种情况,防止long long爆掉采用龟速乘
 

#include<bits/stdc++.h>
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(fast) 
#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<cstring>
#include<math.h>
#include<map>
#include<vector>
#include<stack>
#define ms(x,y) memset(x,y,sizeof x)
typedef long long ll;
const int maxn=2e5+10,INF = 1e18 ; 
using namespace std;
int num[20],cnt = 0;
char op[3] = { '+','-','#' }, s1[20];
ll numb = 0;
bool flag = false;
ll qadd(ll a,ll b, ll p){   //龟速乘防止long long 爆掉
    ll res = 0;
    while (b){
        if (b & 1) res = (res + a) % p;
        a = (a + a) % p;
        b = b >> 1;
    }
    return res;
}
void dfs(ll u, ll v) {
    if (u == cnt - 1) {
        if (v == numb) flag = true;
        return;
    }
    if (u >= cnt) return;
    if (flag) return;
    s1[u] = op[0];
    dfs(u + 1, v + num[u + 2]);
    if (flag) return;
    s1[u] = op[1];
    dfs(u + 1, v - num[u + 2]);
    if (flag) return;
    s1[u] = op[2];
    if (v > 0) {
        dfs(u + 1, qadd(v, v, num[u + 2]));
    }
}
 void solve(){
     string s;
     cin >> s;
     for (int i = 0; i < s.size(); i++) {
         if (isdigit(s[i])) {
             numb =numb*10LL+s[i] - '0';
         }
         else {
             num[++cnt] = numb;
             numb = 0LL;
         }
     }
     dfs(0, num[1]);
     int cnt1 = 0;
     if (flag) {
         for (int i = 0; i < s.size(); i++) {
             if (s[i] != '?')
                 cout << s[i];
             else {
                 cout << s1[cnt1++];
             }
         }
     }
     else {
         cout << -1 << '\n';
     }
 }
signed main()
{
    ios::sync_with_stdio(false);
    solve();
}

C    忽远忽近的距离

题意:构造一个n数组,使得每个2<=|ai-i|<=3;
思路1:4,5,6可构造除7外往后的所有数
n%4==1,4,5搭配;n%4==2,4,6搭配;n%4==3,4,5,6搭配文章来源地址https://www.toymoban.com/news/detail-487469.html

#include<bits/stdc++.h>
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(fast) 
#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<cstring>
#include<math.h>
#include<map>
 #include<vector>
 #include<stack>
#define ms(x,y) memset(x,y,sizeof x)
#define int long long
typedef long long ll;
const int maxn=2e5+10,INF = 1e18 ; 
using namespace std;
int start = 1;
void fun4() {
    cout << start + 2<<' ' << start + 3<<' ' << start<<' ' << start + 1<<' ';
    start += 4;
}
void fun5() {
    cout << start + 3 <<' '<< start + 4 <<' ' << start <<' ' << start + 1<<' ' << start + 2 << ' ';
    start+=5;
}
void fun6() {
    cout << start + 3 << ' ' << start + 4 << ' ' << start + 5 << ' ' << start << ' ' << start + 1 << ' ' << start + 2 << ' ';
    start += 6;
}
 void solve(){
     int n;
     cin >> n;
     if (n <= 3 || n == 7) {
         cout << -1 << '\n';
         return;
     }
     start = 1;
     int x = n / 4;
     int y = n % 4;
     if (y == 0) {
         for (int i = 1; i <= x; i++) {
             fun4();
         }
     }
     else if (y == 1) {
         for (int i = 1; i <= x - 1; i++) {
             fun4();
         }
         fun5();
     }
     else if (y == 2) {
         for (int i = 1; i <= x - 1; i++) {
             fun4();
         }
         fun5();
     }
     else if (y == 3) {
         for (int i = 1; i <= x - 1; i++) {
             fun4();
         }
         fun5();
         fun6();
     }
 }
signed main()
{
    ios::sync_with_stdio(false);
        solve();
}

到了这里,关于题解2023.6.5的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023CSP-J题解

    烦死了,这次CSP考的真的垃圾,犯了好多低级错误。 小 Y 的桌子上放着 n n n 个苹果从左到右排成一列,编号为从 1 1 1 到 n n n 。 小苞是小 Y 的好朋友,每天她都会从中拿走一些苹果。 每天在拿的时候,小苞都是从左侧第 1 1 1 个苹果开始、每隔 2 2 2 个苹果拿走 1 1 1 个苹果。

    2024年02月08日
    浏览(55)
  • 题解2023.6.5

    D - Factorial Divisibility 对于a[i]=x的数一定可以整除,考虑a[i]x的数,因为(x+1)*x! = (x+1)! 统计ai出现的次数, 把他转换为大的阶乘, 如果, 最终1到x - 1, ai的出现次数均为0则说明可以被x!整除   C1 - Make Nonzero Sum (easy version)  思路:奇数一定不可以,偶数一定可以,两两相同放一起,不

    2024年02月09日
    浏览(28)
  • [NewStarCTF 2023] web题解

    打开题目,提示有敏感信息泄露 直接扫一下目录,发现有 ./www.zip 访问然后下载下来,解压到桌面 源码和robots.txt分别是两部分flag 右键看下源码,发现对上传文件后缀名有检测 这里的检测是后缀名只需要出现合法的就行 我们上传1.jpg的一句话木马 然后抓包修改文件名为 1.

    2024年02月05日
    浏览(33)
  • [0xGameCTF 2023] web题解

    打开题目,查看下js代码 在main.js里找到flag 简单分析一下,参数a和b值不相等但MD5相等;参数c不为数字,不等于1024,且转换为整数时等于1024;参数name为伪协议 得到flag 就是一些基本的http请求知识 按照要求来,得到flag 打开题目,提示git泄露 使用工具 先运行工具 GitHack ,再

    2024年02月06日
    浏览(34)
  • vue elementui 组合式 api 对于容器的滑动条的位置的获取与设置。切换页面可以保持原来的容器里的滑动条位置不变

    需要使用 addEventListener 的方法获取滑动条的位置 xxx.vue 页面是一直缓存的,所以使用路由进入钩子(onActivated)设置滑动条的位置 App.vue: xxx.vue

    2024年02月09日
    浏览(67)
  • Petrozavodsk Winter 2023. Day 1 部分题解

    前言:整场的题目质量比较高,虽然之前做过一部分题,但还是被薄纱了 Changing the Sequences 大意: 给定两个数组a,b,长度都为n,元素都介于1-m之间 定义一次操作如下: 构造一个1-m的排列p,对于对于a中的每一个元素,,得到a\\\' 只进行一次该操作,要求使a\\\'与b的元素不相同的

    2024年02月13日
    浏览(32)
  • [LitCTF2023] web方向全题解wp

    签到题,f12获取flag 这里注意看一下源代码,有彩蛋 先留着 前端js小游戏 开调试器进行代码审计 可知当游戏进入 finished 状态的时候会得到flag,可以直接找到 传参题,按照要求传参直接出 传入得到flag,然后提示备份文件还有好恰的,备份文件无非几种,直接访问 www.zip 下载

    2024年02月06日
    浏览(39)
  • 【华为OD机试 2023最新 】最大利润(C语言题解 )

    题目描述 商人经营一家店铺,有number种商品, 由于仓库限制每件商品的最大持有数量是item[index] 每种商品的价格是item-price[item_index][day] 通过对商品的买进和卖出获取利润 请给出商人在days天内能获取的最大的利润 注:同一件商品可以反复买进和卖出 输入描述 第一行输入商

    2023年04月19日
    浏览(38)
  • 2023蓝桥杯C++A组题解(第十四届)

    今年广东省三中游,按New Oj估分,前5题估分17(第1题√,3,4,5题暴力) 第2题(B)dfs写错了,第7题(G)并查集,多了个以前没见过的要求,找不到思路 面向 爆零选手 水平有限,将就着看,有空再补充后5题 目录 🤯吐槽 😟A,2067: [蓝桥杯2023初赛] 幸运数 😟B,2068: [蓝桥

    2023年04月15日
    浏览(46)
  • 2023蓝帽杯半决赛电子取证+CTF部分题解

    非预期 先将data.xlsx中到的每一列都按照大小排序 之后将加粗的字体的背景颜色改为黑色

    2024年02月07日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包