首页 > 其他分享 >洛谷100题计划(20/100)

洛谷100题计划(20/100)

时间:2023-09-08 23:22:45浏览次数:41  
标签:sy sx 洛谷 int cin ++ 20 100

洛谷100题计划(20/100)

P1147 连续自然数和 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题意就是找一段连续的区间,使得区间和为\(M\),很容易发现,其实这个区间就是一个等差数列,所以\(区间和 = \frac{(首项+末项)\times 项数}{2}\),假设首项为\(L\),末项为\(R\),那么可以得出\(\frac{(L+R)\times (R-L+1)}{2}=M\),全部展开再化简可以得到\(R^2+R+(2M-L^2+L)=0\),我们可以去枚举\(L\),通过解方程求出\(R\),首先肯定要有解,即\(b^2-4ac>0\),又易知一元二次方程解\(x = \frac{-b\pm \sqrt{b^2-4ac}}{2a}\),小于\(L\)的直接就不看了,对于大于\(L\)的\(R\),我们只要看它是不是整数即可

#include<bits/stdc++.h>

using i64 = long long;

using namespace std;

typedef pair<i64, i64> PII;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    double M;
    cin >> M;
    vector<PII> v;
    for (i64 L = 1; L < M; L ++) {
        if (1 - 4 * (L - 2 * M - L * L) >= 0) {
            double R = (-1 + sqrt(1 - 4 * (L - 2 * M - L * L))) / 2.0;
            if (R == (int)R && R > L) {
                cout << L << ' ' << R << '\n';
            }
        }
    }
    return 0;
}

P1125 [NOIP2008 提高组] 笨小猴 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

按照题意模拟即可(原来做过就直接上代码了

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
const int mod  = 47;
char s1[N], s2[N];
int n, a, b, c, ss[N];
bool perim(int x)
{
    if (x < 2) return false;
    for (int i = 2; i <= sqrt(x); i++)
        if (x % i == 0) return false;
    return true;
}
int main()
{
    cin >> s1;
    for (int i = 0; i < strlen(s1); i++)
        ss[s1[i] - 'a'] ++;
    int maxn = -1, minn = N ;
    for (int i = 0; i < 26; i++)
    {
        if (ss[i] == 0) continue;
        maxn = max(maxn, ss[i]);
        minn = min(minn, ss[i]);
    }
    if (perim(maxn - minn))
        cout << "Lucky Word\n" << maxn - minn << endl;
    else
        cout << "No Answer\n" << 0 << endl;
    return 0;
}

P1605 迷宫 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目数据很小,随便搜应该都能过(

按我以前的思路来看就是先把障碍点标记,然后从起点上下左右地去搜

#include<bits/stdc++.h>
using namespace std;
int maap[6][6], n, m, t, sx, sy, fx, fy, zx, zy, ans;
bool hehe[6][6] = {0};
int v[] = {1, 0, -1, 0}, u[] = {0, 1, 0, -1};
void dfs(int sx, int sy, int fx, int fy)
{
    if (sx == fx && sy == fy)
    {
        ans++;
        return ;
    }
    else
    {
        for (int i = 0; i < 4; i++)
        {
            int x, y;
            x = sx + v[i];
            y = sy + u[i];
            if ((hehe[x][y] == 0) && (maap[x][y] == 1))
            {
                hehe[sx][sy] = 1;
                dfs(x, y, fx, fy);
                hehe[sx][sy] = 0;
            }
        }
    }
    return ;

}
int main()
{
    cin >> n >> m >> t >> sx >> sy >> fx >> fy;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++)
            maap[i][j] = 1;

    for (int i = 1; i <= t; i++)
    {
        cin >> zx >> zy;
        maap[zx][zy] = 0;
    }
    dfs(sx, sy, fx, fy);
    cout << ans;
    return 0;
}

P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

很经典的一道题,一道优先队列的入门题,就是将全部果子都放进优先队列里,每次取堆顶的两个合并然后又放进去,直到剩一个为止

#include <bits/stdc++.h>

using namespace std;

const int N = 1e6 + 10;

int main() {

    int n, m;
    priority_queue<int, vector<int>, greater<int>> Q;
    cin >> n;
    for (int i = 0; i < n; i ++) {
        cin >> m;
        Q.push(m);
    }
    int ans = 0;
    while (Q.size() > 1) {
        int u = Q.top();
        Q.pop();
        int v = Q.top();
        Q.pop();
        ans += u + v;
        Q.push(u + v);
    }
    cout << ans << endl;

    return 0;
}

P1037 [NOIP2002 普及组] 产生数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

这题感觉坑点有点小多,首先你如果没用高精度的话就要用\(int128\),因为最后结果可能会爆long long,其次不能直接用字符串去递归,会爆\(MLE\)(亲身经历,好的方法其实是去递归每次能更换哪些数字,按题中例子来看\(234\),\(2\)可以换成\(2,5\),可更换\(2\)种,\(3\)可以换成\(3,6\),也可更换\(2\)种,除此之外没了,所以答案就是\(2\times 2=4\),所以我们直接去遍历每个数字,看每个数字能更换多少种,然后全部乘起来即可,复杂度\(\mathcal{O}(n2^k)\)

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n';

using namespace std;
using i64 = long long;

inline void print(__int128 x)
{
	if(x<0){
		putchar('-');
		x=-x;
	}
	if(x>9) print(x/10);
	putchar(x%10+'0');
}//int128不能直接输出,需要用快写,网上一搜就有了

int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);

	string s;
	int k;
	cin >> s >> k;
	vector<int> x(20), y(20);
	vector<bool> v(20, false);
	for (int i = 0; i < k; i ++) {
		cin >> x[i] >> y[i];
	}

	int n = s.size();
	auto dfs = [&](auto self, int si) {
		if (v[si]) return ;

		v[si] = true;
		for (int i = 0; i < k; i ++) {
			if (x[i] == si)
				self(self, y[i]);
		}

		return ;
	};

	__int128 ans = 1;
	for (int i = 0; i < n; i ++) {
		dfs(dfs, s[i] - '0');
		int num = 0;
		for (int i = 0; i <= 9; i++)
			num += v[i], v[i] = false;

		ans *= num;
	}

	print(ans);

	return 0;
}

