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;
}
全場程式碼最短的題。。。我一直以為它程式碼是個幾何題,好像讀題的時候直接跳過了。。。現在發現只要敢做就能做出來= = 又是一個重大失誤。
這題主要是一個數學推導的題目。。。
取兩點
解得:
再利用叉積計算面積:
#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' 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