http://codeforces.com/problemset/page/7?order=BY_SOLVED_DESC
从 5000 以内选的, emmm 还是比较水的哈
时间还是有的, 所以万事万物贵在坚持, 希望能坚持下去!
Describe:
1 - n 个灯线性排列 (初始为开), 小明可以选择开关 op, 这回把 op - n 的灯全部关闭, 如果 (是关着的状态没有影响)
给你小明选择 op 的操作顺序, 输出顺序输出每个灯是由哪个 op 操作关了的
Solution:
跑暴力就好了, 我用了一个比较水的优化, 记录当前 op 的最小值, 我只用识别比当前最小值的 op 小的操作就好了, 输出的时候加个判断就好
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- using namespace std;
- const int maxn = 1e4;
- int r[maxn];
- int main()
- {
- int n,m;
- while(~scanf("%d%d",&n,&m))
- {
- memset(r,0,sizeof(r));
- int op;
- int flagmin = n+1;
- for(int i = 1;i <= m;++i)
- {
- scanf("%d",&op);
- if(op < flagmin){
- r[op] = op;
- flagmin = op;
- }
- }
- int out = r[1];
- printf("%d",out);
- for(int i = 2;i <= n;++i)
- {
- if(r[i] != 0){
- printf("%d",r[i]);
- out = r[i];
- }
- else
- printf("%d",out);
- }
- printf("\n");
- }
- return 0;
- }
来源: http://www.bubuko.com/infodetail-2759235.html