Problem_A(CodeForces 686A):

题意:

\[有n个输入, +\space d_i代表冰淇淋数目增加d_i个, -\space d_i表示某个孩纸需要d_i个, 如果你现在手里没有\space d_i个冰淇淋, 那么这个孩纸就会失望的离开。
\]

你初始有x个冰淇淋。
问最后有多少个孩纸失望的离开了。

思路:

模拟就好了, 判断当前的数目是否足够。

代码:

#include <cmath>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <ctime>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <string>
#include <vector>
#include <fstream>
#include <iterator>
#include <iostream>
#include <algorithm>
using namespace std;
#define LL long long
#define INF 0x3f3f3f3f
#define MOD 1000000007
#define eps 1e-6
#define MAXN 1000000
#define MAXM 100
#define dd {cout<<"debug"<<endl;}
#define pa {system("pause");}
#define p(x) {printf("%d\n", x);}
#define pd(x) {printf("%.7lf\n", x);}
#define k(x) {printf("Case %d: ", ++x);}
#define s(x) {scanf("%d", &x);}
#define sd(x) {scanf("%lf", &x);}
#define mes(x, d) {memset(x, d, sizeof(x));}
#define do(i, x) for(i = 0; i < x; i ++)
#define dod(i, x, l) for(i = x; i >= l; i --)
#define doe(i, x) for(i = 1; i <= x; i ++)
int n;
LL x; int main()
{
LL res, child_num;
scanf("%d %I64d", &n, &x);
res = x;
child_num = 0;
LL total_num = 0;
LL d;
char op[2];
for(int i = 0; i < n ;i ++)
{
scanf("%s %I64d", op, &d);
if(op[0] == '+')
res += d;
else if(op[0] == '-')
{
total_num ++;
if(d <= res)
{
res -= d;
child_num ++;
}
}
}
printf("%I64d %I64d\n", res, total_num - child_num);
return 0;
}

Problem_B(CodeForces 686B):

题意:

你能做如下操作:

[l, r]保证长度为偶数。

\[将(l, l+1), \cdots ,(r-1, r)交换。
\]

你最后的目的是将其交换成一个非递减的数列。
请将交换过程中的l, r输出。

思路:

n<100, 可以很暴力的去冒泡, 因为最差的情况也不会超过100*100次。

而题目给的是2W次以内。

昂, 我比较傻逼的写了一个贪心。

每次去找最长的能够交换的区间, 然后进行操作, 一直到不能操作为止。

代码:

#include <cmath>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <ctime>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <string>
#include <vector>
#include <fstream>
#include <iterator>
#include <iostream>
#include <algorithm>
using namespace std;
#define LL long long
#define INF 0x3f3f3f3f
#define MOD 1000000007
#define eps 1e-6
#define MAXN 110
#define MAXM 100
#define dd {cout<<"debug"<<endl;}
#define pa {system("pause");}
#define p(x) {printf("%d\n", x);}
#define pd(x) {printf("%.7lf\n", x);}
#define k(x) {printf("Case %d: ", ++x);}
#define s(x) {scanf("%d", &x);}
#define sd(x) {scanf("%lf", &x);}
#define mes(x, d) {memset(x, d, sizeof(x));}
#define do(i, x) for(i = 0; i < x; i ++)
#define dod(i, x, l) for(i = x; i >= l; i --)
#define doe(i, x) for(i = 1; i <= x; i ++)
int n;
int a[MAXN]; int find_(int l, int r, bool is_l)
{
if(l > r) return l - 1;
for(int i = l; i + 1 <= r; i +=2)
if((a[i] <= a[i + 1] && is_l == false) || (a[i] > a[i + 1] && is_l == true)) return is_l ? i : i - 1;
return is_l ? -1 : ((r - l + 1) % 2 == 0 ? r : r - 1);
} void move_(int l, int r)
{
for(int i = l; i < r; i += 2)
{
int temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
}
}
void show()
{
for(int i = 1; i <= n; i ++)
printf("%d ", a[i]);
printf("\n");
} void deal()
{
int l = 1, r;
while(true)
{
l = find_(1, n, true);
if(l == -1)
{
l = find_(2, n, true);
if(l == -1) return ;
}
r = find_(l + 2, n, false);
if(r == -1) return; // printf("==>%d %d\n", l, r);
move_(l, r);
// show();
// pa printf("%d %d\n", l, r);
}
} int main()
{
bool flag = true;
a[0] = 0;
scanf("%d", &n);
flag = n == 1;
for(int i = 1; i <= n; i ++)
{
scanf("%d", &a[i]);
if(a[i] > a[i - 1] && n && i > 1) flag = false;
} if(!flag)
deal();
return 0;
}

