@Dmaxiya
2018-08-17T02:30:19.000000Z
字数 2977
阅读 1148
Codeforces
Contests 链接:Codeforces Round #450(Div.2)
过题数:3
排名:808/4629
给定平面直角坐标系上 个点的坐标,数据保证没有点在 轴上,问,是否存在这样一个点 ,删掉 之后,剩下的所有点,都在 轴的一侧。
扫一遍,记录 轴左边和右边的点的数量,如果其中一边的点的数量小于等于 ,就输出 ,否则就 。
#include <iostream>#include <cstdio>#include <cstdlib>#include <cmath>#include <climits>#include <cstring>#include <string>#include <vector>#include <list>#include <queue>#include <stack>#include <map>#include <set>#include <bitset>#include <algorithm>#include <functional>#include <iomanip>using namespace std;#define LL long longint n;int x, y;int cntl, cntr;int main() {#ifdef LOCALfreopen("test.txt", "r", stdin);// freopen("out.txt", "w", stdout);#endif // LOCAL// ios::sync_with_stdio(false);while(scanf("%d", &n) != EOF) {cntl = cntr = 0;for(int i = 0; i < n; ++i) {scanf("%d%d", &x, &y);if(x > 0) {++cntr;} else {++cntl;}}if(cntl == 0 || cntl == 1) {printf("Yes\n");} else if(cntr == 0 || cntr == 1) {printf("Yes\n");} else {printf("No\n");}}return 0;}
给定三个数字 ,求数字 在有理数 小数点后第几位,如果不存在,则输出 。
模拟除法计算即可,根据抽屉原理, ,在取模的过程中,取模的次数超过 ,就一定会取到相同的数字,所以最多做 次除法,就可以判断 是否在 的小数位中。
#include <iostream>#include <cstdio>#include <cstdlib>#include <cmath>#include <climits>#include <cstring>#include <string>#include <vector>#include <list>#include <queue>#include <stack>#include <map>#include <set>#include <bitset>#include <algorithm>#include <functional>#include <iomanip>using namespace std;#define LL long longlong long a, b, c;int main() {#ifdef LOCALfreopen("test.txt", "r", stdin);// freopen("out.txt", "w", stdout);#endif // LOCAL// ios::sync_with_stdio(false);while(cin >> a >> b >> c) {int ans = -1;a = a % b;for(int i = 1; i <= b; ++i) {LL tmp = a * 10 / b;if(tmp == c) {ans = i;break;}a = a * 10 % b;}cout << ans << endl;}return 0;}
给定一个 个数字的排列,要删掉其中一个数字,使得这个排列中的 数最多, 数需要满足以下条件:
对于排列 ,如果存在一下标 对于任意的 ,都有 ,那么数字 就是一个 数。
计算删掉每个数字 后,对整个数列的 数的个数的贡献,如果 是 ,则删掉 后,对整个数列的贡献 ,如果 是 中的最大值,而 是其中的次大值,则删掉 后,对整个数列的贡献 ,最后跑一边,取贡献的最大值。
#include <iostream>#include <cstdio>#include <cstdlib>#include <cmath>#include <climits>#include <cstring>#include <string>#include <vector>#include <list>#include <queue>#include <stack>#include <map>#include <set>#include <bitset>#include <algorithm>#include <functional>#include <iomanip>using namespace std;#define LL long longconst int maxn = 100000 + 100;int n, ans;int num[maxn];set<int> st;set<int>::iterator it;int Time[maxn];int main() {#ifdef LOCALfreopen("test.txt", "r", stdin);// freopen("out.txt", "w", stdout);#endif // LOCAL// ios::sync_with_stdio(false);while(scanf("%d", &n) != EOF) {st.clear();memset(Time, 0, sizeof(Time));for(int i = 1; i <= n; ++i) {scanf("%d", &num[i]);}st.insert(num[1]);--Time[num[1]];for(int i = 2; i <= n; ++i) {st.insert(num[i]);it = st.end();--it;if(*it == num[i]) {--Time[*it];continue;}--it;if(*it == num[i]) {++it;++Time[*it];}}int Max = Time[1];ans = 1;for(int i = 2; i <= n; ++i) {if(Time[i] > Max) {Max = Time[i];ans = i;}}printf("%d\n", ans);}return 0;}