首页 > 其他分享 >2024.6.7

2024.6.7

时间:2024-06-07 16:56:52浏览次数:17  
标签:2024.6 魔方 int 宠物 样例 long 101

2024.6.7 【高考咯!!!学长们加油啊!!!】

Friday 五月初二


A. 双色球

【题目描述】
机房来了新一届的学弟学妹,邪恶的chenzeyu97发现一位学弟与他同名,于是他当起了善良的学长233

“来来来,学弟,我考你道水题检验一下你的水平……”

一个栈内初始有n个红色和蓝色的小球,请你按照以下规则进行操作

只要栈顶的小球是红色的,将其取出,直到栈顶的球是蓝色

然后将栈顶的蓝球变成红色

最后放入若干个蓝球直到栈中的球数为n

以上3步骤为一次操作

如栈中都是红色球,则操作停止,请问几次操作后停止

chenzeyu97出完题发现他自己不能AC所以想请你帮忙

【输入格式】
第一行为一个整数n,表示栈的容量为n

第二行为一个字符串,第i个字符表示自顶向下的第i个球的颜色,R代表红色,B代表蓝色

【输出格式】
一个整数表示操作数

【样例输入】
样例1:

3
RBR

样例2:

4
RBBR

【样例输出】

样例1:2
样例2:6

【样例解释】

样例一
【数据范围】
50%的数据,1<=n<=20

100%的数据,1<=n<=50

//2024.6.7
//by white_ice
#include<bits/stdc++.h>
using namespace std;
#define ll long long
constexpr int oo = 60;

ll pow(int x){long long s=1;for(int i=1;i<x;i++)s*=2;return s;}

int n;
int st[oo];
char sp[oo];
ll out;


int main(){
    cin >> n;
    scanf("%s",sp);
    for(int i=1;i<=n;i++)
        if(sp[i-1]=='R')
            st[i]=1;
        else st[i]=2;  

    for(int i=1;i<=n;i++)
        if(st[i]==2)
            out+=pow(i);

    cout << out;

    return 0;
}

数据看着不大,

但模拟会T掉,

结论题,

一个蓝球耗费n^2次。


B. 魔方

【题目描述】
ccy(ndsf)觉得手动复原魔方太慢了,所以他要借助计算机。

ccy(ndsf)家的魔方都是333的三阶魔方,大家应该都见过。

请添加图片描述
(​3的“顺时针”改为“逆时针”,即3 4以图为准。)

ccy(ndfs)从网上搜了一篇攻略,并找人翻译成了他自己会做的方法。现在告诉你他的魔方情况,以及他从网上搜到的攻略,请你求出最后魔方变成什么样子。

【输入格式】
第一行,一串数字,表示从网上搜到的攻略。

下面6*3行,每行3个数字,每三行表示魔方一个面的情况,六个面的顺序是前、后、左、右、上、下。

【输出格式】
6*3行,表示处理后的魔方,形式同输入。

【样例输入】

23
121
221
111
123
321
111
123
321
132
132
231
132
121
112
233
332
111
332

【样例输出】

123
222
113
212
321
113
122
321
132
121
333
121
211
312
113
331
111
331

【样例解释】
图中有误,是2操作

请添加图片描述
请添加图片描述

【数据范围】
40%的数据,攻略的长度小于5且仅有4种操作的其中一种

100%的数据,攻略的长度小于100

这题样例有问题,极大问题!!!

**才写这大模拟


C. czy的宠物

【题目描述】
czy要妥善安排他的宠物,他想在机房摆一群宠物,一共有n个位置排成一排,每个位置可以摆宠物也可以不摆宠物。有些类型宠物如果摆在相邻的位置(隔着一个空的位置不算相邻),就不好看了。假定每种宠物数量无限,求摆宠物的方案数。

【输入格式】
输入有m+1行,第一行有两个用空格隔开的正整数n、m,m表示宠物的种类数。

接下来的m行,每行有m个字符1或0,若第i行第j列为1,则表示第 i 种宠物第 j 种宠物不能排在相邻的位置,输入保证对称。

(提示:同一种宠物可能不能排在相邻位置)。

