码迷,mamicode.com
首页 > 数据库 > 详细

Codeforces Goodbye 2018

时间:2019-01-02 20:13:40      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:logs   push   answer   art   vector   mat   飞机   data-   pos   

真是可怕...家里设备差的我无法想象...用txt打完的全场比赛【无奈】

先%下镇海ljz大佬和杭二lqz大佬 tql

 

A题

签到题吧...

题面那么长,说到底就是求一个最大的 n + (n + 1) + (n + 2)的和

 

#include <bits/stdc++.h>
using namespace std;
int a,b,c;
int main(){
    scanf("%d%d%d",&a,&b,&c);
    b--;c-=2;
    int ans=min(b,min(a,c));
    ans=ans*3+3;
    printf("%d",ans);
}

 

 

B题

B题是开始翻车的源头...发现不开翻译看不懂题意...尴尬的搞了火狐翻译插件

然后发现codeforces上不去了(家里电脑没有小飞机)...可怕

题意:给你n个点,有n个提示,但不知道对应关系,求目标点坐标。

又是签到题...

#include<bits/stdc++.h>
using namespace std;
const int N=1e3+7;
int n;
int a[N],b[N],x[N],y[N];
int main() {
	scanf("%d",&n);
	for (int i=1;i<=n;i++) 
		scanf("%d%d",&a[i],&b[i]);
	for (int i=1;i<=n;i++)
		scanf("%d%d",&x[i],&y[i]);
	sort(a+1,a+1+n);
	sort(b+1,b+1+n);
	sort(x+1,x+1+n);
	sort(y+1,y+1+n);
	cout<<a[1]+x[n]<<" "<<b[1]+y[n]<<endl;
	return 0;
}

 

 C题

题意:遍历长度为n的一个环,输出k从1到n的遍历的点的和的所有值。

n为质数时,答案只有1和n的m倍;k前后对称,可以想到通过枚举n的因数,得到k的最小值,惊讶的发现和是等比数列!

所以复杂度为Ο(√n)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n;
vector<ll> a;
inline ll Calc(ll x) {
	return 1ll*(n/x-1)*(n/x)/2*x+n/x;
}
int main()
{
   scanf("%I64d",&n);
    for (ll i=1;i*i<=n;i++)
        if (n%i==0) {
        	a.push_back(Calc(i));
		a.push_back(Calc(n/i));
	}
    sort(a.begin(),a.end());
    a.erase(unique(a.begin(),a.end()),a.end());
    for (int i=0;i<a.size();i++)
    	printf("%I64d ",a[i]);
    return 0;
}
//cz的代码,很简洁,我的就不贴了2333

 

D题

对着题意困惑了很长时间...大概是冻的失去了智商吧2333

题意:给n!个n的排列,按字典序从小到大连成一条序列,例如3的情况为:[1,2,31,3,22,1,,2,3,,3,1,,3,2,1],问其中长度为n,且和为sum=n*(n+1)/2的序列有多少个?

题意来源:https://blog.csdn.net/aiqiyizz/article/details/85530211

本来我是想贴steps大佬给我的题意,后来发现这个qq太垃圾,找不到消息记录...这个题意也挺好的

官方题解:There is also a simple recurrence counting the same answer, found by arsijo:d(n)=(d(n−1)+(n−1)!−1)⋅n

正常思路先打表找规律...然后就能得到这个公式

如果不想用打表也可看https://www.cnblogs.com/si-rui-yang/p/10203170.html

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=5e6+7,mod=998244353;
ll n,a[N];
int main(){
	scanf("%I64d",&n);
	a[n+1]=1;
	for(ll i=n;i>=0;i--)
	    a[i]=(a[i+1]*i)%mod;
	ll num=n;
	for(ll i=1;i<=n;i++)
		num=(num*i)%mod;
	num=((num-n+1)%mod+mod)%mod;
	for(ll i=1;i<n;i++){
		ll ans=(((a[i+1]-a[i+2])%mod+mod)%mod*i)%mod;
		num=((num-ans)%mod+mod)%mod;
	}
	printf("%I64d",num);
	return 0;
}
//依然不是我的尴尬...

 

Codeforces Goodbye 2018

标签:logs   push   answer   art   vector   mat   飞机   data-   pos   

原文地址:https://www.cnblogs.com/wjnclln/p/10210747.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!