真是可怕...家里设备差的我无法想象...用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,3, 1,3,2, 2,1,3 ,2,3,1 ,3,1,2 ,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; }//依然不是我的尴尬...
原文地址:https://www.cnblogs.com/wjnclln/p/10210747.html