Codeforces Round #443 (Div. 2)

codeforces 879 A. Borya's Diagnosis【水题】

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
int n, t = , s, d;
scanf("%d", &n);
while(n--) {
scanf("%d%d", &s, &d);
while(s <= t) {s += d;}
t = s;
}
printf("%d\n", t);
return ;
}

78ms

codeforces 879 B. Table Tennis【模拟】

题意:一排n个人,给出每个人的a值,从第一个人开始,每次和后面人比赛,a值大的人赢,输的人走到最后位置去,求先连赢k场的人的a值。

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){
long long k;
int n, t = , a, ans = , cnt = , f = ;
scanf("%d%lld", &n, &k);
while(n--) {
scanf("%d", &a);
if(a < ans) cnt++;
else cnt = ;
ans = max(ans, a);
if(!f) {cnt = ;f = ;}
if(cnt >= k) break;
}
printf("%d\n", ans);
return ;
}

31ms

codeforces 878 A. Short Program【位运算】

题意:给出一系列与、或、异或这三种逻辑运算表达式,要对未知数x顺序做这些运算,要你合并运算,输出不超过5行的化简的运算式子。

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n;
int main(){
int i, j, k, f, x;
int cnt = ;
int a = , b = , c = ;
char s;
scanf("%d", &n);
for(i = ; i <= n; ++i) {
getchar();
scanf("%c %d", &s, &x);
if(s == '|') {a |= x; b |= x; c &= (-x);}
else if(s == '&') {b &= x; c &= x;}
else if(s =='^') {c ^= x; }
}
if(a) cnt++;
if(b != ) cnt++;
if(c) cnt++;
printf("%d\n", cnt);
if(a) printf("| %d\n", a);
if(b != ) printf("& %d\n", b);
if(c) printf("^ %d\n", c);
return ;
}

156ms

codeforces 878 B. Teams Formation【模拟】

题意:长为n的数组a,重复m次形成一个序列,每次动态消去相邻k个相同的数,直到不能消去为止,求最后剩下几个数。

题解:先将长为n的一列数消除,然后考虑两段连接中间消除。

 #include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = ;
typedef long long ll;
int n, k, m, cnt;
int a[N], b[N], c[N];
ll ans = ;
int main() {
cnt = ;
int i, j, o, sum = ;
int l, r;
scanf("%d%d%d", &n, &k, &m);
for(i = ; i <= n; ++i) scanf("%d", &a[i]);
for(i = ; i <= n; ++i) {//第一段序列
if(a[i] != b[cnt]) { b[++cnt] = a[i]; c[cnt] = ; }
else { c[cnt]++; if(c[cnt] == k) cnt--; }
}
if(!cnt) {puts(""); return ;}
for(i = ; i <= cnt; ++i) sum += c[i];
for(o = , i = ; i < cnt+-i; ++i) {//相当于两段序列之间
if(b[i] == b[cnt+-i] && c[i] + c[cnt+-i] == k) o += k;
else break;
}
if(i<cnt+-i) {
if(b[i] == b[cnt+-i] && c[i] + c[cnt+-i] > k) o += k;
ans = 1ll * sum * m - 1ll * o * (m-);
}
else {//剩一种数字
ans = 1ll * c[i] * m % k;
if(ans) ans += sum - c[i];//两端的数
}
printf("%lld\n", ans);
return ;
}

31ms

最新文章

  1. [LeetCode] Guess Number Higher or Lower II 猜数字大小之二
  2. STM32之位绑定
  3. (转)mysql中InnoDB表为什么要建议用自增列做主键
  4. hadoop实战之分布式模式
  5. 随笔分类 - 无废话ExtJs系列教程
  6. Lumen 设置 timezone 时区
  7. winform异步进度条LongTime
  8. confusing uv
  9. ANDROID STUDIO, GRADLE AND NDK INTEGRATION
  10. 上海招聘FPGA讲师(专兼职均可)
  11. arrayList LinkedList HashMap HashTable的区别
  12. Python 装饰器装饰类中的方法
  13. IIS7常见错误及解决方法
  14. Gradle安装 Gradle效率提升 eclipse安装gradle插件 【我】
  15. SpringBoot切换Tomcat容器,SpringBoot使用Jetty容器
  16. Asp.net2.0之自定义控件ImageButton
  17. STM32串口的设置和库函数的介绍
  18. ROS Navigation中的map_server地图包功能和使用
  19. (转)Mysql主从复制搭建及详解
  20. 博弈论(Game Theory) - 04 - 纳什均衡

热门文章

  1. Could not find gradle wrapper within android sdk
  2. Java如何大批量从json数据源中按指定符号隔字符串,并修改、删除数据
  3. jquery操作radio单选按钮,实现取值,动态选中,动态删除的各种方法
  4. js控制表格隔行变色
  5. C#中使用Log4Net记录日志
  6. IO流实现模拟软件试用的功能
  7. Struts 类型转换之局部和全局配置
  8. HDU3629:Convex
  9. HTML中的图片
  10. 利用Metaweblog技术的API接口同步到多个博客网站(详细)