标签:sy,sx,洛谷,int,cin,++,20,100
From: https://www.cnblogs.com/Kescholar/p/17688733.html

相关文章

  • 2039:【例5.6】冒泡排序
    2039:【例5.6】冒泡排序时间限制:1000ms      内存限制:65536KB提交数:51543   通过数:28200【题目描述】编程输入n(1≤n≤20)(1≤n≤20)个小于10001000非负整数,然后自动按从大到小的顺序输出。(冒泡排序)【输入】第一行,数的个数n;第二行,n个非负整数。......
  • 2023-09-08 小程序之启用组件按需注入 ==》 添加一行代码:"lazyCodeLoading": "require
    在manifest.json文件里面的mp-weix对象添加代码:"lazyCodeLoading":"requiredComponents"可实现组件按需注入,引用官方说法就是:启用按需注入后,小程序仅注入当前访问页面所需的自定义组件和页面代码。未访问的页面、当前页面未声明的自定义组件不会被加载和初始化,对应代码文件将不被......
  • P4042 [AHOI2014/JSOI2014] 骑士游戏
    原题非常好的一道题,用到了一个重要的思路:消除\(dp\)的后效性不要觉得这个东西很恐怖,其实这个东西并不复杂,只是名字有点吓人我们容易想到对把原题抽象成一个图,我们容易想到如果该图为\(DAG\)我们要怎么做,直接拓扑上\(dp\)即可但回到原题,我们发现\(dp\)就有了一些问题:这个题是有......
  • 【230908-17】▲ABC中,b=2,B=30°,C=45°,则S△ABC=?(2013年全国II卷)
    ......
  • 南京大学计算机拔尖班2023选拔考试乱写
    题目是从这里搬的第一题(20分)在黑板上写有2023个1,下面进行2022次如下操作:擦掉黑板上任意两个数\(a,b\)并写下\(a+b\)或者\(\min\{a^2,b^2\}\),最后只剩下一个数,记这个数字最大可能值为\(r\),求证\(\displaystyle2^{\frac{2023}3}<r<3^{\frac{2023}3}\)【Solution】......
  • [书目20230908]信息系统项目管理师教程
    第1章 信息化发展11.1 信息与信息化11.1.1 信息21.1.2 信息系统21.1.3 信息化41.2 现代化基础设施71.2.1 新型基础设施建设71.2.2 工业互联网81.2.3 车联网101.3 现代化创新发展121.3.1 农业农村现代化121.3.2 两化融合与智能制造131.3.3 消......
  • 2023金九银十Android高级工程师面试 1000 题+答案(全)
    前言面对金九银十的招聘旺季,如果没有精心准备那笔者认为那是对自己不负责任;就我们Android程序员来说,多数的公司总体上面试都是以自我介绍+项目介绍+项目细节/难点提问+基础知识点考核+算法题这个流程下来的。有些公司可能还会问几个实际的场景类的问题,这个环节阿里是必问的,这种问......
  • Adobe Lightroom Classic 2023(版本 12.5安装包资源)
    AdobeLightroomClassic2023(版本12.5)软件更新了,该版本新增了哪些功能呢?AdobeLightroomClassic2023激活版是一款专业的数字照片处理软件,它可以帮助摄影师对照片进行分类、编辑、调整和输出。它具有强大的图像处理功能,可以对RAW格式的照片进行处理,支持多种文件格式,包括JPEG、......
  • 2023-09-08学习记录
    零拷贝疑惑原来8张图,就可以搞懂「零拷贝」了https://www.cnblogs.com/xiaolincoding/p/13719610.html零拷贝(Zero-copy)及其应用详解https://www.jianshu.com/p/193cae9cbf07AIONetty线程模型疑惑面试官:Reactor和Proactor为什么性能高?https://zhuanlan.zhih......
  • 制图软件AutoCAD 2024 win+Mac(支持M芯片的CAD)
    AutoCAD2024是Autodesk公司开发的一款专业制图软件,它具有强大的2D和3D设计和制图功能,被广泛应用于机械、建筑、土木工程、电子等领域的设计和制图工作。→→↓↓载AutoCAD2024win/Mac 首先,AutoCAD2024拥有先进的绘图工具和自动化功能。它提供了多种绘图模式和命令,如线、......