SDUT 2017 Autumn Single Contest K
来源:互联网 发布:oracle数据库有可视化 编辑:程序博客网 时间:2024/06/05 00:08
题目链接
A:贪心
题意:一只蜈蚣有40条左腿和40条右腿。它有a只左鞋和b只右鞋。穿一只左鞋2s,穿一只右鞋1s,扔鞋1s。问给所有脚都穿上鞋最坏需要多长时间。
解析:贪心一下,看什么情况下会花最长的时间。无非两种情况下时间最长:
1、先拿所有右鞋去试左脚,再穿左脚:2*b + 40;
2、先给39只右脚穿上鞋,再给所有的左脚穿上鞋,然后再把所有的剩下的左鞋去试右脚,然后再穿上右鞋:39 * 2 + 40 + 2 *(a - 40)+ 1;
#include<iostream>#include <bits/stdc++.h>using namespace std;int main() { int a, b; cin >> a >> b; int c = 40+b*2; int d = 2*a+39; cout<<max(c,d)<<endl;}
B Fibonacci Sequence
二分枚举斐波那契的下一项
注意二分的姿势,用题目给出的第二项验证,然后递推求出要求的项
#include <bits/stdc++.h>using namespace std;#define ll long longint main(){ ll i,fi,j,fj,n; while(cin>>i>>fi>>j>>fj>>n) { if(i>j) { swap(i,j); swap(fi,fj); } ll l,r,mid,a,b,c; l = -2000000000LL,r = 2000000000LL; while(l<r) { mid = (l+r)/2; a = fi; b = mid; for(int k=i+2; k<=j; k++) { c = a+b; a = b; b = c; if(c>4000000001LL||c<-4000000001LL) { break; } } if(b<fj) { l = mid+1; } else if(b>fj)r = mid-1; else { l =mid,r = mid;} } a = fi; b = r; if(n>=i+1) { for(int k=i+2;k<=n;k++) { c = a+b; a = b; b = c; } printf("%lld\n",b); } else { for(int k=i-1;k>=n;k--) { c = b-a; b = a; a = c; } printf("%lld\n",a); }}return 0;}
E:URAL 2067 Friends and Berries (推理,数学)
题意:给定 n 个人,每个人两个值s, r,要满足,p(v, u) = sqrt((sv − su)^2 + (rv − ru)^2), p(v,u,w) = (p(v,u) + p(v,w) + p(u,w)) / 2
要求找出p(v, u) ≥ p(v,u,w) 的对数,其中w是除u,v外,任意的人。
析:化简一下这个表达式,这很明显是两边之和小于等于第三边,好像挺熟悉啊,对,三角形是两边之和大于第三边,现在是小于,不可能,只能是等于,要想等于,
那么只是共线了,并且w是任何人,所以这些点全部都要共线。并且两端的人就是答案,并且只有一对。
#include <iostream>#include<bits/stdc++.h>using namespace std;#define double long longstruct node{ long long x,y,i;} aa[266666];int cmp(node a,node b){ if(a.x==b.x) return a.y<b.y; else return a.x<b.x;}int main(){ int n; cin>>n; for(int i=1; i<=n; i++) { scanf("%lld%lld",&aa[i].x,&aa[i].y); aa[i].i = i; } sort(aa+1,aa+1+n,cmp); long long x1 = aa[2].x-aa[1].x; long long y1 = aa[2].y-aa[1].y; int f =1; for(int j=3; j<=n; j++) { long long x2 = aa[j].x-aa[1].x; long long y2 = aa[j].y-aa[1].y; if(x1*y2!=x2*y1) { f =0 ; break; } } if(f) { cout<<"1"<<endl; printf("%lld %lld\n",aa[1].i,aa[n].i); } else cout<<"0"<<endl; return 0;}
G dfs可以跑出所有结果,很容易发现规律
不能包含回文串,所以aa,aba这样的串最后答案都不能包含。
#include <iostream>#include<bits/stdc++.h>using namespace std;char ans[][10]={"abc","acb","bac","bca","cab","cba"};int main(){ int n; cin>>n; if(n==1) { cout<<"a\nb\nc\n"; } else if(n*6>100000) { cout<<"TOO LONG"<<endl; } else { for(int i=0;i<6;i++) { for(int j=0;j<n;j++) { printf("%c",ans[i][j%3]); } printf("\n"); } } return 0;}
阅读全文
0 0
- SDUT 2017 Autumn Single Contest K
- SDUT 2017 Autumn Single Contest O 周六场个人赛
- SDUT 2017 Autumn Single Contest N 模板场
- 2017 12 10 cf 个人赛--题解 SDUT 2017 Autumn Single Contest L
- SDUT1128 Autumn Single contest
- 20171116SDUTAutumn Single Contest
- sdut 2624 Contest Print Server
- sdut 3260 Single Round Math 模拟
- K-based Numbers (SDUT 2062)
- sdut 2624 Contest Print Server (第四届省赛)
- sdut 2624 Contest Print Server (模拟)
- 2017 JUST Programming Contest 3.0 K. Malek and Summer Semester
- SDKD 2016 Summer Single Contest #01.B
- SDKD 2016 Summer Single Contest #01.C
- SDKD 2016 Summer Single Contest #01.D
- SDKD 2016 Summer Single Contest #01.E
- SDKD 2016 Summer Single Contest #01.F
- SDKD 2016 Summer Single Contest #02.A
- 初始化Universal-Image-Loader并做全局配置,配置图片的显示方式为圆形显示
- 深入浅出ADX、DSP和SSP
- 清除浏览器缓存的几种方法
- Spring Boot + MyBatis + Freemarker 环境搭建
- c# list 查找重复项 Distinct()方法
- SDUT 2017 Autumn Single Contest K
- spring boot与thymeleaf页面传参两种方式
- xml字符串转换为json对象
- 常用的console 的方法
- 中国海洋大学 软件工程 考研交流
- Python2.x与3.x版本区别
- NoSQL之MongoDB简介
- 又遇IDEA 乱输入代码,也不报错问题,解决后,笔而记之。
- 695. Max Area of Island