清北刷题冲刺 11-03 p.m

三向城

#include<iostream>
#include<cstdio>
using namespace std;
int n,x,y;
int main(){
    freopen("city.in","r",stdin);freopen("city.out","w",stdout);
//    freopen("Cola.txt","r",stdin);
    scanf("%d",&n);
    while(n--){
        scanf("%d%d",&x,&y);
        int ans=0;
        while(x!=y){
            ans++;
            if(x<y)swap(x,y);
            x/=2;
        }
        printf("%d\n",ans);
    }
    return 0;
}

100分 两个同时往上跳

灵魂画师

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,c,K,mc,cnt[101];
double dp[101][101],ans;
int main(){
    freopen("paint.in","r",stdin);freopen("paint.out","w",stdout);
    scanf("%d%d%d",&n,&c,&K);
    for(int i=1;i<=K;i++){
        int l,r;
        scanf("%d%d",&l,&r);
        for(int j=l;j<=r;j++){
            cnt[j]++;
            mc=max(cnt[j],mc);
        }
    }
    dp[0][1]=1;
    for(int i=0;i<mc;i++){
        for(int j=0;j<c;j++){
            dp[i+1][j]+=dp[i][j]/2;
            for(int k=0;k<c;k++){
                dp[i+1][(j*k)%c]+=dp[i][j]/(2*c);
            }
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=0;j<c;j++){
            ans+=dp[cnt[i]][j]*j;//概率乘以收益
        }
    }
    printf("%.3lf\n",ans);
    return 0;
}

100分 概率dp

香子兰

#include<iostream>
#include<cstdio>
#define maxn 21
using namespace std;
int map[21][21],n,m,sum,num,head[maxn],fa[maxn],mx,mn=0x7fffffff;
bool flag=1;
struct node{
    int to,pre,v;
}e[maxn*maxn*2];
void Insert(int from,int to,int v){
    e[++num].to=to;
    e[num].v=v;
    e[num].pre=head[from];
    head[from]=num;
}
void dfs(int now,int father){
    bool leaf=0;
    fa[now]=father;
    for(int i=head[now];i;i=e[i].pre){
        int to=e[i].to;
        if(to==father)continue;
        dfs(to,now);
        leaf=1;
    }
    if(now==n&&leaf==0){
        flag=1;
        return;
    }
}
int main(){
    freopen("vanilla.in","r",stdin);freopen("vanilla.out","w",stdout);
//    freopen("Cola.txt","r",stdin);
    scanf("%d%d",&n,&m);
    int x,y,z;
    for(int i=1;i<=m;i++){
        scanf("%d%d%d",&x,&y,&z);
        mx=max(mx,z);mn=min(mn,z);
        x+=1;y+=1;
        map[x][y]=map[y][x]=z;
        Insert(x,y,z);Insert(y,x,z);
        sum+=z;
        if(x!=i||y!=i+1)flag=0;
    }
    if(flag){
        sum*=4;
        sum-=map[n][n-1]*2+map[1][2]*2;
        cout<<sum;
        return 0;
    }
    if(m==n-1){
        flag=0;
        dfs(1,0);
        if(flag){
            cout<<sum*4-map[n][fa[n]]*2;
        }
        else cout<<sum*4;
        return 0;
    }
    while(sum<177)sum*=2;
    sum%=177;
    if(sum<mx)sum+=mx*2;
    cout<<sum;
    return 0;
}

30分 乱搞骗分

预计得分100+100+0
实际得分100+50+30
T1很简单,T2是个简单的概率dp,但是数组开小了,T3一点思路都没有,就研究了一下链和树的情况,乱搞了一下
数组开小很不应该们,不能再犯

小结

时间: 2024-12-21 19:02:00

清北刷题冲刺 11-03 p.m的相关文章

2017 国庆清北刷题冲刺班《角谷猜想》

原创建时间:2018-07-04 20:05:44 不错的字符串模拟 题目描述 某个名字末尾是654321的小A同学是个大家眼中公认的学霸(虽然他永远不承认),他对题目的直觉到了一种可怕的地步,一眼看出题目的算法对他而言只是小 Case,他甚至能在看到一个证明的瞬间敏锐地判断出这个证明的真伪. 现在小A同学机缘巧合地看到了角古猜想(即对于\(x\)当它为奇数则\(x=3x+1\),\(x\)为偶数,则\(x=\frac{x}{2}\),一直重复这个步骤,则最终\(x\)会变为\(1\)),在看完

清北刷题冲刺 11-03 a.m

纸牌 后缀数组 巧克力

清北刷题冲刺 11-02 a.m

卖书 写代码 迷宫

清北刷题冲刺 11-02 p.m

函数最值 函数最值2 序列

清北押题班(1)

清北押题冲刺班Text1 T1 Count 问有几个无序二元组 $ (x ?, ?y) $ 满足 $ xy \equiv 1?(mod?P ) $ , $ 0 \leq x < P?, ?0 \leq y <P $ 解题思路: 你没看错,这是day1的T1,一道赤裸裸的数学题. Subtask 1:枚举 $ O(P^2) $ 个二元组,选出符合条件的,再去重: Subtask 2:可以发现模 $ P $ 意义下,一个数 x 有逆元,当且仅当 $ gcd(x, P) = 1 $ .并且如果 $

2016.10.29 清北学堂NOIP冲刺班Day1 AM 考试总结

成绩:满分300,我得了200, 1:90//前两个题目都是模拟,没用到什么其他算法,第一题有可能少考虑了一点细节 2:100 3:10//感觉是个DP,但是毫无思路,只打了个普通背包,10分而已. 题目+数据:http://pan.baidu.com/s/1bpj3SR1 下面是我的代码: 这个题目中我为了得到部分分,而特别判断了几组数据. T1: 1 /* 2 以后一定要仔细读数据范围,一定要. 3 数据范围中:20%的数据,只有秒数可能不同,言外之意就是可能相同. 4 而我的程序因为没有考

清北模拟题4

更正:第三组:不存在相同的字符|str|=26,26<=n<=100 题解:kmp+矩阵乘法(类似 GT算法,只需将 GT算法的代码(ps:GT算法是一道题)进行一下修改). #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define MAXN 10100 #define MAXM 110 #define M 1000000007 using

力扣刷题日记 2020/03/18

力扣2  两数相加 今天刷乐扣的时候发现好多人对这道题目的解法不是很理解 于是写下我自己的理解过程 共同学习! 题干 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和. 您可以假设除了数字 0 之外,这两个数都不会以 0 开头. 已提供一个实体类: /** * Definition for singly-linked list. */ publi

今日刷题总结11

FTP工作原理 (1)当FTP客户端发出请求时,系统将 动态分配一个端口(如 x ). (2)若FTP服务器在端口21侦听到该请求,则在 FTP客户端的端口 x 和 FTP服务器的端口21之间建立起一个FTP会话连接. (3)当需要传输数据时, FTP客户端再动态打开一个连接到FTP服务器的端口20的第2个端口(如 x+1 ),这样就可在这两个端口之间进行数据的传输.当数据传输完毕后,这    两个端口会自动关闭. (4)当FTP客户端断开与FTP服务器的连接时,客户端上动态分配的端口将自动释放