1. 程式人生 > >2016 CCPC 合肥站 解題報告

2016 CCPC 合肥站 解題報告

前幾天終於把合肥的題補了一些。。。再往下就是lct了,暫時不學。

A、傳遞

題解:將P圖和Q圖的邊取並生成一個新圖(下稱“合成”),有環則原來是不傳遞的。再將P圖和Q的反圖合成,有環則原來不傳遞的。
感覺知道結論還是不難理解的。。。反正我根本想不到。。。結束的時候聽到有用最短路做的,這個才是重大失誤,我們都沒想到。
程式碼是按題解寫的。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2020;
int mp[N][N],in[N];
int T,n;

bool
circle(int k) { queue<int> Q; for (int i=1;i<=n;i++) { in[i]=0; for (int j=1;j<=n;j++) { if (mp[j][i]==1||mp[j][i]==k) { in[i]++; } } if (in[i]==0) Q.push(i); } int cnt=n; while (!Q.empty()) { int
u=Q.front(); Q.pop(); cnt--; for (int i=1;i<=n;i++) { if (mp[u][i]==1||mp[u][i]==k) { if (--in[i]==0) Q.push(i); } } } if (cnt) return true; else return false; } int main() { scanf("%d",&T); while (T--) { scanf
("%d",&n); for (int i=1;i<=n;i++) { for (int j=1;j<=n;j++) { mp[i][j]=0; } } for (int i=1;i<=n;i++) { char s[N]; scanf("%s",s+1); for (int j=1;j<=n;j++) { if (s[j]=='P') { mp[i][j]=1; } else if (s[j]=='Q') { mp[i][j]=2; mp[j][i]=-2; } } } if (circle(2)||circle(-2)) puts("N"); else puts("T"); } return 0; }

C、朋友

分析:不與根相連的值為1的邊操作兩次可以變為0,與根相連的值為1的邊操作一次可以變為0。推理可知,答案僅和與根直接相連的那些1有關。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=40010;
set<int> eg[N];

int main()
{
    int T,n,m;
    scanf("%d",&T);
    while (T--) {
        scanf("%d%d",&n,&m);
        for (int i=1;i<=n;i++) {
            eg[i].clear();
        }
        for (int i=1;i<n;i++) {
            int x,y,z;
            scanf("%d%d%d",&x,&y,&z);
            if (z) {
                eg[x].insert(y);
                eg[y].insert(x);
            }
        }
        while (m--) {
            int op;
            scanf("%d",&op);
            if (op==0) {
                int x;
                scanf("%d",&x);
                if (eg[x].size()&1) puts("Girls win!");
                else puts("Boys win!");
            } else {
                int x,y,z;
                scanf("%d%d%d",&x,&y,&z);
                if (z) {
                    if (eg[x].find(y)==eg[x].end()) {
                        eg[x].insert(y);
                        eg[y].insert(x);
                    }
                } else {
                    if (eg[x].find(y)!=eg[x].end()) {
                        eg[x].erase(y);
                        eg[y].erase(x);
                    }
                }
            }
        }
    }
    return 0;
}

全場程式碼最短的題。。。我一直以為它程式碼是個幾何題,好像讀題的時候直接跳過了。。。現在發現只要敢做就能做出來= = 又是一個重大失誤。
這題主要是一個數學推導的題目。。。
取兩點 v1,v2S,v1v2,可以利用平行四邊形性質解得直線上的兩點 v3,v4

x1+x2=x3+x4y1+y2=y3+y4ax3+by3=0ax4+by4=0
解得:x3=a'bx1+a'bx2+bb'y1+bb'y2a'baby3=aa'x1+aa'x2+ab'y1+ab'y2ab'a'b
再利用叉積計算面積:S=2×12×|v1v2×v1v3|=|(x2x1)(y3y1)(y2y1)(x3x1)|=|(ax2+by2)(a'x2+b'y2)(ax1+by1)(a'x1+b'y1)||f(v2)f(v1)|
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int INF=
            
           

相關推薦

2016 CCPC 合肥 解題報告

前幾天終於把合肥的題補了一些。。。再往下就是lct了,暫時不學。 A、傳遞 題解:將P圖和Q圖的邊取並生成一個新圖(下稱“合成”),有環則原來是不傳遞的。再將P圖和Q的反圖合成,有環則原來不傳遞的。 感覺知道結論還是不難理解的。。。反正我根本想不到。。。

2016 CCPC 杭州 總結

再次來到杭電,其實是有點難過的,雖然我一直沒說,走在杭電的校園裡的時候還能想起來自己上次來的時候的種種幼稚。但是這場比賽打下來,感覺自己也想開許多了,雖然比賽還是失敗了。 恩,講比賽吧。 熱身賽的時候就出了一道題,第二題隊友去做了,我就沒管,表示d題連題意都搞不清楚,當然,

cogs2274[HEOI 2016] tree【解題報告

add spl 我們 eve clu 一個 pac load void 鏈接 官方的數據很水,暴力可a,2332是加強版。 算法:並查集 思路:如果我們按詢問順著來弄,並查集將無法實現,因為一個點一旦指向了深度更小的點,就再也無法指回深度較大的點了。

USACO 2016 US Open Contest, Gold解題報告

for div define targe oid continue 並且 而且 預處理 1.Splitting the Field http://usaco.org/index.php?page=viewproblem2&cpid=645 給二維坐標系中的n個點,求

