首页 > 其他分享 >2023.7信友队暑假集训第2次测试复盘

2023.7信友队暑假集训第2次测试复盘

时间:2023-11-24 18:55:04浏览次数:29  
标签:205 int 次测试 vis zx zy ans 2023.7 友队

信友队暑假集训第2次测试总结:

本次比赛都出的以前做过的题,但本蒟蒻确只写了320(悲

第一题:排行榜
一道水题,秒A


#include <bits/stdc++.h>
using namespace std;
string ans[105],s[105],t[105];
int vis[105];
int main(){
    int n;
    cin >> n;
    memset(vis,0,sizeof vis);
    for(int i = 1;i <= n;i++){
        cin >> s[i] >> t[i];
        if(t[i]=="SAME"){
            ans[i] = s[i];
            vis[i]=1;
        }
    }

    for(int i = 1;i <= n;i++){
        if(t[i]=="DOWN"){
            for(int j = 1;j <= i-1;j++){
                if(!vis[j]){
                    ans[j] = s[i];
                    vis[j]=1;
                    break;
                }
            }
        }
    }

    for(int i = n;i >= 1;i--){
        if(t[i]=="UP"){
            for(int j = n;j >= i+1;j--){
                if(!vis[j]){
                    vis[j]=1;
                    ans[j] = s[i];
                    break;
                }
            }
        }
    }

    for(int i = 1;i <= n;i++){
        cout << ans[i] << "\n";
    }

    return 0;
}

第二题:小信吃甜筒
一道水题:秒A

#include <bits/stdc++.h>
using namespace std;
#define int long long
int n,m,x,y,z;
int a[100005],b[100005],c[100005],d[200005];
bool cmp(int a,int b){
    return a>b;
}
signed main(){
    cin >>n>>m>>x>>y>>z;
    for(int i = 1;i <=x;i++){
        scanf("%lld",&a[i]);
    }
    for(int i = 1;i <=y;i++){
        scanf("%lld",&b[i]);
    }
    for(int i = 1;i <= z;i++){
        scanf("%lld",&c[i]);
    }
    sort(a+1,a+1+x,cmp);
    sort(b+1,b+1+y,cmp);
    sort(c+1,c+1+z,cmp);

    for(int i=1;i<=n;i++){
        d[i]=a[i];
    }
    for(int i=1;i<=m;i++){
        d[i+n]=b[i];
    }

    sort(d+1,d+1+n+m);
    for(int i =1;i<=min(z,n+m);i++){
        if(c[i]>=d[i]) d[i]=c[i];
    }
    int ans=0;
    for(int i = 1;i <= n+m;i++){
        ans+=d[i];
    }
    cout<<ans;


    return 0;
}

第三题:替换字母
本来是一道贪心水题,但是想错了贪心策略,WA20


#include <bits/stdc++.h>
using namespace std;
int n,m;
string s,ss;
int main(){
    cin >>n>> m;
    cin >> ss;
    int ans = 1e9;
    for(char a='a';a<='z';a++){
        int j = -1;
        int cnt=0;
        string s;
        s=ss+a;
        for(int i = 0 ;i < s.size();i++){
            if(i==0 && s[i] == a){
                j=i;
            }else if(s[i]==a && i - j >1){
                j=i;
                cnt++;
            }else if(i-j > m){
                j=i;
                cnt++;
            }
        }    
        ans=min(ans,cnt);    
    }
    cout << ans;

    return 0;
}

第四题:泽泽在巴西
调了很久,考试时都快崩溃了,考完才发现,球门到人的速度是距离×2,忘记了这个×2,不要读题太马虎,虽然改了×2只有70分,但是还要检查,需要更细心。


#include<bits/stdc++.h>
using namespace std;
int xz,yz,n,m;
int zx[305],zy[305];
double g[305][305];
int lx[305],ly[305];
bool check(int x,int y,int z){
    double a =sqrt((zx[x]-zx[y])*(zx[x]-zx[y]) +(zy[x]-zy[y])*(zy[x]-zy[y]));
    double b =sqrt((zx[x]-lx[z])*(zx[x]-lx[z]) +(zy[x]-ly[z])*(zy[x]-ly[z]));
    double c =sqrt((zx[y]-lx[z])*(zx[y]-lx[z]) +(zy[y]-ly[z])*(zy[y]-ly[z]));
    if(abs(a-b-c) > 1e-4) return true;
    return false;
}
int main(){
    cin >> xz >> yz >> n >>m;
    for(int i = 1;i <= n;i++){
        cin >> zx[i] >> zy[i];
    }
    for(int i = 1;i <= m;i++){
        cin >> lx[i] >> ly[i]; 
    }
    memset(g,0x3f,sizeof g);
    for(int i = 1;i <= n;i++){
        for(int j = 1;j <= n;j++){
            for(int k = 1;k <= m;k++){
                if(i==j) continue;
                if(check(i,j,k)){
                    //可以建边
                    g[i][j]=sqrt((zx[i]-zx[j])*(zx[i]-zx[j])+(zy[i]-zy[j])*(zy[i]-zy[j]));
                    g[j][i]=sqrt((zx[i]-zx[j])*(zx[i]-zx[j])+(zy[i]-zy[j])*(zy[i]-zy[j]));
                }
            }
        }
    }
    for(int i=1;i<=n;i++){
        g[i][n+1] = sqrt((xz-zx[i])*(xz-zx[i])+(yz-zy[i])*(yz-zy[i]));
    }
    for(int k =1;k <= n+1;k++){
        for(int i = 1;i <= n+1;i++){
            if(i == k) continue;
            for(int j = 1;j <= n+1;j++){
                if(j == i || j == k) continue;
                g[i][j] = min(g[i][j],g[i][k]+g[k][j]);
            }
        }
    }
    printf("%.0lf",g[1][n+1]);
    return 0;
}

第五题:重要的城市
O(n^4),用弗洛伊德,秒A


#include <bits/stdc++.h>
using namespace std;
int n,m;
int u,v,w;
int dis[205][205];
int ans[205],ai;
int ids[205][205];
int vis[205][205];
int main(){
    cin >>n >>m;
    memset(dis,0x3f,sizeof dis);
    memset(ids,0x3f,sizeof ids);
    memset(vis,0x3f,sizeof ids);
    for(int i = 1;i <= m;i++){
        int u,v,w;
        cin >> u >> v >> w;
        dis[u][v]=w;
        ids[u][v]=w;
        dis[v][u]=w;
        ids[v][u]=w;
        vis[v][u]=w;
        vis[u][v]=w;
    }

    for(int k = 1;k <= n;k++){
        for(int i = 1;i <= n;i++){
            if(k==i)continue;
            for(int j = 1;j <= n;j++){
                if(j==i||j==k)continue;
                dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
            }
        }
    }

    for(int x = 1 ; x <= n;x++){
        for(int i = 1;i <= n;i++){
            for(int j =1;j <= n;j++){
                ids[i][j]=vis[i][j];
            }
        }
        for(int k = 1;k <= n;k++){
            if(k==x)continue;
            for(int i = 1;i <= n;i++){
                if(i==x)continue;
                if(k==i)continue;
                for(int j = 1;j <= n;j++){
                    if(j==x)continue;
                    if(j==i||j==k)continue;
                    ids[i][j]=min(ids[i][j],ids[i][k]+ids[k][j]);
                }
            }
        }
        int flag=0;
        for(int i = 1;i <= n;i++){
            for(int j = 1;j <= n;j++){
                if(i==j||i==x||j==x) continue;
                if(ids[i][j] > dis[i][j]) flag=1;
            }
        }
        if(flag){
            ans[++ai] = x;
        }
    }
    if(ai==0) cout<<"No important cities.";
    else for(int i = 1;i <= ai;i++){
        cout << ans[i] << " ";
    }
    return 0;
}

第六题:因为第四题没调出来,不想写,当时而且我很困,不想写,只想看着调

总结:下次比赛要合理安排时间,调试的时候不要仅仅静态调试,也要结合一些动态调试。实在调不出来的题放一放,写写其他题,换换思路,说不定回头再来就可以跳出来了。在调试的时候,如果样例小的话,试着手算一下,确保自己算法的正确性,这一次第四题没调出来的原因就是我一直死盯着屏幕,静态调试,没有动态去打数组,或者手算样例,如果手算样例就能发现其实我错在没有×2,就可以多拿70分。

标签:205,int,次测试,vis,zx,zy,ans,2023.7,友队
From: https://www.cnblogs.com/gsczl71/p/17854531.html

相关文章

  • bat里循环1万次测试时间
    bat里循环1万次测试时间  @echooff@echostart:%time%set/ai=0:LoopStartset/ai+=1if%i%leq10000gotoLoopStart@echoend:%time% 自己的电脑,循环1万次要7,8秒    公司服务器的电脑,循环一万次要5秒  买的华为云服务器1核心2G内......
  • 信友队 CSP-S2023 A
    考虑矩形数量的规模大概是\(O(n^4)\)量级的,故很难通过枚举的方式直接做。弱化问题,如果只统计正着的矩形,个数是\(O(n^3)\)量级的。而斜着的矩形都是可以被一个恰当的正矩形包含的,此时两者对应顶点距离相同,存在性可以由顶点位置取与判断。即,我们可以将一个边长为\(x\)正矩形......
  • 信友队 CSP-S2023 B
    注意到关键性质\(a_i\)是\(a_{i+1}\)的因数,故小决策在\(\frac{b_j}{a_j}\)更大时是严格优于大决策的,而\(a_j\)相同的决策之间显然只有\(b_j\)最大的有用,故最终至多只会保存\(O(\logm)\)个有决策。对于倍数增量的东西一定要敏感,多联系到量级上。然后考虑如何处理询......
  • 信友队 CSP-S2023 D
    \(h\)的存在暗示我们从后到前增量来做。考虑建出失配树,则对于树上两点\(x,y\),设\(a_x\)表示\(x\)到根的长度之和,则两者的绝对代价即为\(\max(a_x,a_y)-a_{lca}\)。显然可以把两部分拆开来做。每次插入节点,一定会把它作为原树的一个新叶子。对于\(\max(a_x,a_y)\),其实就......
  • 2023信友队提高组复赛冲刺班 10.6赛后总结
    T1:Language注意到单词长度是无限的这个条件,分类讨论它的循环节"PIG""IGP""GPI"将要操作的单词的每一位分别与三个循环节作比较,用前缀和维护其每一个子串需要修改的次数,取最小值即可ACCODE1#include<bits/stdc++.h>2usingnamespacestd;3intn,k,prep[200009],......
  • 2023信友队提高组复赛冲刺班 10.2赛后总结
    T1:区块链赛场上还以为很难,直接打表,80pts。本来以为还不错,结果一堆人AC,吐血!算了,还是来说说正解吧,说多了都是血和泪啊啊啊!先对开头的公式进行变形,得到:nb/(b-n)xorb=a通过大量的样例我们可以发现,当b=n+1时,nb/(b-n)取到最大值这是为什么呢?我们可以来证明一下:∵ nb/(b-n)是......
  • 第一次测试修改后代码
    软件包study//包内java类Main.classpackagestudy;importjava.util.Objects;importjava.util.Scanner;publicabstractclassMain{staticWarehouseInformation[]wh=newWarehouseInformation[5];staticinti=0;staticScannersc=newSca......
  • (2023.7.24)软件加密与解密-2-1-程序分析方法[XDbg].md
    每天一个技术点(2023.7.24)软件加密与解密-2-1-程序分析方法[XDbg]本文作者:XDbgPYG(小吧唧)发布时间:2023年7月24日内容概要:练一道题0.收集信息程序名:CrackMeDemo.tvmp.1.exe程序界面长相如下:程序内存长相如下:程序内存字符串长相如下:看样子......
  • 2023.7 水题记录
    一天天就会做板子题和水题/oh如果只写了啊?那说明我认为这个题过于厉害.1.P5459[BJOI2016]回转寿司前缀和之后在权值线段树上查询.2.P8862「KDOI-03」还原数据倒序考虑操作之后贪心,用线段树维护.3.P4247[清华集训2012]序列操作选\(c\)个数加起来这个东西是......
  • 2023.7.3测试
    T1边的方向一个无重边、自环的无向图,现在给每条边标上方向,要求每个点有且只有一条出边,求有多少种合法的方案,答案模\(998244353\)\(1\leqn,m\leq2\times10^5\)不算很难的题若\(m<n\)或者存在度数为\(0\)的点直接输出\(0\)之后把所有度数为\(1\)的点的边全部标好方......