TJUACM假期集训个人赛(八)(cf789a-c cf791a-c)

这篇具有很好参考价值的文章主要介绍了TJUACM假期集训个人赛(八)(cf789a-c cf791a-c)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这场打一半回宿舍有点事润了,态度不端正,下次改正

A. Anastasia and pebbles

题面
签到题,枚举每类石头即可, w a wa wa了一次因为判断错了,分两天取是 > k >k >k,不是 ≥ k \ge k k

#include<bits/stdc++.h>
#define N 200020
#define reg register
using namespace std;
typedef long long ll;
inline void read(int &x){
    int s=0,w=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){s=(s<<3)+(s<<1)+(ch&15);ch=getchar();}
    x=s*w;
}
int n,k,a[N],ans,now;
int main(){
    read(n),read(k);
    for(int i=1;i<=n;i++)read(a[i]);
    sort(a+1,a+1+n);
    for(int i=1;i<=n;i++){
        if(now==1)ans++,a[i]-=k,now=0;
        if(a[i]>=2*k)ans+=a[i]/(2*k),a[i]%=(2*k);
        if(a[i]>k)ans++,a[i]=0;
        if(a[i]>0)now++;
    }
    if(now)ans++;
    cout<<ans<<endl;
    
}
B. Masha and geometric depression

题面
a a a数组放进 s e t set set,循环枚举 b b b数组即可。判断是否无法找到直接利用循环次数即可,循环次数不会很大,因此判断循环次数即可。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll b1,q,l,m,ans,cnt;
set <ll> a;
inline void read(ll &x){
    ll s=0,w=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){s=(s<<3)+(s<<1)+(ch&15);ch=getchar();}
    x=s*w;
}
int main(){
    read(b1),read(q),read(l),read(m);
	for(int i=1;i<=m;i++){
		ll x;read(x);
		a.insert(x);
	}
	ll b2=b1;
	while(abs(b2)<=l){
		cnt++;
		if(a.find(b2)==a.end())ans++;
		b2*=q;
		if(cnt>=100000){
			if(ans!=0&&ans!=1)
				ans=-1;
			break;
		}
	}
	if(ans==-1)printf("inf\n");
	else printf("%lld\n",ans);
}
C. Functions again

题面
先预处理出差分数组的绝对值,不考虑 − 1 -1 1的幂次,因为一加一减我们设 d p [ i ] [ 0 ] dp[i][0] dp[i][0]为这一位是加法, d p [ i ] [ 1 ] dp[i][1] dp[i][1]为这一位是减法。
转移方程为 d p [ i ] [ 0 ] = m a x { d p [ i − 1 ] [ 1 ] + d [ i ] , d [ i ] } dp[i][0]=max\{dp[i-1][1]+d[i],d[i]\} dp[i][0]=max{dp[i1][1]+d[i],d[i]}
d p [ i ] [ 1 ] = m a x { d p [ i − 1 ] [ 0 ] − d [ i ] , 0 } dp[i][1]=max\{dp[i-1][0]-d[i],0\} dp[i][1]=max{dp[i1][0]d[i],0}

#include <bits/stdc++.h>
#define N 100010
using namespace std;
typedef long long ll;
inline void read(ll &x){
    ll s=0,w=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){s=(s<<3)+(s<<1)+(ch&15);ch=getchar();}
    x=s*w;
}
ll n,a[N],d[N],dp[N][2],ans;
int main(){
    read(n);
    for(ll i=1;i<=n;i++)read(a[i]);
    for(ll i=1;i<=n;i++)d[i]=abs(a[i]-a[i+1]);
    for(ll i=1;i<=n;i++){
        dp[i][0]=max(dp[i-1][1]+d[i],d[i]);
        dp[i][1]=max(dp[i-1][0]-d[i],0LL);
    }
    for(ll i=1;i<n;i++)ans=max(ans,max(dp[i][0],dp[i][1]));
    cout<<ans<<endl;
}
A. Bear and Big Brother

题面
签到题

#include<bits/stdc++.h>
using namespace std;
int n,m,cnt;
int main(){
    cin>>n>>m;
    while(n<=m){
      n*=3,m*=2,cnt++;
    }
    cout<<cnt<<endl;
}
B. Bear and Friendship Condition

题面
利用并查集,每个并查集里的点和边应满足满射,即 m = n ( n − 1 ) / 2 m=n(n-1)/2 m=n(n1)/2,做并查集并同时记录每个连通块中边的个数

#include<bits/stdc++.h>
#define N 200020
#define reg register
using namespace std;
typedef long long ll;
inline void read(ll &x){
    ll s=0,w=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){s=(s<<3)+(s<<1)+(ch&15);ch=getchar();}
    x=s*w;
}
ll n,m,f[N],u,v,s[N],num[N],flag;
ll find(ll u){
    if(u==f[u])return u;
    else return f[u]=find(f[u]);
}
void merge(ll x, ll y){
    x=find(x),y=find(y);
    if(x==y)return ;
    f[y]=x,num[x]+=num[y],num[y]=0;
}
int main(){
    read(n),read(m);
    for(ll i=1;i<=n;i++)f[i]=i,num[i]=1;
    for(ll i=1;i<=m;i++)read(u),read(v),merge(u,v);
    for(ll i=1;i<=n;i++){
        if(num[i]>1)flag+=num[i]*(num[i]-1)/2;
    }
    if(flag!=m)puts("No");
    else puts("Yes");
}
C. Bear and Different Names

