1. 程式人生 > >CodeVS第四次月賽 day2

CodeVS第四次月賽 day2

掛了……
沒臉發題解……
不過為了督促自己完善這三道題 所以不要臉的來了QAQ
先OTL(orz)各大神 請不喜勿噴&

先發掛了的兩個程式……(A 和B) 以後update正確的程式
**

A

**
帶權並查集……然而爆零了……

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

const int maxn=1001;
int par[maxn],v[maxn];
void ini(int n)
{
    for(int
i=0;i<=n;i++) { par[i]=i; v[i]=0; } } inline int find(int x) { if(par[x]==x)return x; int p=find(par[x]); v[x]+=v[par[x]]; par[x]=p; return par[x]; } int main() { int w; scanf("%d",&w); while(w--) { int n; scanf("%d",&n); ini(n); int
m; scanf("%d",&m); bool flag=false; for(int i=1;i<=m;i++) { int a,b,w,p,q; scanf("%d%d%d",&a,&b,&w); p=find(a);q=find(b); if(p==q) { if(v[a]-v[b]!=w)flag=1; } else
{ par[p]=q; v[p]=w+v[b]-v[a]; } } if(flag)printf("Bessie is blind.\n"); else printf("Bessie's eyes are good.\n"); } return 0; }

10.6 A第一次更正……
這是更正之後了的程式……(AC)
我相信你們會機智的發現一丟丟不同……(我不會告訴你們第一句是沒有句號的然而我之前加上了……希望各犇不要和我一樣……)
**

**

AC Code

**

**

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

const int maxn=1001;
int par[maxn],v[maxn];
void ini(int n)
{
    for(int i=0;i<=n;i++)
    {
        par[i]=i;
        v[i]=0;
    }
}
inline int find(int x)
{
    if(par[x]==x)return x;
    int p=find(par[x]);
    v[x]+=v[par[x]];
    par[x]=p;
    return par[x];
}
int main()
{
    int w;
    scanf("%d",&w);
    while(w--)
    {
        int n;
        scanf("%d",&n);
        ini(n);
        int m;
        scanf("%d",&m);
        bool flag=false;
        for(int i=1;i<=m;i++)
        {
            int a,b,w,p,q;
            scanf("%d%d%d",&a,&b,&w);
            p=find(a);q=find(b);
            if(p==q)
            {
                if(v[a]-v[b]!=w)flag=1;
            }
            else
            {
                par[p]=q;
                v[p]=w+v[b]-v[a];
            }
        }
        if(flag)printf("Bessie is blind.\n");
        else printf("Bessie's eyes are good\n");
    }
    return 0;
}

**

B

**
矩陣乘法+快速冪(80分)…………

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;

long long k,x,y,p;
void mul(long long a[15][15],long long b[15][15],int n,int m,int k)
{

    long long c[11][11];
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=k;j++)
        {
            long long sum=0;
            for(int u=1;u<=m;u++)
            {
                sum=(sum+a[i][u]*b[u][j])%p;
            }
            c[i][j]=sum;
        }
    }
    for(int i=1;i<=n;i++)for(int j=1;j<=k;j++)a[i][j]=c[i][j];
}
long long a[15][15],s[15][15];
int main()
{
    cin>>k>>x>>y>>p;
    for(int i=1;i<=k;i++)
    {
        scanf("%d",&a[1][i]);
        a[i+1][i]=1;
        s[i][i]=1;
    }
    x=x-y+1;
    x--;
    while(x)
    {
        if(x&1)mul(s,a,k,k,k);
        mul(a,a,k,k,k);
        x>>=1;
    }
    cout<<s[1][1];
    return 0;
}

10.6 B第一次更正
OTL LZR
由於爆了 long long 沒有思路……在盧神(orz OTL orz OTL)的指導下加入了快速乘 加入x

#define orz OTL LZR

**

AC Code

**

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;

