首页 > 其他分享 >CSP-2022-J 复赛题解

CSP-2022-J 复赛题解

时间:2022-11-24 20:13:15浏览次数:65  
标签:cnt return 2022 int 题解 value str include CSP

\(\large \texttt{T1 P8813 [CSP-J 2022] 乘方}\)

原题链接

#include<iostream>
#include<cstdio>
#define int long long
using namespace std;
int a, b, c;
int pow(int a, int b)
{
    int ans = 1;
    for (int i = 1;i <= b;i ++)
    {
        ans *= a;
        if (ans > 1e9) return -1;
    }
    return ans;
}
signed main()
{
    scanf("%lld %lld",&a,&b);
    cout << pow(a, b);
}

\(\large \texttt{T2 P8814 [CSP-J 2022] 解密}\)

原题链接

#include<iostream>
#include<cmath>
#define int long long
using namespace std;
int k, n, d, e;
int check(int y) {int x = sqrt(y); return x * x == y; }
void solve(int n, int d, int e)
{
	int a = n + 2 - e * d;
	int b = e * d;
	int c = a + b - 2;
	if (a * a - 4 * c >= 0 && check(a * a - 4 * c))
	{
		int t, p, q;
		t = a + sqrt(a * a - 4 * c);
		if (t % 2) 
		{
			cout << "NO\n";
			return;
		}
		q = t / 2, p = a - q;
		if (p > q) 
		{
			cout << "NO\n";
			return;
		}
		cout << p << " " << q << endl;
		return;
	}
	cout << "NO\n";
}
signed main(void)
{
	cin >> k;
	while (k --)
	{
		cin >> n >> d >> e;
		solve(n, d, e);
	}
}

\(\large \texttt{T3 P8815 [CSP-J 2022] 逻辑表达式}\)

原题链接

#include<bits/stdc++.h>
using namespace std;
struct node {
	int value, cnt_or, cnt_and;
};
stack<node> str;
string expr;
int getpriority(char a)
{
	if (a == '(') return 0;
	if (a == '|') return 1;
	return 2;
}
string turn_into(string expr)
{
	string ret;
	stack<char> st;
	for (auto c:expr)
	{
		if (c == '(') st.push(c);
		else if (c == ')')
		{
			while (st.top() != '(')
			{
				ret.push_back(st.top());
				st.pop();
			}
			st.pop();
		}
		else if (c == '&' || c == '|')
		{
			while (!st.empty() && getpriority(c) <= getpriority(st.top()))
			{
				ret.push_back(st.top());
				st.pop();
			}
			st.push(c);
		}
		else ret.push_back(c);
	}
	while (!st.empty())
	{
		ret.push_back(st.top());
		st.pop();
	}
	return ret;
}
int main()
{
	cin >> expr;
	string skl = turn_into(expr);
	for (auto c:skl)
	{
		if (c == '|')
		{
			node r = str.top();str.pop();
			node l = str.top();str.pop();
			str.push({l.value | r.value, l.cnt_or + (l.value == 1 ? 1 : r.cnt_or), l.cnt_and + (l.value == 1 ? 0 : r.cnt_and)});
		}
		else if (c == '&')
		{
			node r = str.top();str.pop();
			node l = str.top();str.pop();
			str.push({l.value & r.value, l.cnt_or + (l.value == 0 ? 0 : r.cnt_or),l. cnt_and + (l.value == 0 ? 1 : r.cnt_and)});
		}
		else str.push({c - '0', 0, 0});
	}
	node ans = str.top();
	cout << ans.value << endl;
	cout << ans.cnt_and << " " << ans.cnt_or << endl;
	return 0;
}

\(\large \texttt{T4 P8816 [CSP-J 2022] 上升点列}\)

