首页 > 其他分享 >2022.11.20

2022.11.20

时间:2022-11-20 21:59:18浏览次数:68  
标签:ch 20 read long 链表 while 2022.11 getchar

T2:

首先看出,答案肯定与 \(X\) 有关, 所以肯定有一层循环用来枚举 \(X\)

然后考虑每个州对答案的贡献,只会是某个兵种的范围

所以需要求出当前 \(X\) 下,某个兵种的范围,下面以步兵为例

\(O(n)\) 求出步兵的上界,需要求步兵的下界,显然步兵的下界就是 总数 - 空军的上界,所以还需要维护空军的上界

最后答案加上步兵上界和下界的范围即可

复杂度 \(O(n * k)\)

代码如下:

/*

     />    フ
     |  _  _|
     /`ミ _x 彡
     /      |
    /   ヽ   ?
 / ̄|   | | |
 | ( ̄ヽ__ヽ_)_)
 \二つ

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

long long read()
{
    long long x = 0, f = 1; char ch = getchar();
    while(ch < '0' || ch > '9'){if(ch == '-') f = -1; ch = getchar();}
    while(ch >= '0' && ch <= '9'){x = x * 10 + ch - '0'; ch = getchar();}
    return x * f;
}

int n;

int a[5010], b[5010], k = 0x3f3f3f3f;

long long ans;

int main()
{
	n = read();
	for(int i = 1; i <= n; i++)
	{
		a[i] = read();
		b[i] = read();
		k = min(k, a[i] + b[i]);
	}
	for(int i = 1; i <= k; i++)
	{
		int maxlu = 0, maxkong = 0;
		for(int j = 1; j <= n; j++)
		{
			maxlu += min(a[j], i);
			maxkong += min(b[j], i);
		}
		int minlu = n * i - maxkong;
		ans += maxlu - minlu + 1;
	}
	cout << ans << "\n";
    return 0;
}

T3

很明显是块状链表的裸题(可惜考试之前没学过不会用,写了个50分的普通链表)

下面介绍一下块状链表:传送门

很显然每次给出的 \(l\), \(r\)。

要让原来的链表变成 \(1\) ~ \(l\) + \(l\) ~ \(r\) + \(l\) ~ \(n\)

最后长度会超过 \(n\),需要把多余的部分删去只留下 \(1\) ~ \(n\)。

代码如下

/*

     />    フ
     |  _  _|
     /`ミ _x 彡
     /      |
    /   ヽ   ?
 / ̄|   | | |
 | ( ̄ヽ__ヽ_)_)
 \二つ

*/
#include<bits/stdc++.h>
#include<ext/rope>
using namespace std;
using namespace __gnu_cxx;

long long read()
{
    long long x = 0, f = 1; char ch = getchar();
    while(ch < '0' || ch > '9'){if(ch == '-') f = -1; ch = getchar();}
    while(ch >= '0' && ch <= '9'){x = x * 10 + ch - '0'; ch = getchar();}
    return x * f;
}

rope <int> x; 

int n, q;

int main()
{
	n = read(), q = read();
	x.push_back(0);
	for(int i = 1; i <= n; i++)
	{
		int a = read();
		x.push_back(a);
	}
	while(q--)
	{
		int op = read();
		if(op == 1)
		{
			int l = read(), r = read();
			x = x.substr(x.begin(), x.begin() + l) + x.substr(x.begin() + l, x.begin() + r + 1) + x.substr(x.begin() + l, x.end());
			if(x.length() > n + 1) x = x.substr(x.begin(), x.begin() + 1 + n);
		}
		else
		{
			int k = read();
			cout << x[k] << "\n";
		}
	}
    return 0;
}

标签:ch,20,read,long,链表,while,2022.11,getchar
From: https://www.cnblogs.com/Han-han-/p/16909690.html

相关文章

  • 【DL论文精读笔记】Object Detection in 20 Y ears: A Survey目标检测综述
    目标检测20年综述(2019)......
  • 11.20.3
    #include<stdio.h>intmain(){ intn,i,j,a[100][100],sum=0; scanf("%d",&n); for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]);  for(i=0;i<n;i++) f......
  • 2022-2023-1 20221402 《计算机基础与程序设计》第十二周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(如2022-2023-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2022-2023-1计算机基础与程序设计第十二......
  • [leetcode每日一题]11.20
    ​​799.香槟塔​​我们把玻璃杯摆成金字塔的形状,其中 第一层 有 ​​1​​ 个玻璃杯, 第二层 有 ​​2​​ 个,依次类推到第100层,每个玻璃杯(250ml)将盛有香槟......
  • 2022-2023-1 20221401 《计算机基础与程序设计》第十二周学习总结
    2022-2023-120221401《计算机基础与程序设计》第十二周学习总结作业信息这个作业属于哪个课程<班级的链接>https://edu.cnblogs.com/campus/besti/2022-2023-1-CFA......
  • Windows server 2016 安装oracle的教程图解
    这篇文章主要介绍了Windowsserver2016安装oracle的教程图解,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 1.安装oracleOracle的......
  • 11.20.2
    #include<stdio.h>intf(intx);intmain(){ intx; scanf("%d",&x); printf("%d",f(x));     return0;}intf(intx){inti,sum=10; if(x>1){ for(i=......
  • windows server2016安装oracle 11g的图文教程
    Windows Server是微软面向服务器的操作系统,服务器操作系统和客户端操作系统是不一样的,下面这篇文章主要给大家介绍了关于windows server2016安装oracle 11g的相关资料......
  • 11月20周报
    11月20周报软件开发架构#1.软件开发架构的目的 程序员在编写软件的时候应该遵循的架构设计——三层架构#2.软件开发架构的分类 C/S架构C:client(客户端) S:s......
  • 黄金波浪221120
    黄金反弹暂时结束。回调的第一条腿可能走完了,下周初如果不破1747则开始小幅度反弹。阻力17556072下周交易计划也是考虑1772空。1722附近是下周重要支撑!1722可以计划......