首页 > 编程语言 >第三届里奇杯编程大赛(初赛)题解(正在更新文字解释)

第三届里奇杯编程大赛(初赛)题解(正在更新文字解释)

时间:2023-05-27 19:34:24浏览次数:40  
标签:里奇 int 题解 ll namespace 初赛 res using include

A.签到

签到题,直接输出即可。

#include <bits/stdc++.h>
using namespace std;

int main()
{
	cout << "Hello Liqi contest";
	return 0;
}

B.挂科

读取到每个人的成绩后,判断符合挂科条件(分数$ < p$ )就 \(res\) 增加一位同学 。

#include <iostream>
#include <algorithm>

using namespace std;

const int N =  1e5+10;
int n, p, a[N], res;

int main() {
    scanf("%d%d", &n, &p);
    for(int i=1; i<=n; i++) {
        scanf("%d", &a[i]);
        if(a[i] < p) res++;
    }
    printf("%d\n", res);
    return 0;
}

C.送外卖

经过论证,可以发现,沿着坐标轴,从左到右一口气送完外卖是最佳方案。

故将求出 \(a\) 的最大值与最小值后直接相减即可。

#include <iostream>
#include <algorithm>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <string>
#include <cstring>
#include <cmath>

#define fi first
#define se second

using namespace std;
using ll = long long;
using pii = pair<int, int>;

const double eps = 1e-4;
const int N = 110;
int n;

void solve() {
    scanf("%d", &n);
    int minv = 1e9, maxv = 0;
    for(int i=1; i<=n; i++) {
        int x; scanf("%d", &x);
        minv = min(minv, x);
        maxv = max(maxv, x);
    }
    printf("%d\n", maxv-minv);
}

int main() {
    // multiple case
    // int t; scanf("%d", &t);
    // while(t--) {
    //     solve();
    // }

    // single case
    solve();

    return 0;
}

D.分弹珠

每个弹珠都一模一样,故弹珠分配方案的不同只有每个人分的的弹珠多少。

每个人能分得的弹珠数量区间是 \([1, n-1]\) ,故方案数为 \(n-1\) 。这里直接把弹珠数量为 \(1\) 的情况(没有合理的分配方案)也涵盖了。

#include <bits/stdc++.h>
using namespace std;
int n;
int main()
{
	cin >> n;
	cout << n - 1;
	return 0;
}

E.加倍整数

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n;
set <ll> s;
ll sz(ll x)
{
	int temp = 0;
	while(x)
	{
		x /= 10;
		temp ++;
	}
	ll res = 1;
	for(int i = 1; i <= temp; i ++) 
	{
		res *= 10;
	}
	return res;
}
int main()
{
	cin >> n;
	for(int i = 1; i + i * sz(i) <= n; i ++)
	{
		s.insert(i + i * sz(i));
	}
	cout << s.size();
	return 0;
}

F.大学生特种兵

#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>

using namespace std;
const int N = 2010;
int n, m, st[N];
vector<int> e[N];

void dfs(int u, int &sum) {
    st[u] = true;
    sum++;
    for(auto ne:e[u]) {
        if(st[ne]) continue;
        dfs(ne, sum);
    }
}

int main() {
    scanf("%d%d", &n, &m);
    for(int i=1; i<=m; i++) {
        int a, b;
        scanf("%d%d", &a, &b);
        e[a].push_back(b);
    }
    int res = 0;
    for(int i=1; i<=n; i++) {
        memset(st, 0, sizeof(st));
        dfs(i, res);
    }
    printf("%d\n", res);
    return 0;
}

G(Ex).不许6

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;
using ll = long long;

void solve() {
    ll k; scanf("%lld", &k);
    vector<ll> res;
    while(k) {
        res.push_back(k%9);
        k /= 9;
    }
    reverse(res.begin(), res.end());
    for(auto &x:res) {
        if(x >= 6) x++;
        printf("%lld", x);
    }
    puts("");
}

int main() {
    int t; scanf("%d", &t);
    while(t--) {
        solve();
    }
    return 0;
}

标签:里奇,int,题解,ll,namespace,初赛,res,using,include
From: https://www.cnblogs.com/1v7w/p/17437203.html