Moscow Pre-Finals Workshop 2016. Japanese School OI Team Selection. 套題詳細解題報告

詳細 其中 競賽 class 最長 最短路徑 元素 include 寫在前面 寫在前面 謹以此篇題解致敬出題人! 真的期盼國內也能多出現一些這樣質量的比賽啊。9道題中,沒有一道湊數的題目,更沒有碼農題,任何一題拿出來都是為數不多的好題。可以說是這一年打過的題目質量最棒的

2017ACM/ICPC亞洲區瀋陽(部分解題報告

HDU 6225 Little Boxes 題意 計算四個整數的和 解題思路 使用Java大整數 1 import java.math.BigInteger; 2 import java.util.Scanner; 3 4 /** 5 * 6 * @author reqaw

2016廣東工業大學新生杯決賽解題報告

a.pigofzhou的巧克力棒 舉一些例子,可以得出把長度為n的棒劃分最多高興值的方法是:設最大的不超過n的2的整數冪是k,則分為2^k和n-2^k兩份。 2^k則是每次分為兩半,而剩下的再遞迴以同樣的方法劃分。 f(n)=f(2^k)+f(n-2^k),f(2^k)=2*f(2^(k

2016-2017 ACM-ICPC CHINA-Final 解題報告

題目連結 A. Number Theory Problem 題意:給你一個數N,求形如2k-1且小於2N的數中有多少能被7整除。 解法:觀察二進位制位找規律,答案是N/3。 #include<bits/stdc++.h> using namespace std; ty

2016 CCF-CSP 計算機職業資格認證考試 解題報告

前言 嘛,參加這次考試屬於一連串比較機緣巧合的事情—— 首先是當上了2016年度CCF優秀大學生的榮譽,這個獎頒發的同時也贈予了為期一年的CCF會員資格 而會員……是具有一次免費參加CCF計算機職業資格認證考試的機會(就算續費或者再次獲得會員資格也只有這一次免費的機會) 即

解題報告】2015ACM/ICPC亞洲區瀋陽

題目連結 B. Bazinga(HDU5510) 思路 設第i個字串儲存在ss[i][]中。本題最直觀最樸素的做法是列舉兩個字串ss[i]和ss[j] (i+1≤j),再用KMP演算法匹配這兩個字串。首先從大到小列舉j,若對某個ss[j]存在某個s

GCJ 2016 QR解題報告

A.   題目大意是,給你一個初始的整數,然後用他*1, * 2,*3 ....,並把所有出現過的數字記錄下來, 問什麼時候0~9所有數字都出現了一遍。 剛開始還懷疑有沒有可能死迴圈, 後來沒想直接跑了一個1~100000的看了下,都有結果,就直接暴力上了。 #inclu

Google APAC 2016 University Graduates Test Round A解題報告

注意到K最大是1018,每一個字串的字首都是前一個字串,因此只要找到第一個長度不小於K的Sn,然後遞迴求解就行了。由於字串長度是指數增長的,因此遞迴層數很小。 GG = 10**19 sz = [0] while sz[-1] < GG:

Google APAC 2016 University Graduates Test Round B解題報告

先傳個筆試成績的截圖: 一看就是圖論當中最短路的變形,但是邊的權重會隨著時間發生變化。對於dijkstra或者Bellman Ford之類的最短路演算法,它們本質上都是動態規劃,需要滿足最優子結構性質,如果邊權重隨著時間的變化是不規則的,那麼這些演

NOIP 2016 Day2 解題報告

NOIP 2016 Day2 解題報告 by 毒液哥 Problem 100Points 注意到n, m <= 2000. 而我們的問題是對範圍內所有組合數統計能被k整除的個數,所以我們需要得到範圍內所有的組合數模k的餘數。 要注意j <=

2016 ACM-CCPC 合肥總結

沒能在最後翻盤,原因也挺多的,開場的水題錯了三遍我就有點方,寫第二個題的時候思路是對的,但程式碼寫挫了,也一直錯,我們就一直保持一個半小時一直wa的狀態,當時我滿腦子都是,完了,這次又要打鐵23333,一個半小時後出的第一題,罰時可怕;然後是重寫的第二題,罰時可怕;第三道是個DP,當時已經看不下去了,後來是Z

2016級資料結構第一次上機解題報告

A: A題只要按照題目要求做就行,因為按值傳遞是不會改變原來變數的值的,而傳入引用和指標都會改變原來的資料,所以第一行輸出是a,b,其餘兩行是b,a, 參考程式碼: #include <iostream> void swap1(int a, int b) {

網易2017秋招編程題——回文序列 解題報告

out += stream pan 唯一性 [1] bsp names length Problem:https://www.nowcoder.com/question/next?pid=2811407&qid=46573&tid=6015849 如果一個數

解題報告 之 HDU5288 OO&#39; s Sequence

bold repr frame roman efi int tom relative 記錄 解題報告 之 HDU5288 OO‘ s Sequence Description OO has got a array A of size n ,defined

捕牛記(1503)解題報告(bfs)

字節數 first 檢測 表示 所有結點 sca c++ fin ++ 解題思路:每到一個坐標點都有三種走法,每個點只走一次,直到第一次發現牛的坐標為止。用廣度優先搜索(Breadth First Search)(bfs) 代碼實現:定義一個標記結點狀態的數組、一個記錄

[LintCode] 618 Search Graph Nodes 解題報告

and value integer search values tee esc mapping ppi DescriptionGiven a undirected graph, a node and a target, return the nearest node to