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 【洛谷原题】
以上是关于2021CCPC网络赛部分题解的主要内容,如果未能解决你的问题,请参考以下文章
2021卓见杯第三届CCPC河南省省赛所有题超详细题解附加榜单真题解析,简单代码+详细注释+思想,要看的,补题的速速点进来 2021 10.30