【输出格式】
输出只有一个整数,为方案数(这个数字可能很大,请输出方案数除以1000000007的余数。

【样例输入】

2 2
01
10

【样例输出】

7

【样例说明】
七种方案为(空,空)、(空,1)、(1、空)、(2、空)、(空、2)、(1,1)、(2,2)。

【数据范围】
20%的数据,1<n≤5,0<m≤10。

60%的数据,1<n≤200,0<m≤100。

100%的数据,1<n≤1000000000,0<m≤100。

//2024.6.7
//by white_ice
#include<bits/stdc++.h>
#define int long long 
#define itn long long
using namespace std;
constexpr int oo = 102;
constexpr itn mod = 1000000007;

int n,m;
char st[101];

int c[101],out;
int a[101][101],b[101][101];

void mul(int a[101][101],int b[101][101],int s[101][101]){
    int t[101][101];
    for(int i=0;i<=m;i++)
       for(int j=0;j<=m;j++){
            t[i][j]=0;
            for(int k=0;k<=m;k++)
                t[i][j]=(t[i][j]+a[i][k]*b[k][j])%mod;
        }
    for(int i=0;i<=m;i++)
        for(int j=0;j<=m;j++)
            s[i][j]=t[i][j];
}

void mul2(int a[101][101],int b[101],int s[101]){
    int t[101];
    for(int i=0;i<=m;i++){
        t[i]=0;
        for(int k=0;k<=m;k++)
            t[i]=(t[i]+a[i][k]*b[k])%mod;
    }
    for(int i=0;i<=m;i++)
        s[i]=t[i];
}

signed main(){
	cin >> n >> m;
	for(int i=1;i<=m;i++){
		scanf("%s",st);
		for(int j=1;j<=m;j++)
		   if(st[j-1]=='0')
		      a[i][j]=1;
	}
	for(int i=0;i<=m;i++)
        a[i][0]=a[0][i]=1;
	for(int i=0;i<=m;i++)
        b[i][i]=1;

	while(n){
        if(n&1)
            mul(a,b,b);
        n>>=1;
        mul(a,a,a);
    }

    c[0]=1;
    mul2(b,c,c);

    for(int i=0;i<=m;i++){
        out+=c[i];
        out%=mod;
    }
    cout << out;
	return 0;
}

DP,但是要优化,

矩阵优化,太玄学了这东西,

DP柿子其实并不难推,主要是

1000000000这个数太吓人了。。。


D. Mex

题目描述
请添加图片描述
输入格式
请添加图片描述
输出格式
输出文件应当包含 q 行, 每行一个正整数,表示输入文件中对应询问的答案。

样例输入

7 5
0 2 1 0 1 3 2
1 3
2 3
1 4
3 6
2 7

样例输出

3
0
3
2
4

样例解释与数据范围
请添加图片描述
请添加图片描述

//2024.6.7
//by white_ice
#include <bits/stdc++.h>
//#include"fopen.cpp"
using namespace std;
#define itn int
constexpr itn oo = 200005;
 
int n,m;
itn num[oo],rt[oo];
int cnt ;

struct {int l,r,mned;} t[oo<<5] ;

namespace TREE{

void pushup(int ned) {t[ned].mned = min(t[t[ned].l].mned,t[t[ned].r].mned);}
void buiild(int x,int v,int l,int r,int &ned) {
    t[++cnt] = t[ned] ; ned = cnt ;
    if(l == r) {
        t[ned].mned = v;
        return ; }
    int mid = (l + r) >> 1 ;
    if(mid >= x)
        buiild(x,v,l , mid , t[ned].l) ;
    else buiild(x,v,mid+1 , r , t[ned].r) ;
    pushup(ned) ;
}
int find(int x, int l , int r , int ned) {
    if(l == r)
        return l ;
    int mid = (l + r) >> 1 ;
    if(t[t[ned].l].mned <= x)
        return find(x , l , mid , t[ned].l) ;
    else return find(x , mid+1 , r , t[ned].r) ;
}
}

int main() {
    //fre();

    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);

    using namespace TREE;

    cin >> n >> m ;
    for(int i=1;i<=n;i++)
        cin >> num[i];

    for(int i=1;i<=n;i++) {
        rt[i] = rt[i-1] ;
        if(num[i]>n+1)
             continue ;
        buiild(num[i],i,0,n+1,rt[i]) ;
    }

    int l , r ;
    while(m --) {
        cin >> l >> r;
        cout << find(l-1,0,n+1,rt[r])<< endl;
    }
    
    return 0 ;
}