Problem_C(CodeForces 686C):

题意:

给你n, m,将其转换成对应的7进制

然后从转换后的[0, n-1]中任选一个数, 再从转换后[0,m-1]中任选一个数。

必须要保证每个数字只出现一次, 即不会有重复的数字。

问你这样的组合有多少种。

思路:

因为是7进制, 而且要保证每位都不一样, 7进制只有7个数而已, 所以如果两个数的长度超过了7, 肯定不行。

\[再则, 要注意:转换成对应的7进制! 比如8, 转换成7进制, 是11, 那么这8个数就成了[00, 01, 02, \cdots , 10].而不是[0, 1, 2, 3, \cdots , 10]
\]

\[所以可以先求出它们的长度len_n, len_m, 然后判断长度。
\]

枚举0~n, 0~m。 将其分解成对应的7进制后判断是否出现相同数字即可。

代码:

#include <cmath>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <ctime>
#include <set>
#include <map>
#include <list>
#include <stack>
#include <queue>
#include <string>
#include <vector>
#include <fstream>
#include <iterator>
#include <iostream>
#include <algorithm>
using namespace std;
#define LL long long
#define INF 0x3f3f3f3f
#define MOD 1000000007
#define eps 1e-6
#define MAXN 1000000
#define MAXM 10
#define dd {cout<<"debug"<<endl;}
#define pa {system("pause");}
#define p(x) {printf("%d\n", x);}
#define pd(x) {printf("%.7lf\n", x);}
#define k(x) {printf("Case %d: ", ++x);}
#define s(x) {scanf("%d", &x);}
#define sd(x) {scanf("%lf", &x);}
#define mes(x, d) {memset(x, d, sizeof(x));}
#define do(i, x) for(i = 0; i < x; i ++)
#define dod(i, x, l) for(i = x; i >= l; i --)
#define doe(i, x) for(i = 1; i <= x; i ++)
int n, m;
int left_len = 0, right_len = 0; int check(int x, int y)
{
int used[MAXM] = {0};
for(int i = x, k = 0; k < left_len; k ++, i /= 7)
used[i % 7] += 1;
for(int i = y, k = 0; k < right_len; k ++, i /= 7)
used[i % 7] += 1; for(int i = 0; i < 7; i ++)
if(used[i] > 1) return 0;
return 1;
} int main()
{
scanf("%d %d", &n, &m); left_len = right_len = 1;
for(int i = 7; i < n; i *= 7)
left_len ++;
for(int i = 7; i < m; i *= 7)
right_len ++; int ans = 0;
if((left_len + right_len) <= 7)
{
for(int i = 0; i < n; i ++)
for(int j = 0; j < m; j ++)
ans += check(i, j);
}
printf("%d\n", ans);
return 0;
}

Orz 有点头痛,剩下的等明天再补。今天元气大伤

