链接:https://www.nowcoder.com/acm/contest/86/A
来源:牛客网
空间限制:C/C++ 262144K,其他语言524288K
Special Judge, 64bit IO Format: %lld
题目描述
输入描述:
输入共一行,一个整数
,意义同题面描述。
输出描述:
输出共
行,每行
个整数,表示答案方阵。
输出任意一种可行方案即可。
输入
3
输出
1 2 3 8 9 4 7 6 5
备注:
1 #include <iostream> 2 3 using namespace std; 4 int n; 5 6 int main(){ 7 cin>>n; 8 int k = 1; 9 int kk = n*(n-1)+1; 10 for(int i=0;i<n;i++){ 11 for(int j=0;j<n;j++){ 12 if(j!=n-1) 13 cout<<k++<<" "; 14 else 15 cout<<kk++<<" "; 16 } 17 cout<<endl; 18 } 19 20 return 0; 21 }
链接:https://www.nowcoder.com/acm/contest/86/B
来源:牛客网
空间限制:C/C++ 262144K,其他语言524288K
Special Judge, 64bit IO Format: %lld
题目描述
输入描述:
第一行一个整数
,表示
的询问个数。
接下去
行,每行
个实数
,表示小马家在点
,河水为直线
输出描述:
输出共
行,每行两个实数
, 表示答案垂足点的坐标
。
输入
3 0 1 0 0 1 1 2.13 -6.89 1.78 1.20 -7.73 0.56 3.473 -4.326 -4.851 -0.819 2.467 -2.729
输出
0.5000000 0.5000000 1.5864392 1.1869738 3.7990750 -3.076672
备注:
1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 int t; 7 scanf("%d",&t); 8 for(int i=0;i<t;i++){ 9 double x1,x2,x3,y1,y2,y3,k1,k2; 10 cin>>x1>>y1>>x2>>y2>>x3>>y3; 11 if(x2==x3) 12 printf("%.7lf %.7lf\n",x2,y1); 13 else if(y2==y3) 14 printf("%.7lf %.7lf\n",x1,y2); 15 else{ 16 k1=(y3-y2)/(x3-x2); 17 k2=(x2-x3)/(y3-y2); 18 double x,y; 19 x=(y2-y1-(k1*x2-k2*x1))/(k2-k1); 20 y=(k2*(y2-y1-k1*x2+k1*x1))/(k2-k1)+y1; 21 printf("%.7lf %.7lf\n",x,y); 22 } 23 } 24 return 0; 25 }
链接:https://www.nowcoder.com/acm/contest/86/C
来源:牛客网
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
乾为天,刚健中正,自强不息;坤为地,柔顺伸展,厚载万物。
乾卦:天行健,君子以自强不息。困龙得水好运交,不由喜气上眉梢,一切谋望皆如意,向后时运渐渐高。
坤卦:地势坤,君子以厚德载物。肥羊失群入山岗,饿虎逢之把口张,适口充肠心欢喜,卦若占之大吉昌。
输入描述:
输出描述:
输出共
行,每行一个字符串
表示这个头文件存在,或
表示这个头文件不存在。
输入
3 cstdio splay fstream
输出
Qian Kun Qian
备注:
每个询问字符串
中保证不存在标点、空格或其他不可见字符。
这应该算是签到题,这里就不讲了。
1 #include <iostream> 2 #include <set> 3 using namespace std; 4 set<string> st; 5 int main(){ 6 int t; 7 string s[35]={"algorithm", "bitset", "cctype", "cerrno", "clocale", "cmath", "complex", "cstdio", "cstdlib", "cstring","ctime", "deque", "exception", "fstream", "functional", "limits", "list", "map", "iomanip", "ios", "iosfwd", "iostream", "istream", "ostream", "queue", "set", "sstream", "stack", "stdexcept", "streambuf", "string", "utility", "vector", "cwchar", "cwctype"}; 8 for(int i=0;i<35;i++){ 9 st.insert(s[i]); 10 } 11 cin>>t; 12 while(t--){ 13 string ss; 14 cin>>ss; 15 if(st.count(ss)){ 16 cout<<"Qian"<<endl; 17 }else{ 18 cout<<"Kun"<<endl; 19 } 20 21 } 22 return 0; 23 }
链接:https://www.nowcoder.com/acm/contest/86/D
来源:牛客网
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
震为雷,临危不乱,亨通畅达;巽为风,柔顺伸展,厚载万物。算卦先生来问你,对于每个他给出的无向图,是否存在一条路径能够经过所有边恰好一次,并且经过所有点?不需要满足最后回到起点。
震卦:洊雷,震,君子以恐惧修省。一口金钟在淤泥,人人拿着当玩石,忽然一日钟悬起,响亮一声天下知。
巽卦:随风,巽,君子以申命行事。一叶孤舟落沙滩,有篙无水进退难,时逢大雨江湖溢,不用费力任往返。
输入描述:
第一行一个数
,表示有
组数据。对与每组数据,第一行有两个数
,接下去
行每行两个数
描述一条无向边
。图不保证联通。
输出描述:
对于每组数据,如果存在,输出
,否则输出
。
输入
2 2 2 1 1 2 1 4 6 1 3 1 4 1 2 3 2 4 2 4 3
输出
Zhen Xun
备注:
1 #include <iostream> 2 #include <vector> 3 #include <cstring> 4 #define N 50 5 using namespace std; 6 vector<int> v[N]; 7 int vis[N]; 8 int sum = 1; 9 void dfs(int a){ 10 vis[a] =1; 11 for(int i=0;i<v[a].size();i++){ 12 if(vis[v[a][i]]==0){ 13 vis[v[a][i]]=1; 14 dfs(v[a][i]); 15 sum++; 16 } 17 } 18 } 19 int main(){ 20 int t; 21 cin>>t; 22 while(t--){ 23 int n,m; 24 cin>>n>>m; 25 for(int i=0;i<m;i++){ 26 int x,y; 27 cin>>x>>y; 28 if(x==y) 29 continue; 30 else{ 31 v[x].push_back(y); 32 v[y].push_back(x); 33 } 34 } 35 memset(vis,0,sizeof(vis)); 36 sum = 1; 37 dfs(1); 38 int count = 0; 39 bool prime = true; 40 for(int i=1;i<=n;i++){ 41 int a = v[i].size(); 42 if(a&1) 43 count++; 44 if(a==0) 45 prime = false; 46 } 47 if(prime&&(count==2||count==0)&&sum==n){ 48 cout<<"Zhen"<<endl; 49 }else{ 50 cout<<"Xun"<<endl; 51 } 52 for(int i=0;i<=n;i++) 53 v[i].clear(); 54 } 55 56 57 return 0; 58 }
链接:https://www.nowcoder.com/acm/contest/86/E
来源:牛客网
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
坎为水,险阳失道,渊深不测;离为火,依附团结,光明绚丽。
坎卦:水洊至,习坎;君子以常德行,习教事。一轮明月照水中,只见影儿不见踪,愚夫当财下去取,摸来摸去一场空。
离卦:明两作,离,大人以继明照四方。官人来占主高升,庄农人家产业增,生意买卖利息厚,匠艺占之大亨通。
输入描述:
输出描述:
输入
5 4 6 7 3 4 5 1 6 2 1 2 4 5 5
输出
Kan Kan Li Li
备注:
1 #include <iostream> 2 #define N 1000000 3 using namespace std; 4 5 int a[N]; 6 int main(){ 7 int n,m; 8 cin>>n>>m; 9 int sum = 0; 10 for(int i=1;i<=n;i++){ 11 cin>>a[i]; 12 sum=sum^a[i]; 13 } 14 while(m--){ 15 int x,y; 16 cin>>x>>y; 17 sum=sum^a[x]; 18 a[x] = y; 19 sum=sum^a[x]; 20 if(sum==0){ 21 cout<<"Li"<<endl; 22 }else{ 23 cout<<"Kan"<<endl; 24 } 25 } 26 return 0; 27 }
链接:https://www.nowcoder.com/acm/contest/86/F
来源:牛客网
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
艮为山,动静得宜,适可而止;兑为泽,刚内柔外,上下相和。
艮卦:兼山,艮;君子以思不出其位。财帛常打心头走,可惜眼前难到手,不如意时且忍耐,逢着闲事休开口。
兑卦:丽泽,兑;君子以朋友讲习。这个卦象真可取,觉着做事不费力,休要错过这机关,事事觉得随心意。
输入描述:
输出描述:
每组数据输出一行,
表示先手有必胜策略,
表示没有。
输入
2 3 1 1 2 2 3 5 4 1 2 1 3 3 4 4 5
输出
Dui Gen
备注:
1 #include <iostream> 2 #include <vector> 3 #include <cstring> 4 #define N 10005 5 using namespace std; 6 vector<int> v[N]; 7 int t; 8 int vis[N]; 9 bool dfs(int index){ 10 vis[index] = 1; 11 for(int i=0;i<v[index].size();i++){ 12 int a = v[index][i]; 13 if(!vis[a]){ 14 bool prime = dfs(a); 15 if(!prime) 16 return true; 17 } 18 } 19 return false; 20 } 21 int main(){ 22 cin>>t; 23 while(t--){ 24 memset(vis,0,sizeof(vis)); 25 int n,m; 26 cin>>n>>m; 27 for(int i=0;i<N;i++) 28 v[i].clear(); 29 for(int i=0;i<n-1;i++){ 30 int x,y; 31 cin>>x>>y; 32 v[x].push_back(y); 33 v[y].push_back(x); 34 } 35 bool prime = dfs(m); 36 if(prime) 37 cout<<"Gen"<<endl; 38 else 39 cout<<"Dui"<<endl; 40 41 } 42 return 0; 43 }
链接:https://www.nowcoder.com/acm/contest/86/G
来源:牛客网
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
输入描述:
输出描述:
输入
5 3 ADBBC spiderman ADBAC niconico BDXBC ekstieks ACBBC
输出
ekstieks 80.00
备注:
姓名长度1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 5 struct Node{ 6 string na; 7 double sor; 8 }; 9 bool cmp(Node x,Node y){ 10 if(x.sor==y.sor) 11 return x.na<y.na; 12 return x.sor>y.sor; 13 } 14 Node ans[100005]; 15 int main(){ 16 int n,m; 17 cin>>n>>m; 18 string s; 19 cin>>s; 20 int len = s.length(); 21 for(int i=0;i<m;i++){ 22 double cnt = 0; 23 string name,an; 24 cin>>name>>an; 25 for(int i=0;i<len;i++) 26 if(an[i]==s[i]) 27 cnt++; 28 ans[i].na = name; 29 ans[i].sor = (100.0/(double)len)*cnt; 30 } 31 sort(ans,ans+m,cmp); 32 cout<<ans[0].na<<endl; 33 printf("%.2f\n",ans[0].sor); 34 return 0; 35 }
链接:https://www.nowcoder.com/acm/contest/86/H
来源:牛客网
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
输入描述:
输出描述:
输出共一行,一个整数,表示所有街区与 Sεlιнα 家所在街区之间最近距离的第
小值。
输入
3 3 2 1 2 4 2 3 5
输出
9
输入
6 4 3 1 2 7 2 3 2 2 4 2 2 5 10 3 6 3
输出
7
备注:
1 #include <iostream> 2 #include <algorithm> 3 #include <vector> 4 #include <queue> 5 #define N 100005 6 #define ll long long int 7 using namespace std; 8 struct Node{ 9 int to; 10 int val; 11 }; 12 vector<Node> ve[N]; 13 ll ans[N]; 14 int vis[N]; 15 void bfs(int x){ 16 vis[x] = 1; 17 queue<int> q; 18 ans[x] = 0; 19 q.push(x); 20 while(!q.empty()){ 21 int aa=q.front(); 22 q.pop(); 23 for(int i=0;i<ve[aa].size();i++){ 24 Node a = ve[aa][i]; 25 if(vis[a.to]==0){ 26 ans[a.to] = ans[aa]+a.val; 27 // cout<<ans[a.to]<<endl; 28 q.push(a.to); 29 vis[a.to] = 1; 30 } 31 } 32 } 33 } 34 int main(){ 35 int n,m,k; 36 cin>>n>>m>>k; 37 for(int i=0;i<n-1;i++){ 38 int u,v,w; 39 cin>>u>>v>>w; 40 Node t; 41 t.to = v,t.val = w; 42 ve[u].push_back(t); 43 t.to = u; 44 ve[v].push_back(t); 45 } 46 bfs(m); 47 sort(ans,ans+n+1); 48 cout<<ans[k+1]<<endl; 49 return 0; 50 }
链接:https://www.nowcoder.com/acm/contest/86/I
来源:牛客网
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
输入描述:
输出描述:
输出共一行,一个整数,表示最大的愉悦度。
输入
2 2 5 2 3 0 2 0 3 3 1
输出
15
说明
在这个样例中,Sεlιнα 在开始时观看频道二的节目,每分钟产生愉悦度
;在第二分钟结束时刻切换到频道一,每分钟产生愉悦度,然后直到结束。总共产生愉悦度 。
输入
3 4 17 8 3 0 10 9 10 7 15 0 6 16 9 14 8
输出
205
备注:
这题就是要找到,哪一分钟获得的喜悦值更高并且大于0,
所以就可以用sort先排序开始的时间,然后用类似于指针的方式来
走遍所有的时间点。
1 #include <iostream> 2 #include <algorithm> 3 #define mem(a) memset(a,0,sizeof(a)) 4 #define N 100015 5 #define ll long long int 6 using namespace std; 7 8 struct Node{ 9 ll st, val; 10 }; 11 bool cmp(Node x,Node y){ 12 return x.st<y.st; 13 } 14 Node a[N],b[N]; 15 int n,m,t; 16 int main(){ 17 ios::sync_with_stdio(false); 18 cin>>n>>m>>t; 19 for(int i=0;i<n;i++){ 20 cin>>a[i].st>>a[i].val; 21 } 22 for(int i=0;i<m;i++){ 23 cin>>b[i].st>>b[i].val; 24 } 25 a[n].st=t; 26 b[m].st=t; 27 sort(a,a+n,cmp); 28 sort(b,b+m,cmp); 29 ll al = 0,bl = 0,now = 0,ans = 0; 30 while(now<t){ 31 int cnt; 32 if(a[al].val>b[bl].val){ 33 cnt = a[al].val; 34 }else{ 35 cnt = b[bl].val; 36 } 37 int pre = now; 38 now = min(a[al+1].st,b[bl+1].st); 39 if(cnt>0) 40 ans+=cnt*(now-pre); 41 if(now==t) break; 42 if(now == a[al+1].st) al++; 43 if(now == b[bl+1].st) bl++; 44 } 45 cout<<ans<<endl; 46 return 0; 47 }
链接:https://www.nowcoder.com/acm/contest/86/J
来源:牛客网
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
输入描述:
输出描述:
输出共一行,一个整数,表示最大的
值。
输入
5 7 3 15 12 8
输出
34
输入
7 -2 0 8 9 -5 3 10
输出
68
备注:
1 #include <iostream> 2 #include <algorithm> 3 #include <cmath> 4 #define N 100005 5 #define ll long long int 6 using namespace std; 7 int a[N],b[N]; 8 int main(){ 9 int n; 10 cin>>n; 11 for(int i=0;i<n;i++){ 12 cin>>a[i]; 13 } 14 sort(a,a+n); 15 for(int i=0;i<n;i++){ 16 b[i] = a[n-i-1]; 17 } 18 ll sum = 0; 19 for(int i=0;i<n;i++){ 20 sum+=abs(a[i]-b[i]); 21 } 22 for(int i=0;i<n-1;i++){ 23 sum+=abs(a[i]-b[i+1]); 24 } 25 int k; 26 sum=sum/2; 27 if(n%2==0) k = n/2; 28 else k = n/2+1; 29 30 sum+=abs(a[k-1]-b[0]); 31 cout<<sum<<endl; 32 return 0; 33 }