数据结构,但是,

考试的时候开小了,RE爆掉了

打一颗持久一点的线段树


标签:2024.6,魔方,int,宠物,样例,long,101
From: https://www.cnblogs.com/white-ice/p/18237494

相关文章

  • 2024.6.6
    更换了hadoop中的jdk的版本从1.8->17rdd行动算子和转换算子序列化//TODO//Spark在编写代码时,调用转换算子,并不会真正执行,因为只是在Driver端组合功能//所以当前的代码其实就是在Driver端执行//所以当前main方法也称之为driver方法......
  • 2024.6.6 日记
    晚上写不动题,所以打算每天睡前写点神秘文字。明天还有模拟赛,相似。周二T1挂了,凭借神秘的狗运打表瞪出了T2的结论,明天,或者以后,还会有这样的好运吗。呃我要干啥,要不然写点总结。这两天讲了dp,于是我补了一点题,找了一点题。感觉dp的方法其实大概就是,对着一个已知的过程dp,......
  • 2024.6 做题记录
    2024.6做题记录[JSOI2009]球队收益/球队预算考虑到要求最小总支出,想到最小费用流。首先容易发现,每场比赛都只有两种可能,即甲输乙赢或甲赢乙输。但是这样我们在跑费用流的时候显然需要考虑对于两个因素同时的影响,显然这样不好做。我们不妨假设剩下的比赛所有人都输,那么我们......
  • 2024.6.6
    2024.6.6【一天高考!!!“夏天周而复始、该相逢的人会再相逢”】Thursday五月初一<theme=oi-"DP">来学习一下DP的优化其实考试时我应该很难用到优化的P2569[SCOI2010]股票交易DP柿子比较好推,T,Maxp都比较小,作为f数组的两维还是挺合理的。那么设f[i][j]为第i天,有j张......
  • 2024.6.3 时光机会是最没用的发明
    正如标题,时光机会是最无用的发明。如果问昨天的我,时光机有用吗,我会毫不犹豫地回答有用。我希望回到5月,乞求自己好好改初赛;我希望回到1月,乞求自己不要虚度光阴;我希望回到去年9月,乞求自己不要头铁T2,乞求自己检查T1;我希望回到去年6月,乞求自己不要玩florr,这个万恶之源;我希望回到......
  • 2024.6.2
    2024.6.2【明霄升海平,飞彩镌流年。】Sunday四月廿六A.矩形覆盖题目描述有N个矩形,矩形的底边边长为1,且均在X轴上,高度给出,第i个矩形的高为h[i],求最少需要几个矩形才能覆盖这个图形。例如h=[3,2,4,2]的图形如下:image容易发现,只需要3个矩形就能覆盖这个图形。输入......
  • 2024.6 做题记录
    1.#2498.XavierisLearningtoCount有\(n\)个互不相同的整数\(a_{1,\cdots,n}\),从其中任取恰好\(k\)个数,记他们和为\(s\),求对于每个\(s\)的方案数。\(n,a_i\le1.3\times10^4,k\le5\)。根据互不相等容斥的结论,只需枚举集合划分的方案\(\{S_i\}\),钦定同一......
  • [2024.5.31晚~2024.6.1早鲜花] 余生的第一天
    [2024.5.31晚~2024.6.1早鲜花]余生的第一天来\(GF\)集训一两周了,宿舍居然有电梯,而且学生居然可以乘坐,\(GF\)的饭也十分好吃,比\(XF\)的好吃一万倍,听\(yzj\)说清华附的比\(GF\)好吃一万倍,难以想象了认识了好多别的学校的女生!大家都好可爱(●'◡'●),传奇的原神传教大师\(cyl\)有......