内容简介:思路:贪心,没啥好说思路:记录头指针超级签到题
A.Clam and Fish
思路:贪心,没啥好说
int n,m,k; string s; void solve(){ cin>>n; cin>>s; int f=0,c=0; for (int i=0;i<n;i++){ if (s[i]=='0'){ if (c)c--,f++; } else if (s[i]=='1')c++; else f++; } f+=c/2; cout<<f<<endl; } int main(){ int T=1; cin>>T; while (T--){ solve(); } return 0; }
B.Classical String Problem
思路:记录头指针
int n,m,k,p; string s; void solve(){ char c; int x; getchar(); scanf("%c %d",&c,&x); if (c=='M'){ p=(p+x+k)%k; } else{ printf("%c\n",s[(p+x-1)%k]); } } int main(){ int T=1; cin>>s; k=s.size(); p=0; cin>>T; while (T--){ solve(); } return 0; }
C.Operation Love
将这只任意翻转旋转过的手的20个坐标顺时针或逆时针给你,问是左手还是右手
思路:先用叉积判断出给出顺逆时针,再通过边长的关系得出左手还是右手
#define sqr(a) (a)*(a) const double eps=0.1; string s; double x[21],y[21]; void solve(){ for (int i=0;i<20;i++)scanf("%lf%lf",&x[i],&y[i]); double ans=0; for (int i=0;i<20;i++)ans+=x[i]*y[(i+1)%20]-x[(i+1)%20]*y[i];//鞋带公式 ans/=2;//面积,<0顺时针,>0逆时针 int a,b; for (int i=0;i<20;i++){ double t=sqrt(sqr(x[i]-x[(i+1)%20])+sqr(y[i]-y[(i+1)%20])); if (t<=9+eps&&t>=9-eps)a=i; if (t<=8+eps&&t>=8-eps)b=i; } if ((a<b&&!(a==0&&b==19))||(a==19&&b==0)){ if (ans>0) puts("right"); else puts("left"); } else{ if (ans>0) puts("left"); else puts("right"); } } int main(){ int T=1; cin>>T; while (T--){ solve(); } return 0; }
D.Points Construction Problem
题意:给定n,m,n代表n个黑点,m代表黑点和周围空白区域构成的黑白点对个数,问满足n和m图形能否构成
思路:分析得,一个凸的黑点构成的图形形成的点对为其外长方形的周长,也易知,m为奇数,该图形无法构成。
不妨令所有点外围为同一个长方形
最少点构成最大图形
最多点构成图形为长方形整体
中间部分的点可以如图补充,左边同右边
可以枚举1-m/2,长宽为a,b,当点在max(a,b)<=n<=a*b时满足
int n,m,k; void solve(){ cin>>n>>m; if (m&1){cout<<"No"<<endl;return;} bool f=0; int a,b; for (int i=1;i<=m/2/2;i++){//枚举长宽的宽 a=i,b=m/2-i; if (n>=b&&n<=a*b){f=1;break;} } if (f==0){cout<<"No"<<endl;return;} cout<<"Yes"<<endl; n-=b; for (int i=1;i<=a;i++)printf("%d %d\n",i,i); for (int i=a+1;i<=b;i++)printf("%d %d\n",a,i); for (int i=a-1;i>=1;i--){ if (n==0)break; for (int j=i+1;j<=b;j++){ printf("%d %d\n",i,j); n--; if (n==0)break; } } for (int i=2;i<=a;i++){ if (n==0)break; for (int j=i-1;j>=1;j--){ printf("%d %d\n",i,j); n--; if (n==0)break; } } } int main(){ int T=1; cin>>T; while (T--){ solve(); } return 0; }
E.Two Matchings
的最小值
思路:只要满足4个点及以上一组就必定能形成2个置换序列,值为组中的(max-min)*2,先排序,再利用动态规划即可求出最小值
int n,m,k; int a[N],dp[N]; void solve(){ cin>>n; for (int i=1;i<=n;i++)scanf("%d",&a[i]); sort(a+1,a+1+n); for (int i=1;i<=n;i++)dp[i]=inf; dp[0]=0; for (int i=4;i<=n;i++){ dp[i]=min(dp[i],dp[i-4]+a[i]-a[i-3]); dp[i]=min(dp[i],dp[i-2]+a[i]-a[i-2]); } cout<<dp[n]*2<<endl; } int main(){ int T=1; cin>>T; while (T--){ solve(); } return 0; }
F.Fraction Construction Problem
G.Operating on a Graph
H.Sort the Strings Revision
I.Sorting the Array
J.Operating on the Tree
K.Eleven Game
L.Problem L is the Only Lovely Problem
超级签到题
以上所述就是小编给大家介绍的《牛客多校第三场》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
微信小程序运营与推广完全自学手册
王洪波 / 电子工业出版社 / 2018-6 / 59
本书是运营管理方面的书籍,将小程序的运营推广问题置千小程序的整个运营管理体系中来谈,主要讲述小程序的定位规划、营销吸粉策略、评估优化这三大方面的内容,这三方面的内容之间是三位一体、密切相关的。 书中通过列举丰富且具有代表性的小程序实际案例来向读者提供些可行的运营推广办法。案例涉及美食类、电商类、旅游类、媒体类等小程序,可供多个行业的小程序运营者参考借鉴。 书中所提供的各种小程序营销策略......一起来看看 《微信小程序运营与推广完全自学手册》 这本书的介绍吧!