Codeforces Round #322 (Div. 2)
- /************************************************
- * Author :Running_Time
- * Created Time :2015/9/28 星期一 16:58:13
- * File Name :A.cpp
- ************************************************/
- #include <cstdio>
- #include <algorithm>
- #include <iostream>
- #include <sstream>
- #include <cstring>
- #include <cmath>
- #include <string>
- #include <vector>
- #include <queue>
- #include <deque>
- #include <stack>
- #include <list>
- #include <map>
- #include <set>
- #include <bitset>
- #include <cstdlib>
- #include <ctime>
- using namespace std;
- #define lson l, mid, rt << 1
- #define rson mid + 1, r, rt << 1 | 1
- typedef long long ll;
- const int N = 1e5 + 10;
- const int INF = 0x3f3f3f3f;
- const int MOD = 1e9 + 7;
- const double EPS = 1e-8;
- int main(void) {
- int a, b; scanf ("%d%d", &a, &b);
- int ans = min (a, b);
- printf ("%d ", ans);
- a -= ans, b -= ans;
- ans = a / 2 + b / 2;
- printf ("%d\n", ans);
- return 0;
- }
从后往前,维护一个后缀最大值
- /************************************************
- * Author :Running_Time
- * Created Time :2015/9/28 星期一 16:58:21
- * File Name :B.cpp
- ************************************************/
- #include <cstdio>
- #include <algorithm>
- #include <iostream>
- #include <sstream>
- #include <cstring>
- #include <cmath>
- #include <string>
- #include <vector>
- #include <queue>
- #include <deque>
- #include <stack>
- #include <list>
- #include <map>
- #include <set>
- #include <bitset>
- #include <cstdlib>
- #include <ctime>
- using namespace std;
- #define lson l, mid, rt << 1
- #define rson mid + 1, r, rt << 1 | 1
- typedef long long ll;
- const int N = 1e5 + 10;
- const int INF = 0x3f3f3f3f;
- const int MOD = 1e9 + 7;
- const double EPS = 1e-8;
- int a[N], mx[N], ans[N];
- int main(void) {
- int n; scanf ("%d", &n);
- for (int i=1; i<=n; ++i) {
- scanf ("%d", &a[i]);
- }
- mx[n] = a[n]; ans[n] = 0;
- for (int i=n-1; i>=1; --i) {
- if (a[i] <= mx[i+1]) {
- ans[i] = mx[i+1] + 1 - a[i];
- }
- mx[i] = max (mx[i+1], a[i]);
- }
- for (int i=1; i<=n; ++i) {
- printf ("%d%c", ans[i], i == n ? '\n' : ' ');
- }
- return 0;
- }
题意:给n个数,最多可以增加k,每个数上限为100,问max sum (a[i] / 10)
分析:若k很小时,优先加给需要最小数字能到下一个十整数的,按照这个规则排序。若还有多余则继续,此时每个数字加10,直到100或者k<=0,及时break。
- /************************************************
- * Author :Running_Time
- * Created Time :2015/9/28 星期一 16:58:28
- * File Name :C.cpp
- ************************************************/
- #include <cstdio>
- #include <algorithm>
- #include <iostream>
- #include <sstream>
- #include <cstring>
- #include <cmath>
- #include <string>
- #include <vector>
- #include <queue>
- #include <deque>
- #include <stack>
- #include <list>
- #include <map>
- #include <set>
- #include <bitset>
- #include <cstdlib>
- #include <ctime>
- using namespace std;
- #define lson l, mid, rt << 1
- #define rson mid + 1, r, rt << 1 | 1
- typedef long long ll;
- const int N = 1e5 + 10;
- const int INF = 0x3f3f3f3f;
- const int MOD = 1e9 + 7;
- const double EPS = 1e-8;
- int a[N];
- int cal(int x) {
- if (x == 100) return 0;
- int a = x / 10;
- return (a + 1) * 10 - x;
- }
- bool cmp(int x, int y) {
- return cal (x) < cal (y);
- }
- int main(void) {
- int n, k; scanf ("%d%d", &n, &k);
- for (int i=1; i<=n; ++i) {
- scanf ("%d", &a[i]);
- }
- sort (a+1, a+1+n, cmp);
- while (k > 0) {
- bool up = false;
- for (int i=1; i<=n; ++i) {
- if (a[i] == 100) continue;
- int dt = cal (a[i]);
- if (dt > k || k <= 0) break;
- if (dt <= k) {
- k -= dt; a[i] += dt;
- up = true;
- }
- }
- if (!up) break;
- }
- int ans = 0;
- for (int i=1; i<=n; ++i) {
- ans += a[i] / 10;
- }
- printf ("%d\n", ans);
- return 0;
- }
题意:很好理解,就是三个矩形组合成一个正方形
分析:想到了很简单,无非就是两种情况,比赛时没想那么多,代码很挫,建议看图片就行了。。。
- /************************************************
- * Author :Running_Time
- * Created Time :2015/9/28 星期一 17:39:02
- * File Name :D.cpp
- ************************************************/
- #include <cstdio>
- #include <algorithm>
- #include <iostream>
- #include <sstream>
- #include <cstring>
- #include <cmath>
- #include <string>
- #include <vector>
- #include <queue>
- #include <deque>
- #include <stack>
- #include <list>
- #include <map>
- #include <set>
- #include <bitset>
- #include <cstdlib>
- #include <ctime>
- using namespace std;
- #define lson l, mid, rt << 1
- #define rson mid + 1, r, rt << 1 | 1
- typedef long long ll;
- const int N = 1e5 + 10;
- const int INF = 0x3f3f3f3f;
- const int MOD = 1e9 + 7;
- const double EPS = 1e-8;
- int main(void) {
- int x[3], y[3];
- for (int i=0; i<3; ++i) {
- scanf ("%d%d", &x[i], &y[i]);
- if (x[i] > y[i]) swap (x[i], y[i]);
- }
- int sx = x[0] + x[1] + x[2];
- if (sx == y[0] && sx == y[1] && sx == y[2]) { //第一种情况
- printf ("%d\n", sx);
- for (int i=0; i<3; ++i) {
- for (int j=1; j<=x[i]; ++j) {
- for (int k=1; k<=y[i]; ++k) {
- printf ("%c", i == 0 ? 'A' : (i == 1) ? 'B' : 'C');
- }
- puts ("");
- }
- }
- }
- else { //第二种情况
- bool flag = false;
- int n = 0, id = 0;
- for (int i=0; i<3; ++i) {
- if (n < y[i]) {
- n = y[i]; id = i;
- }
- }
- int tx = n - x[id];
- for (int i=0; i<3; ++i) {
- for (int j=0; j<3; ++j) {
- if (i == id || j == id) continue;
- if (x[i] == x[j] && x[i] == tx) {
- if (y[i] + y[j] == n) {
- flag = true; break;
- }
- }
- else if (x[i] == y[j] && x[i] == tx) {
- if (y[i] + x[j] == n) {
- flag = true; break;
- }
- }
- else if (y[i] == x[j] && y[i] == tx) {
- if (x[i] + y[j] == n) {
- flag = true; break;
- }
- }
- else if (y[i] == y[j] && y[i] == tx) {
- if (x[i] + x[j] == n) {
- flag = true; break;
- }
- }
- }
- }
- if (flag) { //输出答案
- printf ("%d\n", n);
- for (int i=1; i<=x[id]; ++i) {
- for (int j=1; j<=y[id]; ++j) {
- printf ("%c", id == 0 ? 'A' : (id == 1) ? 'B' : 'C');
- }
- puts ("");
- }
- char p, q;
- if (id == 0) p = 'B', q = 'C';
- else if (id == 1) p = 'A', q = 'C';
- else p = 'A', q = 'B';
- for (int i=0; i<3; ++i) {
- for (int j=0; j<3; ++j) {
- if (i == id || j == id) continue;
- if (x[i] == x[j] && x[i] == tx) {
- if (y[i] + y[j] == n) {
- for (int k=1; k<=tx; ++k) {
- for (int l=1; l<=n; ++l) {
- printf ("%c", l <= y[i] ? p : q);
- }
- puts ("");
- }
- return 0;
- }
- }
- else if (x[i] == y[j] && x[i] == tx) {
- if (y[i] + x[j] == n) {
- for (int k=1; k<=tx; ++k) {
- for (int l=1; l<=n; ++l) {
- printf ("%c", l <= y[i] ? p : q);
- }
- puts ("");
- }
- return 0;
- }
- }
- else if (y[i] == x[j] && y[i] == tx) {
- if (x[i] + y[j] == n) {
- for (int k=1; k<=tx; ++k) {
- for (int l=1; l<=n; ++l) {
- printf ("%c", l <= x[i] ? p : q);
- }
- puts ("");
- }
- return 0;
- }
- }
- else if (y[i] == y[j] && y[i] == tx) {
- if (x[i] + x[j] == n) {
- for (int k=1; k<=tx; ++k) {
- for (int l=1; l<=n; ++l) {
- printf ("%c", l <= x[i] ? p : q);
- }
- puts ("");
- }
- return 0;
- }
- }
- }
- }
- }
- else puts ("-1");
- }
- return 0;
- }
最后老夫夜观星相,预测此次rating会超1700,为了能够在div2继续虐菜,“故意”hack失败。。
Codeforces Round #322 (Div. 2)的更多相关文章
- Codeforces Round #322 (Div. 2) D. Three Logos 暴力
D. Three Logos Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/581/problem ...
- Codeforces Round #322 (Div. 2) C. Developing Skills 优先队列
C. Developing Skills Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/581/p ...
- Codeforces Round #322 (Div. 2) B. Luxurious Houses 水题
B. Luxurious Houses Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/581/pr ...
- Codeforces Round #322 (Div. 2) A. Vasya the Hipster 水题
A. Vasya the Hipster Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/581/p ...
- Codeforces Round #322 (Div. 2) —— F. Zublicanes and Mumocrates
It's election time in Berland. The favorites are of course parties of zublicanes and mumocrates. The ...
- Codeforces Round #322 (Div. 2) E F
E. Kojiro and Furrari 题意说的是 在一条直线上 有n个加油站, 每加一单位体积的汽油 可以走1km 然后每个加油站只有一种类型的汽油,汽油的种类有3种 求从起点出发到达终点要求使 ...
- 树形dp - Codeforces Round #322 (Div. 2) F Zublicanes and Mumocrates
Zublicanes and Mumocrates Problem's Link Mean: 给定一个无向图,需要把这个图分成两部分,使得两部分中边数为1的结点数量相等,最少需要去掉多少条边. ana ...
- Codeforces Round #322 (Div. 2) D. Three Logos 模拟
D. Three Logos Three companies decided to order a ...
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
随机推荐
- run as maven test报错解决办法
eclipse中使用maven插件的时候,运行run as maven build的时候报错 -Dmaven.multiModuleProjectDirectory system propery is ...
- Ajax的简单实现(Json)
之前写的是一般的Ajax if (request.status === 200) { document.getElementById("createResult").innerHT ...
- Javascript对象的技巧和陷阱
创建对象的3种方法 方法1 直接创建 var obj = { name: "mike", age: 10 } 方法2 用new创建 var ob = new Date(); 方法3 ...
- Design Pattern 设计模式1 - Strategy 1
实现 : Defferent Heros attack Defferently. - 不同的英雄使用不用的招数 Strategy设计的思路: 基类A.更加小的基类B,新的继承类C: 1 从基类A中抽出 ...
- Python 001- 将URL中的汉字转换为url编码
很多时候想爬取网页信息,结果出现URL是中文的情况(比如‘耳机'),url的地址编码却是%E8%80%B3%E6%9C%BA,因此需要做一个转换.这里我们就用到了模块urllib. 代码超简单 #-* ...
- MVC Hidden用法
@Html.Hidden("DataSeriID",ViewBag.DataSeriID as string) 第一个参数相当于生成的ID值,后面的参数是String类型的数据,V ...
- es 300G 数据删除 执行计划 curl REST 操作
es 300G 数据删除 [es union_2017执行计划] [测试执行环境]线上D服务器[测试用例]get:curl -XGET ES:9200/_cat/indices?v post:curl ...
- this that 时间戳转日期 小程序 列表 与 加载
var gd = getApp().globalData; var imgUrlApp = gd.imgUrlApp; var localImgPath = gd.localImgPath; var ...
- An O(ND) Difference Algorithm and Its Variations (1986)
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927 The problems of finding a longest com ...
- mysql数据库引擎InnoDB和MyISAM的区别
InnoDB支持行级锁和表级锁(默认行级锁),支持事务,外部键等:大量的insert和update更快等.只有通过索引条件检索数据,InnoDB 才使用行级锁,否则,InnoDB 将使用表锁. MyI ...