西南民族大学 春季 2023 训练赛4

Posted Ke_scholar

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了西南民族大学 春季 2023 训练赛4相关的知识,希望对你有一定的参考价值。

小石的图形

太坑了, π的精度一定要开大,不然就wa, 建议用acos(-1)或者M_PI.

#include<bits/stdc++.h>
#define endl \'\\n\'
#define int long long
#define inf 0x3f3f3f3f

using namespace std;
//typedef long long ll;

const int N = 1e5+10;
int n,m,t;
signed main()

    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin >> n;
    printf("%.3lf",n * n * 0.5 / M_PI);
    return 0;

植树造林

刚开始想的是对的,但一直觉得没有这么简单,最后不知道怎么想就交上去了,结果真是奇数输出1偶数输出2......

#include<bits/stdc++.h>
#define endl \'\\n\'
#define int long long
#define inf 0x3f3f3f3f

using namespace std;
//typedef long long ll;

const int N = 1e5+10;
int n,m,t,k;
signed main()

    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin >> n ;
    if(n & 1)
    cout << 1 << endl;
    else
     cout << 2 <<endl; 
    return 0;

Forsaken给学生分组

值得注意的是,一个人一组的话,能力值最高和最低都是他自己,并不存在只有最高值而无最低值一说...

#include<bits/stdc++.h>
#define endl \'\\n\'
#define int long long
#define inf 0x3f3f3f3f

using namespace std;
//typedef long long ll;

const int N = 1e5+10;
int n,m,t,k,a[N],ans;
signed main()

    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin >> n >> k;
    for(int i = 0; i < n; i++)
     cin >> a[i];
    sort(a, a + n);
    for(int i = 0;i < k ; i ++)
     ans += a[n - i - 1] - a[i];
    cout << ans << endl;
    return 0;

分数的运算

纯模拟,感觉是我想得太复杂了,所以第一次写多了错了()

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <vector>
#include <map>
#include <queue>
#include <algorithm>
#include <math.h>
#include <cstdio>
#include <utility>
#define inf 0x3f3f3f3f
#define endl \'\\n\'
#define int long long

using namespace std;

const int N = 1e5+10;

//typedef long long ll;

int n,m,t;
signed main()

    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int x11,x22,y11,y22;
    cin >> x11 >> y11 >> x22 >> y22;
    int d = __gcd(x11 * y22 + x22 * y11, y11 * y22);
    cout << (x11 * y22 + x22 * y11) / d << \' \' << y11 * y22 / d << endl;
    d = __gcd(x11 * y22 - x22 * y11, y11 * y22);
    if(x11 * y22 - x22 * y11 == 0)
     cout << 0 << \' \' << 0 << endl;
    else
    
    if(x11 * y22 < x22 * y11) cout << "-";
    cout << abs(x11 * y22 - x22 * y11) / d << \' \' << y11 * y22 / d << endl;        
    
    d = __gcd(x11 * x22, y11 * y22);
    cout << x11 * x22 / d << \' \' << y11 * y22 / d << endl;
    d = __gcd(x11 * y22 , y11 * x22);
    cout << x11 * y22 / d << \' \' << y11 * x22 / d << endl; 
    
    return 0;

小y的旅行

小L的数列

小L的编辑器

可以用双端队列

C++ STL deque容器(详解版) (biancheng.net)

#include <iostream>
#include <cstring>
#include <queue>
#define int long long

using namespace std;

deque<char> q;

