首页 > 其他分享 >高一下二调

高一下二调

时间:2024-04-15 17:34:43浏览次数:5  
标签:Code return 二调 int 一下 sum using top

OI赛制  三个半小时  四道题

T1:

eee——唐氏大水题,也是成功唐了一波,这题直接用暴力 swap交换数字及下标

A了~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Code:

查看代码
 #include <bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int n,a,cnt,id[N],xb[N];//id即输入的数,xb存每个数的下标
bool flag;
int main(){
	freopen("seat.in","r",stdin);
	freopen("seat.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>id[i];
		xb[id[i]]=i;
	}
	for(int i=1;i<=n;i++){
		while(id[i]!=i){
			int a=id[i];
			swap(id[i],id[xb[i]]);
			swap(xb[i],xb[a]);
			cnt++;
		}
	}
	cout<<cnt;
	return 0;
}
/*
8
5 4 2 3 6 8 7 1
*/

 

T2:

 

 

点击查看图片

%%%%%梦中的梦中~~~%%%%%,呃呃这道题也是俺从文革上一道区间dp的改编题啊,不过这区间dp是真的想不出来,抽象

详解可见 俺从文革《金字塔》一题题解,也是小小的水了一波

直接上Code:

查看代码
 #include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=310,mod=1e9;
string s;
int f[N][N];
int solve(int l,int r){
	if(l>r) return 0;
	if(l==r) return 1;
	if(f[l][r]!=-1) return f[l][r];
	f[l][r]=0;
	for(int k=l+2;k<=r;k++)
		if(s[k]==s[l])
			f[l][r]=(f[l][r]+(long long)solve(l+1,k-1)*solve(k,r))%mod;
	return f[l][r];	
}
main(){
	freopen("school.in","r",stdin);
	freopen("school.out","w",stdout);
	cin>>s;
	memset(f,-1,sizeof(f));
	cout<<solve(0,s.size()-1)<<endl;
}

 

T3:

差分约束 糖果原题,甚至数据一模一样

Code:

查看代码
 #include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=100010;
struct stu{
	int X,A,B;
}q[N];
int n,k,a[N];
main(){
	freopen("bomb.in","r",stdin);
	freopen("bomb.out","w",stdout);
	cin>>n>>k;
	for (int i=1;i<=k;i++) cin>>q[i].X>>q[i].A>>q[i].B;
	for (int i=1;i<=n;i++) a[i]=1;
	for (int t=1;t<=200;t++){
		for (int i=1;i<=k;i++){
			if (q[i].X==1){
				if (a[q[i].A]>a[q[i].B]) a[q[i].B]=a[q[i].A];
				else a[q[i].A]=a[q[i].B];
			}
			else if (q[i].X==2){
				if (a[q[i].A]>=a[q[i].B]) a[q[i].B]=a[q[i].A]+1;
			}
			else if (q[i].X==3){
				if (a[q[i].A]<a[q[i].B]) a[q[i].A]=a[q[i].B];
			}
			else if (q[i].X==4){
				if (a[q[i].A]<=a[q[i].B]) a[q[i].A]=a[q[i].B]+1;
			}
			else if (q[i].X==5){
				if (a[q[i].A]>a[q[i].B]) a[q[i].B]=a[q[i].A];
			}
		}
	}
	for (int i=1;i<=k;i++){
		if (q[i].X==1){
				if (a[q[i].A]>a[q[i].B]) {cout<<"-1";return 0;}
			}
			else if (q[i].X==2){
				if (a[q[i].A]>=a[q[i].B]) {cout<<"-1";return 0;}
			}
			else if (q[i].X==3){
				if (a[q[i].A]<a[q[i].B]) {cout<<"-1";return 0;}
			}
			else if (q[i].X==4){
				if (a[q[i].A]<=a[q[i].B]) {cout<<"-1";return 0;}
			}
			else if (q[i].X==5){
				if (a[q[i].A]>a[q[i].B]) {cout<<"-1";return 0;}
			}
	}
	long long ans=0;
	for(int i=1;i<=n;i++) ans+=a[i];
	cout<<ans<<endl;
	return 0;
}

 

T4:

二分?No,No,No,直接就被卡掉,优先队列即可,将成绩从大到小,或者从小到大排序,然后枚举中位数,在中位数左边和右边查询最小的n/2个元素和。

用动态规划一样的思路处理出从左到右边区间里面有n/2个元素和的最小值,再处理出从右到左的最小值。产生区间里面这个最小值的元素我们用一个大根堆去维护,

每次和堆顶元素比较,如果小就换掉。预处理完,然后就来一遍for循环,比较一下就好了。

看了一眼题解中的可持续化线段树和主席树.......根本不会   太蒟蒻了%%%%%

Code:

查看代码
 #include <bits/stdc++.h>