long long q_mul( long long a, long long b, long long mod ) //快速計算 (a*b) % mod
{
    long long ans = 0;  // 初始化
    while(b)                //根據b的每一位看加不加當前a
    {
        if(b & 1)           //如果當前位為1
        {
            b--;
            ans =(ans+ a)%mod;   //ans+=a
        }
        b /= 2;                         //b向前移位
        a = (a + a) % mod;          //更新a

    }
    return ans;
}
long long k,x,y,p;
void mul(long long a[15][15],long long b[15][15],int n,int m,int k)
{

    long long c[11][11];
    for(long long i=1;i<=n;i++)
    {
        for(long long j=1;j<=k;j++)
        {
            long long sum=0;
            for(long long u=1;u<=m;u++)
            {
                sum=(sum+q_mul(a[i][u],b[u][j],p))%p;
            }
            c[i][j]=sum;
        }
    }
    for(long long i=1;i<=n;i++)for(long long  j=1;j<=k;j++)a[i][j]=c[i][j];
}
long long a[15][15],s[15][15];
int main()
{
    cin>>k>>x>>y>>p;
    if(x<y)
    {
        printf("0");
        return 0;
    }
    for(long long i=1;i<=k;i++)
    {
        cin>>a[1][i];
        a[i+1][i]=1;
        s[i][i]=1;
    }
    x=x-y+1;
    x--;
    while(x)
    {
        if(x&1)mul(s,a,k,k,k);
        mul(a,a,k,k,k);
        x>>=1;
    }
    cout<<s[1][1];
    return 0;
}

——既然選擇了遠方,便只顧風雨兼程

相關推薦

CodeVS day2

掛了…… 沒臉發題解…… 不過為了督促自己完善這三道題 所以不要臉的來了QAQ 先OTL(orz)各大神 請不喜勿噴& 先發掛了的兩個程式……(A 和B) 以後update正確的程式 ** A ** 帶權並查集……然而爆零了……

2018.11.9浪在ACM集訓隊測試

2018.11.9浪在ACM集訓隊第四次測試賽 整理人:朱遠迪 A 生活大爆炸版 石頭剪刀布           參考部落格:【1】 劉凱 B 聯合權值     &nbs

NYSIT題解

NYIST–2018大一新生第四次周賽 連結:https://cn.vjudge.net/contest/269128 密碼:nyist A - 穆穆清風至 HDU - 2550 畫圖,模擬一下即可 #include<stdio.h> #include<

HYNU 題解

大自然的搬運工 大水題 題目描述 給你n個整數,再給出整數k,請你求出有幾個能被k整除?(所以整數都小於2^31-1) 輸入 多組輸入 每組第一行2個整數n,k(1<=n,k<=100) 第二行n個整數 輸出 每組一個整數,佔一行,

NYIST--2017大一新生題解

A. 今年暑假不AC 貪心問題,對結束時間從小到大排序,先以第一個結束時間右端點,然後遍歷後面的,如果有開始時間比端大於或等於的,那就更新一下端點 #include<stdio.h> #include<string.h>

廣東省普寧市英才僑中、建新高中2011--2012學年度高三第一學期考(文綜)word版...

廣東省普寧市英才僑中、建新高中2011--2012學年度高三第一學期第四次月考(文綜)word版 2012年01月08日  http://700125.reg.ks5u.com(高考好資料在此   廣東省普寧市英才僑中、建新高中   2011―2012學年度第一學期高三第四次

暑假考試 沖刺Noip模擬4 解題報告——五十嵐芒果醬

空格 註意 工程 tin tex app als family 如果 題1 韜韜搶蘋果(apple) 【問題描述】 又到了收獲的季節,樹上結了許多韜韜,錯了,是許多蘋果,有很多個小韜韜都來摘蘋 果。每個韜韜都想要最大的蘋果,所以發生了爭執,為了解決他們的矛盾,出題人定了

一周課(1019日)

一周 第四次 1.13單用戶模式:在虛擬機重啟linux主機:只能在機器端操作 客戶端無法操作1.14救援模式重啟linux0-60 關機 1 單用戶 234 多用戶 5 圖形 6boot “ centOS7 不在區分級別”1.15克隆虛擬機關機linux註意需要修改 UUID ip地

一周課(1214日)

