2017gdut校賽初賽題解

2021-07-29 02:09:42 字數 4090 閱讀 8821

解析:標準簽到題,(⊙o⊙)…,直接輸出accept,a不大寫的人不知道什麼心態

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

int main()

解析:很有規律的乙個序列,我沒去推公式而是直接打的表…公式應該是 (n/4+1)*5+(n%4+1)

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 10050;

int a[maxn];

int main()

int t;

scanf("%d",&t);

while(t--)

return

0;}

解析:二分答案,二分答案出來以後在二分查詢在每個序列裡有多少個小於等於他的,stl是個好東西

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 1e5+100;

int a[maxn];

int b[maxn];

int main()

printf("%d\n",l);}}

return

0;}

解析:沒有重點,那麼所有可能的線段是n*(n-1)/2,由於問的是直線,所以列舉兩個點,判斷是否和其他點相交如果相交就ans–

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 2e5+10;

struct point

a[maxn];

int n,m;

int x_mul(point p0,point p1,point p2)

int main()}}

printf("%d\n",ans);

}return

0;}

解析:dp題,dp[i][n]表示到點i長度為n是否可行,狀態轉移方程為:dp[tmp.v][tt] |= dp[i][tt-tmp.w],tmp.v到i之間有條長度為tmp.w的邊

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 5000+40;

struct node

node(int _v,int _w)

};vector

g1[maxn],g2[maxn];

int dp[maxn][maxn];

int main()

else

g2[u].push_back(node(v,l));

}dp[1][0] = 1;

for(int i=1;i<=n;i++)

for(unsigned j=0;jfor(int tt=tmp.w;tt<=k;tt++)

dp[tmp.v][tt] |= dp[i][tt-tmp.w];}}

int ans = -1;

for(int i=0;i<=k;i++)

printf("%d\n",ans);

}return

0;}

解析:每個齒輪轉到想要的位置最少步數為:min((ai-ai+10)%10,(ai-ai+10)%10)

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

const int maxn = 10050;

int a[maxn];

int main()

printf("%d\n",ans);

}return

0;}

解析:尺取維護答案

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 1e6+10;

char a[maxn];

int vis[100];

int main()

r++;

}if(cnt == k)

ans = max(ans,r-l);

vis[a[l]-'a']--;

if(vis[a[l]-'a']==0)

cnt--;

l++;

}printf("%d\n",ans);

}return

0;}

解析:找到一點』#』,列舉正方形長度,判斷是否合法

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 1e6+10;

char a[25][25];

bool slove(int x,int y,int n)

for(int i=y;i<=y+n;i++)

return

true;

}int main()}}

}if(flag)

puts("yes");

else

puts("no");

}return

0;}

2017校賽題解

又是一年一度的校賽,三個人從出題到準備環境花了好幾天的時間。雖然也是蠻累的,期間出了一些小差錯,但總的來說還是蠻成功的 感覺比去年好一些,逃。一共出了7題,但是考慮到比賽時間比較緊張就砍掉了兩題 反正沒砍我的題,對了,關於 teddywang 同學在題面上黑我的情況表示強烈譴責,將在他不注意的時候實...

GDUT 2016校賽決賽

用max1 money 來表示花費money在頭盔和首飾上能得到的最優值,故列舉a,列舉b,列舉a i b j 的a b種情況。因為b和a可能有依賴關係 用max2 money 來表示花費money在單手和雙手上能得到的最優值,故列舉c兩兩相加的c c 1 種情況,再列舉d即可 max1,max2都...

2017級校賽總結

這次校賽之前還有些慌,因為最近的狀態不是特別好,有四級的拖累,不過比賽的結果還是相對可以接受的,拿了第二名,可惜的是最後乙個題目沒有交上。比賽過程 因為受之前新生賽的影響,感覺老師不會把簡單題目放在前面,所以草草的看了一眼題目就跳過了,繼續瀏覽其他的題目,然後看了搬書那道題目,剛開始也沒有看清看成了...