原题链接

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
struct _pnt {
	int x, y;
}a[1010];
int n, k, ans = 0;
int f[550][550];
int dis(int i, int j) { return abs(a[i].x - a[j].x) + abs(a[i].y - a[j].y) - 1; }
bool cmp(_pnt p1, _pnt p2) {
	if (p1.x == p2.x) return p1.y < p2.y;
	else return p1.x < p2.x;
}
int main()
{
	scanf("%d %d", &n, &k);
	for (int i = 1;i <= n;i ++) scanf("%d %d", &a[i].x, &a[i].y);
	sort(a + 1, a + n + 1, cmp);
	for (int i = 1;i <= n;i ++)
	{
		int x = a[i].x;
		int y = a[i].y;
		for (int z = 0;z <= k;z ++)
		{
			f[i][z] = 1;
			for (int j = 1;j <= n;j ++)
			{
				if (i != j && a[j].x <= x && a[j].y <= y)
				{
					int len = dis(i, j);
					if (z >= len)
					{
						f[i][z] = max(f[i][z], f[j][z - len] + len + 1);
					}
				}
			}
			ans = max(ans, f[i][z] + k - z);
		}
	}
	printf("%d\n", ans);
	return 0;
}

标签:cnt,return,2022,int,题解,value,str,include,CSP
From: https://www.cnblogs.com/kkksc007/p/16923060.html

相关文章

  • NOIP 2022 游记
    前言广告位招租背景/Day-INF高一,第一场正式的NOIp(初中生不给算),仔细一想也是倒数第二场(惊恐)。几周前的CSP考了220分,几乎是本校(停课选手中)最低的。应该说有偶然成分,但是......
  • SACC2022
    SACC2022一、将一个长方体切成两个长方体,两个长方体的体积之差最小是多少?思路:当长宽高有一个为偶数时,总可以切成两个相等的长方块,故最小体积差为0;当长宽高均为奇数时,切......
  • 2022NOIPA层联测34
    A.bs串只知道去找环然后挨个判断……正解是把不同色的边连上,枚举哪两个同色的边两端已经联通。二分+并查集。code#include<bits/stdc++.h>usingnamespacestd;......
  • 2022年丘成桐女子数学竞赛
    如何评价第二届丘成桐女子中学生数学竞赛笔试试题?1. 求\alpha,\beta使得级数\sum\limits_{n=1}^{\infty}\sum\limits_{m=1}^n\dfrac{1}{n^{\alph......
  • 2022最新整理iOS app上架app详细教程​
    上架iOS需要一个付费688的开发者账号,还没有的话申请一个或者借用。​​​申请苹果开发者账号教程​​​上架AppStore之前是先安装到苹果手机测试调试好,app能正常运行再上......
  • NFLS2022 CSP 模拟赛 21 C
    Link题解神仙调整题。无解就是两点一边,神奇的是std并没有写无解情况(设点\(u\)的权值\(sum_u\)为\(u\)相邻边的边权和\(\bmod3\)的结果。考虑二分图怎么做,拉......
  • IDEA编辑器下Vue项目中Element标签出现标黄(Unknown html tag el-form)问题解决方案!
      第一步:检查配置中的依赖项是否勾选,如未勾选则勾上  第二步:检查配置中的Excludes项,如果有被排除的项目则删除  第三步:执行npminstall后,在node_modul......
  • 2022最新整理iOS app上架app详细教程
     上架iOS需要一个付费688的开发者账号,还没有的话申请一个或者借用。申请苹果开发者账号教程上架AppStore之前是先安装到苹果手机测试调试好,app能正常运行再上......
  • NFLS2022 CSP 模拟赛 21 A
    Link题解不会T1/hanx首先对\(S\)串KMP一波。假如我们已经填好了\(T\)的前\(i\)个字符,并设\(T_{1\simi}\)与\(S\)的相同长度前缀相等的最长后缀长度为\(......
  • 2022最新整理iOS app上架app详细教程
     上架iOS需要一个付费688的开发者账号,还没有的话申请一个或者借用。申请苹果开发者账号教程上架AppStore之前是先安装到苹果手机测试调试好,app能正常运行再上......