linux一周第四次課(12月14日)1.13 單用戶模式用途:重置root密碼(需要grub密碼或grub未加密)首先重啟linux reboot 或init 6或shutdown -r now重啟界面按e進入grub rescue模式(grub是一個來自GNU項目的啟動引導程序)進入後按方向鍵定位到l

二周課(1221日)

有意義 other mbo -- 目錄文件 rect /usr 表格 默認 二周第四次課(12月21日)2.18 特殊權限set_uid2.19 特殊權限set_gid2.20 特殊權限stick_bit2.21 軟鏈接文件2.22 硬連接文件 特殊權限:

三周課(1228日)

linux 三周第四次課(12月28日)4.1 df命令df -h 根據磁盤大小適當顯示單位(Byte KB MB GB TB)df -m 以m為單位顯示帶有tmpfs的都是臨時的文件系統,即使在這個掛載點裏寫了東西,重啟也會消失。/dev/shm是內存,寫東西快用free查看swapdf -i 查看分區下有

四周課(15日)

情況 bsp zip2 nag water 情況下 gunzip 1.5 tex 四周第四次課(1月5日)6.1 壓縮打包介紹6.2 gzip壓縮工具壓縮解壓gzip -d =gunzip壓縮級別調整1~9 1是壓縮效率最低的,耗費cpu少,壓縮到一定級別就無法壓縮了,默

四周課(15日) 6.1 壓縮打包介紹 6.2 gzip壓縮工具 6.3 bzip2壓縮工具 6.4 xz壓縮工具

時間 force med 時間戳 dev iyu 文本文 是個 cups 四周第四次課(1月5日)6.1 壓縮打包介紹6.2 gzip壓縮工具6.3 bzip2壓縮工具6.4 xz壓縮工具 ==========================================

五周課(111日) 8.6 管道符和作業控制 8.7/shell變量 8.8 shell變量 8.9 環境變量配置文件

pool res boot sda gpo img ifd 變量名 選項 五周第四次課(1月11日)8.6 管道符和作業控制8.7/shell變量8.8 shell變量8.9 環境變量配置文件擴展bashrc和bash_profile的區別 http://ask.ape

二周課(21日)

可執行文件 打開 軟鏈接 分區 chm 失敗 sha span 結果 2.18 特殊權限set_uid2.19 特殊權限set_gid2.20 特殊權限stick_bit2.21 軟鏈接文件2.22 硬連接文件2.18 特殊權限set_uid#which passwd/us

二周課(21日)筆記

blog size ima ext bcf 不可 需要 pro ade 二周第四次課(2月1日)2.18 特殊權限set_uid2.19 特殊權限set_gid2.20 特殊權限stick_bit2.21 軟鏈接文件2.22 硬連接文件 2.18 特殊權限set_uid特殊

三周課(28日)

spa pat ebo 保存 partition type 工具 4.0 分區命令 4.1 df命令4.2 du命令4.3/4.4 磁盤分區 4.1 df命令df查看文件系統的實際情況#df文件系統 1K-塊 已用 可用 已用% 掛載點/de

三周課(28日)

磁盤 watermark nodes size 分享圖片 mark ces image ffffff 三周第四次課(2月8日)4.1df命令4.2du命令4.3/4.4磁盤分區 4.1df命令 用命令man查df的說明文檔 命令df 命令df -h 命令df -i:查看in

Linux學習筆記三周課(28日)

虛擬機 添加磁盤 acer cto process ued fault print rep 4.1 df命令df,report file system disk space usage匯報文件系統磁盤空間使用情況;df命令格式:df [選項]df -a:all 顯示所有文件

九周課(226日) 11.1 LAMP架構介紹 11.2 MySQL、MariaDB介紹 11.3/11.4/11.5 MySQL安裝 擴展 mysql5.5源碼編譯安裝

when image safe x86 lease x86_64 roc use my.cnf 11.1 LAMP架構介紹11.2 MySQL、MariaDB介紹11.3/11.4/11.5 MySQL安裝擴展mysql5.5源碼編譯安裝 http://www.amin