博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #283 (Div. 2) ABCDE
阅读量:6704 次
发布时间:2019-06-25

本文共 5960 字,大约阅读时间需要 19 分钟。

ABC都比较水。贴个代码。

A

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 8 using namespace std; 9 10 #define LL long long11 #define eps 1e-812 #define inf 0x3f3f3f3f13 #define mnx 101014 15 int a[mnx];16 int main(){17 int n;18 scanf( "%d", &n );19 for( int i = 0; i < n; ++i )20 scanf( "%d", &a[i] );21 int ans = inf;22 for( int i = 2; i < n; ++i ){23 int tmp = a[i] - a[i-2];24 for( int j = 1; j < n; ++j ){25 if( j != i )26 tmp = max( tmp, a[j] - a[j-1] );27 }28 ans = min( ans, tmp );29 }30 cout << ans << endl;31 return 0;32 }
View Code

B

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 8 using namespace std; 9 10 #define LL long long11 #define eps 1e-812 #define inf 0x3f3f3f3f13 #define mnx 101014 15 char s[mnx], ans[mnx], b[mnx];16 int main(){17 int n;18 scanf( "%d", &n );19 scanf( "%s", s );20 strcpy( ans, s );21 for( int i = 0; i < 10; ++i ){22 for( int j = 0; j < n; ++j ){23 for( int k = 0; k < n; ++k ){24 b[k] = s[(k+j)%n];25 }26 if( strcmp( ans, b ) == 1 )27 strcpy( ans, b );28 }29 for( int j = 0; j < n; ++j ){30 if( s[j] == '9' ) s[j] = '0';31 else s[j]++;32 }33 }34 for( int i = 0; i < n; ++i )35 printf( "%c", ans[i] );36 puts( "" );37 return 0;38 }
View Code

C。不断的贪心就好了。

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 8 using namespace std; 9 10 #define LL long long11 #define eps 1e-812 #define inf 0x3f3f3f3f13 #define mnx 11014 15 char g[mnx][mnx];16 bool ok[mnx];17 int n, m, ans;18 void cal( int a ){19 for( int i = 0; i < m; ++i ){20 if( ok[i] ) continue;21 if( g[a][i] > g[a-1][i] ) return;22 if( g[a][i] < g[a-1][i] ){23 ok[i] = 1; ans++;24 }25 }26 return;27 }28 int main(){29 scanf( "%d %d", &n, &m );30 getchar();31 for( int i = 0; i < n; ++i )32 gets( g[i] );33 ans = 0;34 for( int j = 1; j < 100; ++j ){35 for( int i = 1; i < n; ++i )36 cal( i );37 }38 printf( "%d\n", ans );39 return 0;40 }
View Code

D题有点坑。给你n个数,给出每轮的胜负情况(第一个人赢或者第二个人赢),叫你输出所有可能的s 和 t的方案。

x[i]表示第一个人赢第i次时是哪一轮,xw[i]表示第一个人第i轮的时候赢了多少次。y[i], yw[i]则表示第二个人的。

枚举赢一局需要赢多少次,算出两个人赢的局数,判断一下是不是符合条件。是的话就加入答案里面。排个序输出就好了。。

有点坑,之前一直把

写成了 if(w1 > w2 && x[sx] == n) 和 if(w2 > w1 && y[sy] == n)跪了好多发。都找不出错,最后从cf上搞了一组数据下来才发现这里挫了。
改了之后还错了,因为数组开的不够大,x[sx+i] 跟 y[sy+i]那里有可能到20w。。
1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 using namespace std;12 13 #define LL long long14 #define N 20500015 #define M 202016 #define eps 1e-1017 #define inf 0x3f3f3f3f18 #define MP make_pair19 #define Pi acos(-1.0)20 #define mod 100000000721 #pragma comment(linker, "/STACK:1024000000,1024000000")22 23 struct node{24 int s, t;25 node(int s = 0, int t = 0) : s(s), t(t) {}26 bool operator < (const node &b) const{27 return s < b.s || (s == b.s && t < b.t);28 }29 };30 node ans[N];31 int x[N], y[N], xw[N], yw[N];32 int main(){33 int n, all = 0;34 scanf("%d", &n);35 memset(x, -1, sizeof x);36 memset(y, -1, sizeof y);37 int w1 = 0, w2 = 0;38 for(int i = 1; i <= n; ++i){39 int a;40 scanf("%d", &a);41 if(a == 1)42 x[++w1] = i, xw[i] = w1, yw[i] = yw[i-1];43 else44 y[++w2] = i, yw[i] = w2, xw[i] = xw[i-1];45 }46 for(int i = 1; i <= max(w1, w2); ++i){47 int sx = 0, sy = 0, win1 = 0, win2 = 0;48 while(1){49 int nx = x[sx+i], ny = y[sy+i];50 if(nx == -1 && ny == -1) break;51 if(nx == -1 && ny != -1){52 win2++;53 sx = xw[ny], sy = yw[ny];54 }55 else if(nx != -1 && ny == -1){56 win1++;57 sx = xw[nx], sy = yw[nx];58 }59 else{60 if(nx < ny)61 win1++, sx = xw[nx], sy = yw[nx];62 else win2++, sx = xw[ny], sy = yw[ny];63 }64 }65 if(win1 > win2 && x[sx] == n)66 ans[all++] = node(win1, i);67 if(win2 > win1 && y[sy] == n)68 ans[all++] = node(win2, i);69 }70 printf("%d\n", all);71 sort(ans, ans + all);72 for(int i = 0; i < all; ++i)73 printf("%d %d\n", ans[i].s, ans[i].t);74 return 0;75 }
View Code