题面
构造出一堆名字,每碰到一个 N o No No就把当前区间的尾元素改为和首元素相同的名字,最后输出构造的名字即可。文章来源地址https://www.toymoban.com/news/detail-585704.html

#include <bits/stdc++.h>
#define N 200
using namespace std;
string s[N],s1;
int n,k;
int main(){
    cin>>n>>k;
    for(int i=1;i<=n;i++)s[i]="Aa",s[i][0]+=i/26,s[i][1]+=i%26;
    for(int i=1;i<=n-k+1;i++) {
        cin>>s1;
        if(s1[0]=='N')s[i+k-1]=s[i];
    }
    for(int i=1;i<=n;i++)cout<<s[i]<<' ';
    printf("\n");
}

到了这里,关于TJUACM假期集训个人赛(八)(cf789a-c cf791a-c)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ABC337(A-C)

    2024年01月21日
    浏览(16)
  • Codeforces Round #791 (Div. 2)(A-D)

    题意: 给你 n, 问满足 4 x + 6 y = n 4x+6y=n 4 x + 6 y = n 的 x + y x+y x + y 的最小值和最大值是多少? x , y x,y x , y 都是非负整数。 题解: n如果是奇数,无解。如果是偶数,等式除以2,考虑 2 x + 3 y = n 2x+3y=n 2 x + 3 y = n 。 要想使得 x + y x+y x + y 尽可能大,那么x要尽量多,就需要找最小

    2024年02月05日
    浏览(27)
  • Win7系统IE、搜狗等浏览器首页被恶意网址qq789.com.cn劫持……

    刚才,一位朋友的Windows7 电脑中IE、搜狗等浏览器首页被qq789.com.cn劫持,请我通过QQ远程协助帮忙解决。  右击朋友电脑桌面上的Internet Explorer图标,从弹出的菜单中选择“属性”,弹出的“Internet 属性”窗口是这样的: 看起来很奇怪,也很别扭,看起来Internet选项的一些功能

    2024年02月05日
    浏览(51)
  • 国庆假期day5

    1.OSI七层模型: 应用层--------提供函 表示层--------表密缩 会话层--------会话 传输层--------进程的接收和发送 网络层--------寻主机 数据链路层----相邻节点的可靠传输 物理层--------二进制比特流 OSI四层(五层)模型: 应用层 传输层 网络层 数据链路层+物理层-----网络接口和物理

    2024年02月07日
    浏览(28)
  • 假期2.13

    1、选择题 1.1、若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a 数组的第10个元素是 D A)a[0][4] B) a[1][3] C)a[0][3] D)a[1][4] 1.2、有数组 int   a[5] = {10,20,30,40,50},  以下表达式编译错误是_____ B______。 A)   a ++ ;  B)   a[5] =  20  ; C)  a + 20  ; D)   (a-3,   a[3]) ; 1.3、以下错

    2024年02月21日
    浏览(35)
  • 假期题目整合

    下载解压题目查看即可 典型的猪圈密码只需要照着输入字符解开即可得到答案 冷门类型的密码题型,需要特意去找相应的解题思路,直接百度搜索天干地支解密即可 一眼能出思路他已经给了篱笆墙的提示提示你是栅栏密码对应解密即可 最简单的社会主义密码解密搜索相应的

    2024年02月07日
    浏览(27)
  • C语言假期作业 DAY 13

    A: 20 B: 21 C: 23 D 25 答案解析 正确答案:C 这个作用是对整型中0的个数进行统计,x=x|(x+1);的作用是每次循环把x的二进制中从右往左数的最后一位0变成1,直道变 成全1的时候x+1就溢出为全0,循环结束。2014的二进制是0000 0000 000 0000 0000 0111 1101 1110,所以结果是 23  A: int a , *x = a

    2024年02月13日
    浏览(24)
  • 假期出行小程序+chatgpt旅游攻略

    马上五一了,如果想出去旅游,需要提取规划好路线图,我们可以借助chatgpt的路线规划功能帮我们生成一份攻略,按照攻略我们就可以愉快的出去玩耍了。 本文结合chatgpt,利用低代码工具帮我们制作一份旅行导览小程序,可以按照行程方便的出行。 我们在聊天窗口输入关键

    2024年02月05日
    浏览(26)
  • C语言假期作业 DAY 12

    A: YES B: NO C: YESNO D: 语句错误 答案解析 正确答案: A \\\'0\\\'=c=\\\'9\\\' 并非判断 x 大于等于字符 0, 小于等于字符 9 ,而是先执行 \\\'0\\\'=c ,使用这个表达式的结果再和 \\\'9\\\' 比较, \\\'0\\\' 的ASCII码值是 48 , \\\'A\\\' 的 ASCII 码值是 \\\'65\\\' ,故 \\\'0\\\'c 是真值 1 , 1 无疑是小于字符 \\\'9\\\' 的,最终是真 A: 0000 7FF

    2024年02月14日
    浏览(31)
  • C语言假期作业 DAY 01

    1、执行下面程序,正确的输出是( )   int x=5,y=7; void swap() {         int z;         z=x;         x=y;         y=z; } int main() {         int x=3,y=8;         swap();         printf(\\\"%d,%dn\\\",x, y);         return 0; } A: 5,7   B: 7,5   C: 3,8   D: 8,3 2、以下不正

    2024年02月15日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包