Codeforces Round#412 Div.2

时间:2023-03-09 15:49:05
Codeforces Round#412 Div.2

A. Is it rated?

题面

Is it rated?

Here it is. The Ultimate Question of Competitive Programming, Codeforces, and Everything. And you are here to answer it.

Another Codeforces round has been conducted. No two participants have the same number of points. For each participant, from the top to the bottom of the standings, their rating before and after the round is known.

It's known that if at least one participant's rating has changed, then the round was rated for sure.

It's also known that if the round was rated and a participant with lower rating took a better place in the standings than a participant with higher rating, then at least one round participant's rating has changed.

In this problem, you should not make any other assumptions about the rating system.

Determine if the current round is rated, unrated, or it's impossible to determine whether it is rated of not.

题意

没有!QAQ

代码

#include <bits/stdc++.h>
using namespace std; int n;
int x,y,ans;
int a[1010];
int b[1010];
int cnt;
int sum1;
int smu2;
bool flag1;
bool flag2;
bool flag3; int main()
{
cin>>n;
for (int i=1;i<=n;i++) cin>>a[i]>>b[i];
for (int i=1;i<=n;i++)
if (a[i]!=b[i]) return 0*puts("rated");
for (int i=1;i<n;i++) if (a[i]>=a[i+1]) ;else return 0*puts("unrated");
return 0*puts("maybe");
}

B. T-Shirt Hunt

题面

Not so long ago the Codecraft-17 contest was held on Codeforces. The top 25 participants, and additionally random 25 participants out of those who got into top 500, will receive a Codeforces T-shirt.

Unfortunately, you didn't manage to get into top 25, but you got into top 500, taking place p.

Now the elimination round of 8VC Venture Cup 2017 is being held. It has been announced that the Codecraft-17 T-shirt winners will be chosen as follows. Let s be the number of points of the winner of the elimination round of 8VC Venture Cup 2017. Then the following pseudocode will be executed:

i := (s div 50) mod 475
repeat 25 times:
i := (i * 96 + 42) mod 475
print (26 + i)

Here "div" is the integer division operator, "mod" is the modulo (the remainder of division) operator.

As the result of pseudocode execution, 25 integers between 26 and 500, inclusive, will be printed. These will be the numbers of places of the participants who get the Codecraft-17 T-shirts. It is guaranteed that the 25 printed integers will be pairwise distinct for any value of s.

You're in the lead of the elimination round of 8VC Venture Cup 2017, having x points. You believe that having at least y points in the current round will be enough for victory.

To change your final score, you can make any number of successful and unsuccessful hacks. A successful hack brings you 100 points, an unsuccessful one takes 50 points from you. It's difficult to do successful hacks, though.

You want to win the current round and, at the same time, ensure getting a Codecraft-17 T-shirt. What is the smallest number of successful hacks you have to do to achieve that?

题意

问成功hack几次,能达到一个玄学分数,该分数弄出来的名字有自己

代码

#include <bits/stdc++.h>
using namespace std; int p,x,y;
int ans; bool ret(int k)
{
int i = (k / 50) % 475 ;
for (int j=1;j<=25;j++)
{
i = (i * 96 + 42) % 475;
if (i+26==p) return 1;
}
return 0;
} int main()
{
cin>>p>>x>>y;
int xx=x;
while (xx>=y) xx-=50;
y=xx+50;
for (int i=0;;i++) if (ret(y+i*50))
{
cout<<max(((y+i*50-x)/50+1)/2,0);
return 0;
} }

C. Success Rate

题面

You are an experienced Codeforces user. Today you found out that during your activity on Codeforces you have made y submissions, out of which x have been successful. Thus, your current success rate on Codeforces is equal to x / y.

Your favorite rational number in the [0;1] range is p / q. Now you wonder: what is the smallest number of submissions you have to make if you want your success rate to be p / q?

Input

The first line contains a single integer t (1 ≤ t ≤ 1000) — the number of test cases.

Each of the next t lines contains four integers x, y, p and q (0 ≤ x ≤ y ≤ 109; 0 ≤ p ≤ q ≤ 109; y > 0; q > 0).

It is guaranteed that p / q is an irreducible fraction.

Hacks. For hacks, an additional constraint of t ≤ 5 must be met.

题意

已经有y次提交,x次正确,问需要几次补充,能达到p/q的正确率?

唉,我想到枚举,为啥就想不到二分呢。。。

官方提示

二分。

代码

#include <bits/stdc++.h>
using namespace std; int t;
using ll=long long;
ll x,y,p,q; bool check(ll k)
{
if (k*p>=x && q*k>=y && q*k-y>=k*p-x) return 1;
else return 0;
} ll binary(ll l,ll r)
{
if (l==r)
{
if (check(l)) return (q*l-y);
else return -1;
}
ll mid{(l+r)>>1};
if (check(mid)) return binary(l,mid);
else return binary(mid+1,r);
} int main()
{
cin>>t;
while (t--)
{
cin>>x>>y>>p>>q;
cout<<binary(1,0x7fffffff)<<endl;
}
}

D. Dynamic Problem Scoring

题面

题意

代码

//

E. Prairie Partition

题面

题意

代码

//

F. Perishable Roads

题面

题意

代码

//

赛后总结

作为一名选手,我还是敬佩和欣赏tourist的,但是作为出题的人话。。

我真想打死他。

题目难到我的话,我其实无所谓的=A=

但是这种题意让人理解起来真的很恶心。

很令人失望的一场比赛

还有坑 日后再填

比赛链接

http://codeforces.com/contest/807