哪里有第36届ACM国际大学生程序设计竞赛亚洲区预赛北京赛区现场赛视频?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了哪里有第36届ACM国际大学生程序设计竞赛亚洲区预赛北京赛区现场赛视频?相关的知识,希望对你有一定的参考价值。
这是北邮组织36届ACM北京赛的官网,http://acm.bupt.edu.cn/icpc_register/ ,已发了参赛队排名:14金、28银:14金牌 参赛队学校
1 上海交通大学
2 清华大学
3 武汉大学
4 中山大学
5 中国科学院研究生院
6 电子科技大学
7 上海交通大学
8 复旦大学
9 四川大学
10 浙江工业大学
11 浙江大学
12 清华大学
13 上海交通大学
14 华东师范大学软件学院
28银牌 参赛队学校
15 清华大学
16 中国科学技术大学
17 浙江大学
18 山东大学
19 南京邮电大学
20 北京师范大学
21 中山大学
22 国防科学技术大学
23 重庆大学
24 浙江大学
25 哈尔滨工业大学
26 中山大学
27 南京航空航天大学
28 复旦大学
29 福州大学
30 华中科技大学
31 大连理工大学
32 湘潭大学
33 西安电子科技大学
34 山东科技大学
35 复旦大学
36 浙江师范大学
37 大连理工大学
38 华中科技大学
39 合肥工业大学
40 华南理工大学
41 上海大学
42 电子科技大学 参考技术A exá浮k邾w悒ㄋq搔bq搔h咬cuのACM国际编程大x赛 目前比2较权威和知名度比5较高的大g学生程序设计1竞赛,其目的旨在使大q学生运用计3算机来充分3展示6自己u分7析问题和解决问题的能力x。从65070举办2至今2ACM-ICPC 已h经在亚洲的多个u国家有分3赛区f,成为2很多高校所关注的重要赛事。 ACM-ICPC是由国际计7算机界历a史悠久k、颇具权威性的组织ACM(Association for Computing Machinery,国际计6算机协会)主办2的,世界上i公7认4的规模最大v、水8平最高的国际大l学生程序设计7竞赛,其目的旨在使大i学生运用计8算机来充分0展示2自己p分0析问题和解决问题的能力e。该项竞赛从18650年举办1至今0已h历u27届,被称为2大u学生的计7算机奥林匹w克竞赛,一x直受到国际各知名大h学的重视,并受到全世界各著名计1算机公6司的高度关注,在过去十f几w年中6,APPLE、AT&T、MICROSOFT和IBM等世界著名信息企业分4别担任了a竞赛的赞助商。可以5说,ACM国际大p学生程序设计5竞赛已p成为5世界各国大d学生最具影响力l的国际级计4算机类的赛事,是广d大b爱好计2算机编程的大v学生展示4才h华的舞台,是著名大q学计2算机教育成果的直接体现,是信息企业与r世界顶尖计6算机人b才y对话的最好机会。 7361年以0来,在IBM的独家赞助支i持下h,大o赛规模达到了v原来的400%。8000年的赛事有来自77个m国家的0200多所高校的2800多支y队7伍参加。 该项竞赛分6区q域预赛和国际决赛两个k阶段进行,各预赛区x前几l名自动获得参加世界决赛的资格,世界决赛安排在每年的春季学期举行,而区n域预赛安排在上l一p年的秋季学期在各大u洲举行。 中7国内2地从66735年开f始参加ACM-ICPC亚洲区j预赛,至今1已b历a十h届。8001年第70届ACM国际大t学生程序设计2竞赛亚洲区p预选赛,中3国设有北京赛区j、杭州赛区x和成都赛区x,分6别由北京大r学、浙江大q学和四川y大f学承办1。 其中4,由四川n大x学承办4的预选赛组织了s来自44所高校的01支o队3伍参加;由北京大v学承办6的预选赛组织了y来自008所高校的201支y队6伍参加;浙江大h学承办0的预选赛组织了b来自318所高校的4060支l队2伍参加,其规模相当盛大x。 3004年北京赛区c、上i海赛区t、西安赛区w,参赛学校也i是超过百所,队2伍过千g。北京赛区w最先开d始,经过网络预赛选拔淘汰,第23届 ACM-ICPC 亚洲区a预选赛北京赛区o暨Google杯全国大m学生程序设计1邀请赛现场决赛共有来自全国50多所高校的27支n队0伍参赛。按现场比7赛名次,比5赛设置一f等奖10支n队7(金牌),二d等奖64支f队7(银牌),三x等奖50支d队8(铜牌),其他参赛队3颁发优胜奖证书0。 ACM-ICPC的亚洲预选赛中3国大u陆各赛区p,也w已p成为1国内2计4算机专d业学科参与i范围最广o、影响最大t的竞赛活动。参加ACM-ICPC竞赛的参赛选手2均是大v学中0的计6算机顶尖人w才s,各所高校的教师以0及x参赛选手8之l间的交流将使其成为1展示7中1国大t学生计8算机才a华的良好机会和参赛的国内0外学校加强合作、增进友a谊的桥梁。ACM-ICPC竞赛在中6国的继续展开j,也f必将为1中6国计1算机教育事业的发展作出更大o贡献。 参考技术B 纯任务,不知道
第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明),签到题4题
文章目录
补题链接:https://ac.nowcoder.com/acm/contest/12548
H. Hard Calculation
链接:https://ac.nowcoder.com/acm/contest/12548/H
来源:牛客网
题目描述
Hooray! It is the first time that Kunming holds an ICPC regional contest. Suppose that everything goes on well and the Kunming Regional Contest is held each year. In which year will the xx-th Kunming Regional Contest be held?
输入描述:
The first and only line of input contains a single integer x(1\\leq x\\leq 100)x(1≤x≤100).
输出描述:
Output a single integer, denoting the year when the xx-th Kunming Regional Contest will be held.
示例1
输入
复制
1
输出
复制
2021
示例2
输入
复制
100
输出
复制
2120
备注:
Note that it is the year 2021 right now.
题意:
- 给出一个x,求2020后的第x个年是第几年
思路:
- 直接输出2020+x
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 1e5+10;
int main()
int x; cin>>x;
cout<<2020+x<<"\\n";
return 0;
I. Mr. Main and Windmills
题目描述
Mr. Main took a train from city to city and passed a plain full of windmills. The train ran in a straight line. A windmill is a machine used for wind power generation. Its fan blades rotate when the wind blows. From his perspective, colorful windmills lined up on the horizon from left to right.
As the train was running, the order of windmills from his perspective was constantly changing: a windmill was originally on the left/right of another, and then changed to its right/left;
Given the coordinates of the windmills, please find the coordinate of him when he just observed the -th windmill exchanged order with other windmills for the -th times. It is guaranteed that any three of the points given, the cities and the windmills, were not collinear, and that all of the windmills were on the same side of the line that the train ran along.
As shown in the picture, in Mr. Mian’s perspective, B was initially to the left of A, and later to the right of A.
输入描述:
The first line of input contains two integers and , where is number of windmills, and is number of queries.
The second line contains four integers x_s, y_s, x_t and y_t (), which are the coordinates of the starting city s and destination city t.
The next lines describe the windmills, the -th of which contains two integers x_i,
y_i (), which are the coordinates of the -th windmill.
The next lines describe the queries, the -th of which contains two integers, h_i and k_i (), denoting a query for the coordinates when observing the k_i-th pass of the h_i-th windmill.
输出描述:
Output m lines, each containing two real numbers x_i, y_i, representing the coordinates when the h_i-th windmill is observed to exchange order with other windmills for k times; if it does not exist, output -1. Your answer is considered correct if its absolute or relative error with the standard answer is less than .
示例1
输入
复制
4 2
0 0 5 0
1 3
2 4
4 1
4 5
1 2
3 2
输出
复制
-1
4.6666666667 0.0000000000
题意:
- 给出n个点的坐标,以及额外的起点和终点。从起点沿直线走到终点,从过程中的每个点看这n个点都会看到相对位置的变化。
- 给出m个询问,对于第h个点,从起点走到终点的过程中,有多少个点相对于他的左右位置发生了变化,求第k个点的坐标,如果小于k就-1.
思路:
- 对于询问点hi,枚举其他所有点j,求他们连线与起点终点的交点,如果交点在起点终点上,那么就会发生变化,反之不会。
#include <bits/stdc++.h>
using namespace std;
//精度
const double eps=1e-9;
int sign(double k)if(k>eps)return 1;else if(k<-eps)return -1; return 0;
int cmp(double k1,double k2)return sign(k1-k2);
//向量
struct point
double x, y;
point operator + (const point& k1)constreturn pointx+k1.x,y+k1.y;
point operator - (const point& k1)constreturn pointx-k1.x,y-k1.y;
point operator * (double k1)constreturn pointx*k1,y*k1;
point operator / (double k1)constreturn pointx/k1,y/k1;
;
double cross(point k1,point k2)return k1.x*k2.y-k1.y*k2.x;
//题目
int check(point k1, point k2, point k3, point k4)
return cmp(cross(k3-k1,k4-k1),cross(k3-k2,k4-k2))!=0;
int inmid(double k1,double k2,double k3)return sign(k1-k3)*sign(k2-k3)<=0;
int inmid(point k1,point k2,point k3)return inmid(k1.x,k2.x,k3.x)&&inmid(k1.y,k2.y,k3.y);
point getp(point k1,point k2,point k3,point k4)
double w1=cross(k1-k3,k4-k3),w2=cross(k4-k3,k2-k3); return (k1*w2+k2*w1)/(w1+w2);
int main()
int n, m; cin>>n>>m;
point s, t; cin>>s.x>>s.y>>t.x>>t.y;
vector<point>p(n+1);
for(int i = 1; i <= n; i++)
cin>>p[i].x>>p[i].y;
for(int i = 1; i <= m; i++)
int h, k; cin>>h>>k;
vector<point>vc;
for(int j = 1; j <= n; j++)
if(j==h)continue;
if(check(p[h],p[j],s,t))//是否相交
point q = getp(p[h], p[j], s, t);
if(inmid(s,t,q))//是否在线段上
vc.push_back(q);
if(s.x==t.x)//竖直线
sort(vc.begin(), vc.end(), [&](point a, point b)return a.y<b.y;);
if(s.y>t.y)reverse(vc.begin(), vc.end());
else
sort(vc.begin(), vc.end(), [&](point a, point b)return a.x<b.x;);
if(s.x>t.x)reverse(vc.begin(), vc.end());
if(vc.size()>=k)
printf("%.10lf %.10lf\\n",vc[k-1].x,vc[k-1].y);
else
cout<<"-1\\n";
return 0;
L. Simone and graph coloring
链接:https://ac.nowcoder.com/acm/contest/12548/L
来源:牛客网
题目描述
Simone, a student of Graph Coloring University, is interested in permutation. Now she is given a permutation of length nn, and she finds that if she connects each inverse pair, she will get a graph. Formally, for the given permutation, if i<jia_ja
i
a
j
, then there will be an undirected edge between node ii and node jj in the graph.
Then she wants to color this graph. Please achieve poor Simone’s dream. To simplify the problem, you just need to find a way of coloring the vertices of the graph such that no two adjacent vertices are of the same color and minimize the number of colors used.
输入描述:
There are multiple test cases. The first line of the input contains an integer T(1\\leq T\\leq 10^6)T(1≤T≤10
6
), indicating the number of test cases.
For each test case, the first line contains an integer n(1 \\leq n \\leq 10^6)n(1≤n≤10
6
), indicating the length of the permutation.
The second line contains nn integers a_1,a_2,…,a_na
1
,a
2
,…,a
n
, indicating the permutation.
It is guaranteed that the sum of nn over all test cases does not exceed 10^610
6
.
输出描述:
For each test case, the first line contains an integer cc, the chromatic number(the minimal number of colors been used when coloring) of the graph.
The second line contains nn integers c_1,c_2,…,c_nc
1
,c
2
,…,c
n
, the color of each node.
Notice that c_ic
i
should satisfy the limit that 1 \\leq c_i \\leq c1≤c
i
≤c.
If there are several answers, it is acceptable to print any of them.
示例1
输入
复制
2
4
1 3 4 2
2
1 2
输出
复制
2
1 1 1 2
1
1 1
题意:
- 给出一个长度为n的排列,对于i<j且ai>aj的点连一条无向边。
- 求给该图染色需要的最少颜色数,构造一种染色方案,输出每个点的颜色。
思路:
- 就强行暴力,从后往前枚举,每次找到在当前数右边中比当前数小的数中颜色最大的数,颜色加一。
- 因为查找的复杂度不够所以用rmq维护。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6+10;
int n, a[maxn], c[maxn];
int f[maxn];
void add(int i, int v) for(;i<=n;i+=i&(-i))f[i]=max(f[i],v);
int query(int i)int ans=0;for(;i>0;i-=i&(-i))ans=max(ans,f[i]);return ans;
int main()
//ios::sync_with_stdio(false);//TLE
int T; scanf("%d",&T);
while(T--)
//memset(f,0,sizeof(f));
for(int i = 1; i <= n; i++)f[i] = 0;
scanf("%d",&n);
for(int i = 1; i <= n; i++)scanf("%d",&a[i]);
int ans = 0;
for(int i = n; i >= 1; i--)
c[i] = query(a[i])+1;
add(a[i],c[i]);
ans = max(ans, c[i]);
//cout<<ans<<"\\n";
printf("%d\\n",ans);
for(int i = 1; i <= n; i++)
printf("%d ",c[i]);
printf("\\n");
return 0;
J.Parallel Sort
As a master of parallel computing, schwer is recently considering about the method to achieve quick sorting on parallel computers. He needs your help!
Given a permutation (p_1,\\cdots,p_n)(p
1
,⋯,p
n
), you need to sort the permutation with minimum number of rounds. In a single round, one can take many pairs of integers (x_1,y_1),\\cdots,(x_k,y_k)(x
1
,y
1
),⋯,(x
k
,y
k
) as long as the values of x_1,y_1,\\cdots,x_k,y_kx
1
,y
1
,⋯,x
k
,y
k
are pairwise distinct. Then with the help of kk CPUs, for each i\\in [1,k]i∈[1,k], the value of p_x_ip
x
i
and p_y_ip
y
i
will be switched immediately. Note that a permutation (p_1,\\cdots,p_n)(p
1
,⋯,p
n
) is sorted if for every integer i\\in [1,n]i∈[1,n], p_i=ip
i
=i holds.
Take some examples. Assume that n=4n=4. For p=(1,2,3,4)p=(1,2,3,4), the minimum number of round is 00 as it is already sorted. For p=(4,3,2,1)p=(4,3,2,1), the answer is 11, as you can swap the indices (1,4)(1,4) and (2,3)(2,3) simultaneously.
题意:
- 给出一个排列,每次可以交换任意对数(a[i],a[j])。
- 求最小交换次数让其变成升序,并输出每次交换的数对
思路:
- 对于每个环:如果环中只有两个数,那么一次交换即可.
如果环中超过两个数,那么两次交换即可比如(2,3,n,1),只需要两步(1,n,n-1,2),(1,2,3,n)就可以有序,如4567123,3217654,1234567。 - 因为无序序列是由若干个独立环交换后形成的,所以答案最多两次交换,构造环的时候每次去查找即可。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int a[maxn], p[maxn], vis[maxn];
int x[maxn], y[maxn], cnt;
void swp(int i, int j)
x[++cnt] = i; y[cnt] = j;
swap(a[i],a[j]);
p[a[i]] = i; p[a[j]] = j;
void dfs(int i)
if(a[a[i]]!=i)
int j = a[i], k = p[i];
swp(j,k);
vis[j] = vis[k] = 1;
dfs(k);
int main()
int n; cin>>n;
for(int i = 1; i <= n; i++)
cin>>a[i]; p[a[i]] = i;
int cc = 0;
for(int i = 1; i <= n; i++)
if(a[i]!=i)cc= max(cc, 1);
if(a[a[i]]!=i)cc = 2;
cout<<cc<<"\\n";
while(1)
int ok = 1;
for(int i = 1; i <= n; i++)
if(a[i]!=i)ok=0;break;
if(ok==1)break;
cnt = 0;
for(int i = 1; i <= n; i++)
if(!vis[i] && a[i]!=i)
if(a[a[i]]==i)
if(!vis[a[i]])
vis[i] = vis[a[i]] = 1;
swp(i,a[i]);
else
vis[i] = 1;
dfs(i);
cout<<cnt<<" ";
for(int i = 1; i <= cnt; i++)
cout<<x[i]<<" "<<y[i]<<" ";
cout<<"\\n";
for(int i = 1; i <= n; i++)vis[i]=0;
return 0;
以上是关于哪里有第36届ACM国际大学生程序设计竞赛亚洲区预赛北京赛区现场赛视频?的主要内容,如果未能解决你的问题,请参考以下文章
第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明),签到题4题
第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南),签到题5题
第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南),签到题5题
第 46 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明),签到题3题