Codeforces Round #359 div2的更多相关文章

  1. Codeforces Round #539 div2

    Codeforces Round #539 div2 abstract I 离散化三连 sort(pos.begin(), pos.end()); pos.erase(unique(pos.begin ...

  2. 【前行】◇第3站◇ Codeforces Round #512 Div2

    [第3站]Codeforces Round #512 Div2 第三题莫名卡半天……一堆细节没处理,改一个发现还有一个……然后就炸了,罚了一啪啦时间 Rating又掉了……但是没什么,比上一次好多了: ...

  3. Codeforces Round#320 Div2 解题报告

    Codeforces Round#320 Div2 先做个标题党,骗骗访问量,结束后再来写咯. codeforces 579A Raising Bacteria codeforces 579B Fin ...

  4. Codeforces Round #564(div2)

    Codeforces Round #564(div2) 本来以为是送分场,结果成了送命场. 菜是原罪 A SB题,上来读不懂题就交WA了一发,代码就不粘了 B 简单构造 很明显,\(n*n\)的矩阵可 ...

  5. Codeforces Round #361 div2

    ProblemA(Codeforces Round 689A): 题意: 给一个手势, 问这个手势是否是唯一. 思路: 暴力, 模拟将这个手势上下左右移动一次看是否还在键盘上即可. 代码: #incl ...

  6. Codeforces Round #626 Div2 D,E

    比赛链接: Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) D.Present 题意: 给定大 ...

  7. CodeForces Round 192 Div2

    This is the first time I took part in Codeforces Competition.The only felt is that my IQ was contemp ...

  8. Codeforces Round #359 (Div. 2)C - Robbers' watch

    C. Robbers' watch time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  9. Codeforces Round #359 (Div. 2) C. Robbers' watch (暴力DFS)

    题目链接:http://codeforces.com/problemset/problem/686/C 给你n和m,问你有多少对(a, b) 满足0<=a <n 且 0 <=b &l ...

随机推荐

  1. 简书APP

    找第三方的时候看到简书这个APP,上网搜了一下发现网页版非常的干净,开头的一篇文章就是"你没实力就别心存侥幸",看完也挺有有同感的.文章网址:http://www.jianshu. ...

  2. Python基础:1.数据类型(列表)

    提示:python版本为2.7,windows系统 1.列表(List) List,是一个有序的集合,可以添加.删除其中的元素. >>> colors = ['red', 'oran ...

  3. 关于SWT的容器类之----面板Composite类和Group类

    1.Comosite类谱系图. Composite的用法: 格式:Composite(Composite parent,int style) 用法:Composite composite = new ...

  4. jquery图片滑动联播效果

    <head> <script src="../Scripts/jquery-1.10.2.js"></script> <meta char ...

  5. MySQL - 启停服务

    Windows 环境 命令行方式 启动 MySQL 服务: net start mysql停止 MySQL 服务: net stop mysql 注:需要以管理员身份启动 cmd 后再执行上述命令. ...

  6. SQL Server(高级) 关键字的使用 二

    二, 高级 关键字 -- 使用介绍 8,Top 的使用(Top子句返回记录的数目) select top number|percent column_name(s) from table_name 或 ...

  7. 经历:easyui的layout自适应高度布局

    在使用easyui的layout布局的时候,在某种情况下,我们会在后续的逻辑中修改一下layout的某个region的高度,那么该怎么做呢?  我就遇到了这样的情况,今天需求经理提出了一个需求:认证用 ...

  8. ###学习《C++ Primer》- 3

    点击查看Evernote原文. #@author: gr #@date: 2014-10-04 #@email: forgerui@gmail.com Part 3: STL泛型算法(第10章) 一. ...

  9. 12天学好C语言——记录我的C语言学习之路(Day 2)

    12天学好C语言--记录我的C语言学习之路 Day 2: 我建议大家每一天学习之前都仅凭记忆去敲前一天敲过的最后一个程序,或者敲前一天你认为最难最长的一个程序,如果一晚上的睡眠之后不看书还能敲的出来, ...

  10. 02_线程的创建和启动_继承Thread方式

    [简述] java使用Thread类代表线程,所有的线程都必须是Thread或者其子类的实例. 每个线程的任务就是完成一定的任务,实际上就是执行一段程序流. [创建并启动多线程的步骤(集成Thread ...