牛客白月赛12题解

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客白月赛12题解相关的知识,希望对你有一定的参考价值。

https://ac.nowcoder.com/acm/contest/392#question

目录

华华听月月唱歌【贪心】

#include<bits/stdc++.h>
using namespace std;
const int N=1e5*2+10;
typedef long long int LL;
typedef pair<int,int> PII;
LL n,m;
vector<PII>ve;
int main(void)

	cin>>n>>m;
	while(m--)
	
		int l,r; cin>>l>>r;
		ve.push_back(l,r);
	
	sort(ve.begin(),ve.end());
	int ed=0,cnt=0;
	for(int i=0;i<ve.size();i++)
	
		int temp=0,j=i-1;
		while(j+1<ve.size()&&ve[j+1].first<=ed+1) temp=max(ve[j+1].second,temp),j++;
		cnt++,ed=temp,i=j;
		if(temp==0)
		
			puts("-1");
			return 0;
		
		if(ed>=n) break;
	
	cout<<cnt<<endl;
	return 0;

华华教月月做数学【快速幂】

#include<bits/stdc++.h>
using namespace std;
typedef  long long int LL;
__int128 qsm(__int128 a,__int128 b,__int128 p)

	__int128 sum=1;
	a=a%p;
	while(b)
	
		if(b&1) sum=sum*a%p;
		b>>=1;
		a=(a*a)%p;
	
	return sum%p;

template <typename T>
inline T read() 
 
 	//声明 template 类, 要求提供输入的类型 T, 并以此类型定义内联函数 read()
	T sum = 0, fl = 1; // 将 sum,fl 和 ch 以输入的类型定义
	int ch = getchar();
	for (; !isdigit(ch); ch = getchar())
	if (ch == '-') fl = -1;
	for (; isdigit(ch); ch = getchar()) sum = sum * 10 + ch - '0';
	return sum * fl;

template <typename T>
inline void write(T x) 

    static int sta[35];
    int top = 0;
    do 
        sta[top++] = x % 10, x /= 10;
     while (x);
    while (top) putchar(sta[--top] + 48); // 48 是 '0'

int main(void)

	int t; cin>>t;
	while(t--)
	
		__int128 a,b,p;
		a=read<__int128>();
		b=read<__int128>();
		p=read<__int128>();
		write(qsm(a,b,p));
		cout<<endl;
	
	return 0;

以上是关于牛客白月赛12题解的主要内容,如果未能解决你的问题,请参考以下文章

牛客白月赛4 题解

牛客白月赛11题解

牛客白月赛10题解

牛客白月赛14题解

牛客白月赛32题解

牛客白月赛31题解