signed main() 
    ios :: sync_with_stdio(false);
    cin.tie(0) , cout.tie(0);
    
    string s , t ;
    cin >> s >> t;
    
    q.push_back(s[s.size()-1]);
    for(int i=s.size()-1; i; i--)
        if(t[i-1] == \'L\')
            q.push_back(s[i-1]);
        
        else q.push_front(s[i-1]);
    
    while(q.size())
        cout << q.front();
        q.pop_front();
    
    return 0;

也可以先把\'L\' 和\'R\' 分开存,然后讲\'L\'的字符串反向

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <vector>
#include <map>
#include <queue>
#include <algorithm>
#include <math.h>
#include <cstdio>
#include <utility>
#define inf 0x3f3f3f3f
#define endl \'\\n\'
#define int long long

using namespace std;

const int N = 1e5+10;

//typedef long long ll;

int n,m,t;
signed main()

    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    string s1,s2,s3,s4;
    cin >> s1 >> s2;
    for(int i = 0; i < s2.size(); i++)
    
        if(s2[i] == \'R\')
        s3 += s1[i];
        else 
         s4 += s1[i];
    
    reverse(s4.begin(), s4.end());
    cout << s3 << s4 << endl;
    return 0;

1408

 

2017年西南民族大学程序设计竞赛-网络同步赛(代码)

 

20598954    nmphy    D    答案正确    8    512    486    C++    2017-12-30 14:30:35
20598712    nmphy    E    答案正确    3    504    695    C++    2017-12-30 14:25:59
20598181    nmphy    E    答案正确    3    484    659    C++    2017-12-30 14:15:16
20597638    nmphy    E    答案正确    3    504    505    C++    2017-12-30 14:05:08//比赛时候这里显示的是WA,而且显示准确率5%
20597208    nmphy    F    答案正确    3    272    569    C++    2017-12-30 13:57:09
20596793    nmphy    H    答案正确    3    384    312    C++    2017-12-30 13:49:00
20596485    nmphy    J    答案正确    15    512    493    C++    2017-12-30 13:43:23
20596125    nmphy    G    答案正确    4    396    768    C++    2017-12-30 13:36:12
20596077    nmphy    G    答案正确    3    384    768    C++    2017-12-30 13:35:22
20595884    nmphy    G    答案错误    4    384    840    C++    2017-12-30 13:31:43
20595709    nmphy    G    答案错误    4    384    825    C++    2017-12-30 13:28:29
20595099    nmphy    I    答案正确    4    384    386    C++    2017-12-30 13:16:36
20594924    nmphy    K    答案正确    4    436    555    C++    2017-12-30 13:13:09
20594652    nmphy    D    段错误    3    384    485    C++    2017-12-30 13:07:57
20594225    nmphy    C    答案正确    71    3904    560    C++    2017-12-30 12:59:14
20594201    nmphy    C    答案正确    69    4028    560    C++    2017-12-30 12:58:48
20593760    nmphy    B    答案正确    3    512    553    C++    2017-12-30 12:49:38
20593541    nmphy    A    答案正确    516    13056    988    C++    2017-12-30 12:44:16

反正就是12.30知道他们有比赛,赶紧注册的。。14.30AK,排名第7。。。难道我是难题渣。。。水题王。。。打表。。。贪心。。。

E题比赛时错了很多次,后来刷新后就A了。。。可能数据有点极端。(耽误了我20分钟。比完才告诉我A了,我以为10题挂机,结果AK了)。

A:

技术分享图片
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=1010;
int x[maxn][maxn],y[maxn][maxn];
char ch[maxn][maxn],opt[10];
int main()
{
    int n,m,q,i,j,a,b;
    while(~scanf("%d%d%d",&n,&m,&q)){
        for(i=1;i<=n;i++)
         for(j=1;j<=m;j++)
          cin>>ch[i][j];
        for(i=1;i<=n;i++)
         for(j=1;j<=m;j++)
          x[i][j]=x[i][j-1]+(ch[i][j]==#?1:0);
        for(i=1;i<=n;i++)
         for(j=1;j<=m;j++)
          y[i][j]=y[i-1][j]+(ch[i][j]==#?1:0);
        for(i=1;i<=q;i++){
            scanf("%d%d%s",&a,&b,opt);
            if(opt[0]==D){
                if(y[n][b]-y[a-1][b]==0)  printf("YES\n");
                else printf("NO\n");
            }
            else if(opt[0]==U){
                 if(y[a][b]-y[0][b]==0) printf("YES\n");
                 else printf("NO\n");
            }
            else if(opt[0]==R){
                if(x[a][m]-x[a][b-1]==0)  printf("YES\n");
                else printf("NO\n");
            }
            else if(opt[0]==L)    {
                if(x[a][b]-x[a][0]==0) printf("YES\n");
                else printf("NO\n");
            }      
        }
    } return 0;
}
View Code

B:

技术分享图片
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
const int maxn=1010000;
char ch[maxn];
int vis[100];
int main()
{
    while(~scanf("%s",ch)){
        int L=strlen(ch);
        for(int i=0;i<=10;i++) vis[i]=0;
        bool Flag=true;int cnt=0;
        for(int i=0;i<L;i++) {
            if(ch[i]<0||ch[i]>9){ Flag=false;break;}
            if(vis[ch[i]-0]==0){
               cnt++;
               vis[ch[i]-0]=1;
               if(cnt>=2) { Flag=false;break;}
            }
        }
        if(Flag) printf("YES\n");
        else printf("NO\n");
    } return 0;
}
View Code

C:

技术分享图片
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
#define ll long long
using namespace std;
ll ans;
struct in
{
    ll a;
    ll b;
    ll c;
}x[100010];
bool cmp(in x,in y){
    return x.c>y.c;
}
int main()
{
    int i,j,k,n;
    while(~scanf("%d%d",&n,&k)){
        for(i=1;i<=n;i++) scanf("%lld",&x[i].a);
        for(i=1;i<=n;i++) scanf("%lld",&x[i].b);
        for(i=1;i<=n;i++) x[i].c=x[i].a-x[i].b;
        sort(x+1,x+n+1,cmp);
        for(i=1;i<=k;i++) ans+=x[i].a;
        for(i=k+1;i<=n;i++) ans+=x[i].b;
        printf("%lld\n",ans);
    } return 0;
}
View Code

D:

技术分享图片
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
#define ll long long
using namespace std;
const int maxn=10010;
ll ans,w[maxn],sum[maxn];
int main()
{
    int i,j,n,m,L,R;
    while(~scanf("%d",&n)){
        ans=0;
        for(i=1;i<=n;i++) scanf("%lld",&w[i]),sum[i]=sum[i-1]+w[i];
        scanf("%d",&m);
        for(i=1;i<=m;i++){
           scanf("%d%d",&L,&R);
           if(sum[R]-sum[L-1]>0) ans+=sum[R]-sum[L-1];
        }
        printf("%lld\n",ans);
    }  return 0;
}
View Code

E:

技术分享图片
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
#define ll long long
using namespace std;
const int Mod=1000000007;
ll ans1,ans2;
ll q_pow(ll a,ll x)
{
    ll res=1;a%=Mod;
    while(x){
        if(x&1LL) res=res*a%Mod;
        x>>=1;
        a=a*a%Mod;
    } return res;
}
int main()
{
    ll m,n;
    while(~scanf("%lld%lld",&n,&m)){
        m%=Mod;
        ans1=q_pow(m,n);
        ans2=q_pow(m-1,n-1);
        ans2=ans2*m%Mod;
        printf("%lld\n",((ans1-ans2)%Mod+Mod)%Mod);
    } return 0;
}
View Code

F:

技术分享图片
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
#define ll long long
using namespace std;
int x[]={0,1,2,2,3,3,4,4};
char c[20][20];
int main()
{
    int n,ans,i,j;
    while(~scanf("%d",&n)){
        if(n==0) return 0;
        ans=0;
        for(i=1;i<=13;i++){
            scanf("%s",c[i]+1);
            for(j=1;j<=13;j++){
                 if(c[i][j]==#) {
                     int tmp=i;
                     if(14-i<tmp) tmp=14-i;
                     if(j<tmp) tmp=j;
                     if(14-j<tmp) tmp=14-j;
                     ans+=x[tmp];
                 }
            }
        }
        printf("%.2lf\n",(double)(1.0*ans)/n);
    } return 0;
}
View Code

G:

技术分享图片
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
#define ll long long
using namespace std;
char a[10],b[10];
int s[100];
int main()
{
    int n,i,j,ans1,ans2;
    s[J-A+1]=1;
    s[M-A+1]=2;
    s[T-A+1]=3;
    s[S-A+1]=4;
    s[H-A+1]=5;
    while(~scanf("%d",&n)){
        ans1=0;ans2=0;
        for(i=1;i<=n;i++){
            scanf("%s%s",a,b);
            if(s[a[0]-A+1]==s[b[0]-A+1]) ans1++,ans2++;
            else if(s[a[0]-A+1]==s[b[0]-A+1]-1) ans1+=3;
            else if(s[b[0]-A+1]==s[a[0]-A+1]-1) ans2+=3;
            else if(s[a[0]-A+1]==1&&s[b[0]-A+1]==5) ans2+=3;
            else if(s[b[0]-A+1]==1&&s[a[0]-A+1]==5) ans1+=3;
        }
        if(ans1>ans2) printf("Alice\n");
        else if(ans1<ans2)printf("Bob\n");
        else printf("Draw\n");
    }return 0;
}
View Code

H:

技术分享图片
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
#define ll long long
using namespace std;
int main()
{
    int n,i;
    while(~scanf("%d",&n)){
        for(i=1;i<=n;i++) printf("gu...");
        printf("\nThe story is so boring. And I am so hungry!\n");
    } return 0;
}
View Code

I:

技术分享图片
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
#define ll long long
using namespace std;
ll ans;
ll dp[30][2];
int main()
{
    int n,i,j;
    while(~scanf("%d",&n)){
        dp[1][1]=1;dp[1][0]=1;
        for(i=2;i<=n;i++){
            dp[i][1]=dp[i-1][1]+dp[i-1][0];
            dp[i][0]=dp[i-1][1];
        }
        printf("%lld\n",dp[n][0]+dp[n][1]);
    }
    return 0;
}
View Code

J:

技术分享图片
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
#define ll long long
using namespace std;
const int maxn=100010;
char c[maxn],a[10],b[10];
int x[30];
int Up[maxn];
int main()
{
    int i,n,j,m,L;
    while(~scanf("%s",c)){
        for(i=1;i<=26;i++) x[i]=i;
        L=strlen(c);
        scanf("%d",&m);
        for(i=1;i<=m;i++){
            scanf("%s%s",a,b);
            swap(x[a[0]-a+1],x[b[0]-a+1]);
        }
        for(i=0;i<L;i++) printf("%c",x[c[i]-a+1]+a-1);
    } return 0;
}
View Code

K:

技术分享图片
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
#define ll long long 
using namespace std;
const int maxn=10010;
ll sum[maxn],Max;
int main()
{
    int n,m,i,j,L,R;
    while(~scanf("%d%d",&n,&m)){
        Max=0;for(i=1;i<=5000;i++) sum[i]=0;
        for(i=1;i<=n;i++) {
            scanf("%d%d",&L,&R);
            sum[L]++;
            sum[R+1]--;
        }
        for(i=1;i<=5000;i++) {
            sum[i]+=sum[i-1];
            if(sum[i]>Max) Max=sum[i];
        }
        if(Max%m==0) printf("%lld\n",Max/m);
        else printf("%lld\n",Max/m+1);
    } return 0;
}
View Code

 

以上是关于西南民族大学 春季 2023 训练赛4的主要内容,如果未能解决你的问题,请参考以下文章

2017年西南民族大学程序设计竞赛-网络同步赛(代码)

新年第一篇!西南民族大学第十届校赛(同步赛)

西南民族大学第十届校赛(同步赛) D

2017年西南民族大学程序设计竞赛-网络同步赛

12.28西南民族大学第十一届程序设计竞赛(同步赛)

优炫软件中标西南民族大学项目,护航教育行业主机安全