#define N 200010
using namespace std;
int n,c,maxx,sum,f[N],g[N];
priority_queue<int> q;
struct node{
    int score,w;//score为猪的CSAT成绩,w为奖学金 
}a[N];
bool cmp(node a,node b){
    return a.score<b.score;
}
int main(){
	freopen("money.in","r",stdin);
	freopen("money.out","w",stdout);
    cin>>n>>c>>maxx;
    for(int i=1;i<=c;i++) cin>>a[i].score>>a[i].w;
    sort(a+1,a+1+c,cmp);
    for(int i=1;i<=n/2;i++){
        sum+=a[i].w;
        q.push(a[i].w);
    }
    for(int i=n/2+1;i<=c;++i){
        f[i]=sum;
        int top=q.top();
        if(top>a[i].w){
            q.pop();
            sum-=top;
            sum+=a[i].w;
            q.push(a[i].w);
        }
    }
    sum=0;
    while(!q.empty()) q.pop();
    for(int i=c;i>=c-n/2+1;i--){
        sum+=a[i].w;
        q.push(a[i].w);
    }
    for(int i=c-n/2;i>=1;i--){
        g[i]=sum;
        int top=q.top();
        if(top>a[i].w){
            q.pop();
            sum-=top;
            sum+=a[i].w;
            q.push(a[i].w);
        }
    }
    for(int i=c-n/2;i>=n/2+1;i--)
        if(a[i].w+f[i]+g[i]<=maxx){
            cout<<a[i].score;
            return 0;
        }
    cout<<-1;
    return 0;
}
/*
3 7 15
1 1
2 2
3 12
4 4
5 5
6 6
7 7
*/

 

 

点击查看Goat

点击分享热爱

一名爱打篮球的oier#

标签:Code,return,二调,int,一下,sum,using,top
From: https://www.cnblogs.com/hzoiwzs/p/18136560

相关文章

  • 高一下二调2
    $T1\qquad$排座位https://tg.hszxoj.com/contest/992/problem/4$\quad\\$很难说,开始一眼暴力\(O(n^2)\)(好像不是),再看\(n=1e5\),废了,更不行了。但想起来归并排序,然而并不是归并排序。也是水过样例了,十分……$T2\qquad$梦中的学校https://tg.hszxoj.com/contest/992/......
  • 【比赛】高一下二调 2
    事实证明打水题我还是有一手的T1排座位100Pts题面算是个签到题。直接暴力模拟,只要这个数不在自己的位置上就交换一次即可。赛后题解中有另一种做法:证明的话,数学奥赛的老师也没有具体的办法抽象,但确实是对的。代码#include<bits/stdc++.h>usingnamespacestd;......
  • 模拟赛寄录-高一下二调2
    ?为什么不是高一下三调?好吧那就高一下二调\(\Huge{2}\)赛时意外打的还行的一次。sto391291分大GG\(A.\)排座位唐氏题,谁保龄我不说不过是想到一种新的思路,本来昨天打交大比赛时就想用,但当时没想出来,后来想想也用不上。找环(应该),不停进行一个用\(x\)递归出\(a[x]\)的函数,......
  • 【比赛】高一下二调2
    下载题解其实是一道水题,但容易想偏,如以为是逆序对点击查看代码#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintN=1e6;intn,a[N+5],b[N+5],ans;intmain(){ freopen("seat.in","r",stdin); freopen("seat.out","w&......
  • 记录一下
    在预处理逆元的时候,需要给inv[0]赋值为1,虽然0的逆元为0(或是无意义)但计算inv[m]*inv[n-m]%p时为避免(m==n)导致误差所以要去给inv[0]赋值1但单点求就不用,因为fact[0]=1已经避免这种情况即qpow(fact[m]*fact[n-m],p-2,p)中fact[m]*fact[n-m]不会因为n==m而造成误差变成0还有就......
  • 火狐浏览器看视频全屏时会黑一下屏幕
    火狐浏览器看视频全屏时会黑一下屏幕在浏览器地址栏输入:“about:config”(不包含引号,下同)并回车,然后点击“我知道了”,可以进入高级设置界面。在地址栏下方的搜索栏中输入:“full-screen-api.transition-duration”,首选项中出现两项设置,分别双击并把数值修改为“00”(注意中......
  • 奇怪的错误-------重新定义一下变量就不报错了
    1packagecom.lian.mysqldemo2;23importandroidx.appcompat.app.AppCompatActivity;45importandroid.os.Bundle;6importandroid.os.Handler;7importandroid.text.TextUtils;8importandroid.view.View;9importandroid.widget.TextView;1011......
  • 《架构风清扬-Java面试系列第19讲》解释一下Java中的“volatile”在多线程环境中的作
    适用范围:这道题适应范围挺宽的,各个年限都可以用参考答案:主要用于确保变量在多个线程之间的可见性和有序性。可见性:当一个线程修改了被volatile修饰的变量,其他线程能够立即看到修改后的值。这确保了变量在多个线程之间的可见性。有序性:volatile关键字能够防止指令重排序......
  • 想请教一下,selenium可以做到点击这个继续嘛?
    大家好,我是Python进阶者。一、前言前几天在Python钻石交流群【盼头】问了一selenium的问题,问题如下:想请教一下,selenium可以做到点击这个继续嘛?二、实现过程这里【此类生物】给了一个解答:可以,switchtoalert。顺利地解决了粉丝的问题。如果你也有类似这种Python相关的小问......
  • 记一下-ubuntu22.04安装QQ音乐
    最近用安装了桌面的ubuntu-server22.04,感觉很好用,然后突发奇想,看下装个音乐播放器但是找来找去,发现现在好多已经不开发Debian系的版本了,也就qq音乐还有就尝试安装了下,发现虽然可以安装,但是无法正常打开,打开了就闪退下面就介绍下不闪退的安装步骤下载包到qq音乐的官网下载htt......