E题。这样的类型做过好多次了,贪心排序,然后用stl来搞。这次也不例外。把每个节目按照b由小到大排,把每个人按照d由小到大排,然后扫一遍,给每个人选适合的节目。

1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 using namespace std;12 13 #define LL long long14 #define N 10002015 #define M 202016 #define eps 1e-1017 #define inf 0x3f3f3f3f18 #define MP make_pair19 #define Pi acos(-1.0)20 #define mod 100000000721 #pragma comment(linker, "/STACK:1024000000,1024000000")22 23 struct play{24 int u, v, k, id;25 bool operator < (const play &b) const{26 return v < b.v || (v == b.v && u < b.u);27 }28 };29 play p[N], q[N];30 set
> s;31 set
>::iterator it, itt;32 int ans[N];33 int main(){34 int n, m;35 scanf("%d", &n);36 for(int i = 0; i < n; ++i)37 scanf("%d%d", &p[i].u, &p[i].v), p[i].k = i + 1;38 sort(p, p + n);39 scanf("%d", &m);40 for(int i = 0; i < m; ++i)41 scanf("%d%d%d", &q[i].u, &q[i].v, &q[i].k), q[i].id = i + 1;42 sort(q, q + m);43 int j = 0;44 for(int i = 0; i < m; ++i){45 int k = q[i].k;46 while(p[j].v <= q[i].v && j < n){47 s.insert(MP(p[j].u, p[j].k));48 j++;49 }50 it = s.lower_bound(MP(q[i].u, -1));51 itt = it;52 for(; it != s.end() && k > 0; ++it, k--)53 ans[(*it).second] = q[i].id;54 s.erase(itt, it);55 }56 if(j == n && s.size() == 0){57 puts("YES");58 for(int i = 1; i <= n; ++i)59 printf("%d%c", ans[i], i == n ? '\n' : ' ');60 }61 else puts("NO");62 return 0;63 }
View Code

 

转载于:https://www.cnblogs.com/LJ-blog/p/4525172.html

你可能感兴趣的文章
Cookie管理 WebView同步
查看>>
解决matplotlib库在PyCharm和命令行都无法正常显示问题
查看>>
(一)Linux实操之——权限、任务调度、磁盘分区
查看>>
Jmeter----HTTP Request Defaults
查看>>
signal(SIGHUP, SIG_IGN)的含义
查看>>
浅谈javascript中的作用域
查看>>
JavaFX Scene Builder 1.0 Developer Preview介绍
查看>>
VS2010 运行速度加快方法(转)
查看>>
EasyRadius 从1.6升级到 1.65 提示:初始化连接失败,未找到可用的接口信息,解决方案...
查看>>
iPhone开发之多线程使用
查看>>
Python 发邮件
查看>>
程序10
查看>>
ecshop 如何调整商品属性筛选项的显示顺序?
查看>>
HDOJ---2577 How to Type[DP(两个DP数组)]
查看>>
apns
查看>>
Java性能总结三(转)
查看>>
小白学数据分析-----> ARPU之殇
查看>>
Cocos2d-x for Windows Phone 8 发布
查看>>
android调用系统电话薄,实现增删改查。
查看>>
Delphi多媒体设计之TMediaPlayer组件(七)
查看>>