相关文章

  • c++模板的引用类型参数折叠问题解释
    template<typenameT>voidf1(T&);实参可以是左值、const类型的左值,不能是右值。f1(i);  //正确,i是int型,T是intf1(c); //正确,i是constint型,T是constintf1(5); //错误 template<typenameT>voidf1(constT&);实参可以是左值、const类型的左值、......
  • 题解 P5597【【XR-4】复读】
    一道好题!挺对我脑回路的,于是秒掉了,来写个题解。下文称执行一遍指令的过程为一个周期。例如指令是LRU,那么LRULRULRULRU共执行了四个周期。看到平方的数据范围,不难想到枚举第一个周期的终点。作为一台优秀的复读机,我们知道每个周期在树上发生的相对位移是相同的。例如,如下的一......
  • 使用SpringMVC 拦截器导致出现@CrossOrigin失效问题解决办法
    非简单请求会发起一个OPTIONS方法的预检请求,这个请求会被拦截器拦截,但是服务器没有给浏览器返回必要的跨域指示信息(比如:“Access-Control-Allow-Origin”----允许哪些请求访问),浏览器没收到指示信息,就认为服务器不允许跨域请求,就会报错。所以需要在拦截器拦截OPTIONS方法的预......
  • Python_手动下载Chrome驱动找不到对应版本,尝试pip自动下载对应版本的驱动,问题解决
    pipinstallwebdriver-manager 验证是否成功代码如下:fromseleniumimportwebdriverdriver=webdriver.Chrome()url='https://www.csdn.net/'driver.get(url)driver.maximize_window()验证成功......
  • JOISC 2017 题解
    JOISC2017Day1开荒者Cultivation首先进行转化,转化为对于每个点\(x,y\),将其扩成一个左上角为\((x-a,y-c)\)右下角为\((x+b,y+d)\)的矩形后覆盖整个\(R\timesC\)的大举行。首先考虑枚举\(a,b\),那么我们可以得到平面上的几条垂直线段,那么我们可以得到一些关于\(c,d\)......
  • 校门外歪脖树上的鸽子 题解
    题面(图是偷来的)。\(1\len,m\le2*10^5,1\led_i\le10^8\)。样例输入:564536128711512232151253224235样例输出:0539广义二叉树有这样一种普遍的处理方法:定义\(is_a\)表示\(a\)是否是它父亲的左儿子。(根的值为\(-1\))定义\(f......
  • 2023年5月26日 问题解答
    为了解决问题一,我们可以使用调度算法来规划自动导引车的行动,以确保所有待加工任务能够顺利完成。首先,我们需要确定任务的处理顺序。根据表1中给出的加工时间,我们可以按照加工时间从小到大的顺序对任务进行排序。然后,我们可以使用一个列表来表示每台自动导引车的状态。初始时,所有......
  • 河北工业大学 ACM 集训队 2023 年夏季选拔 题解 12/12
    https://ac.nowcoder.com/acm/contest/59007A假设数字n有len位则小len的长度,每个都有九个方案。长度和len一样的,至少有n[0]-1种方案n[0]n[0]n[0]...的这个方案暴力地跑一遍看看是不是小于等于n即可#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;in......
  • ABC268G 题解
    前言题目传送门!更好的阅读体验?很牛逼的题目,这题是要从定义出发,而非DP,但是想到这一点不简单(我太菜了)。思路考虑两个名字\(s\)与\(t\)。如果\(s\)是\(t\)的前缀,根据字典序的规则,\(t\)必然比\(s\)靠前。即\(0\)。如果\(t\)是\(s\)的前缀,同理,\(s\)比\(t\)......
  • ABC261F 题解
    前言题目传送门!更好的阅读体验?非常好的数据结构优化题。思路对于第\(x\)次询问,答案为\(\dfrac{\sum\limits_{i=1}^x\sum\limits_{j=1}^x\max(a_i,a_j)}{x^2}\)。分母显然可以用逆元求,所以看上面那一坨。看上面这幅图就比较显然了,我们只需要在线维护数据结构,支持:求出......