2021CCPC网络赛部分题解

Posted 辉小歌

tags:

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

先不说杭电服务器的事,自己打的真的垃圾。
学了好久,还是没有好的成绩就是很难受。

1001: Cut The Wire【难度: 简单 / 知识点: 规律】


打表找规律。

#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
int main(void)
{
	int t; cin>>t;
	int a[15]={0,2,2,4,3,5,5,7,7,9,8,10,10};
	while(t--)
	{
		LL n; cin>>n;
		cout<<n/12*10+a[n%12]<<endl;
	}
	return 0;
}

1006: Power Sum【难度: 一般 / 知识点: 规律】



发现规律: 先将剩余的1 或 2或 3 构造出来,剩下的四个一组构造即可。

#include<bits/stdc++.h>
using namespace std;
int main(void)
{
	int t; cin>>t;
	while(t--) 
	{
		int n; cin>>n;
		string ans;
		if(n%4==1) n=n-1,ans+="1";
		else if(n%4==2) n=n-2,ans+="0001";
		else if(n%4==3) n=n-3,ans+="01";
		for(int i=1;i<=n/4;i++) ans+="1001";
		cout<<ans.size()<<endl;
		cout<<ans<<endl;
	}
	return 0;
}

1009: Command Sequence【难度: 一般 / 知识点: 前缀和 哈希】


只要一个点出现了两次,就可以回到原来的位置。
我们可以将其 上下看成一个比较大的数,代表不可达。
这样就将一个二维的东西变成一维的了。
一维的话,你会发现当一个点出现了两次必定可以回到原点。

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int main(void)
{
	int t; cin>>t;
	while(t--)
	{
		int n; cin>>n;
		string s; cin>>s;
		map<int,int>mp;
		mp[0]=1;
		int now=0;
		long long int ans=0;
		for(int i=0;i<n;i++)
		{
			if(s[i]=='L') now-=1;
			if(s[i]=='R') now+=1;
			if(s[i]=='U') now+=N;
			if(s[i]=='D') now-=N;
			ans+=mp[now];
			mp[now]++;
		}
		cout<<ans<<endl;
	}
	return 0;
}

1011:Shooting Bricks 【洛谷原题】

洛谷题目地址
CCPC地址

以上是关于2021CCPC网络赛部分题解的主要内容,如果未能解决你的问题,请参考以下文章

2021CCPC网络赛重赛-题解

2021CCPC网络赛重赛-题解

2021卓见杯第三届CCPC河南省省赛所有题超详细题解附加榜单真题解析,简单代码+详细注释+思想,要看的,补题的速速点进来 2021 10.30

CCPC网络赛2021中国大学生程序设计竞赛(CCPC)- 网络选拔赛(重赛) 签到题5题

2018 CCPC网络赛 几道数学题

CCPC2019网络赛总结