水 A - Vasya the Hipster

/************************************************
* 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;
}

水 B - Luxurious Houses

从后往前,维护一个后缀最大值

/************************************************
* 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;
}

  

贪心 C - Developing Skills

题意:给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;
}

  

模拟 D - Three Logos

题意:很好理解,就是三个矩形组合成一个正方形

分析:想到了很简单,无非就是两种情况,比赛时没想那么多,代码很挫,建议看图片就行了。。。

/************************************************
* 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)的更多相关文章

  1. 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 ...

  2. 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 ...

  3. 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 ...

  4. 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 ...

  5. 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 ...

  6. Codeforces Round #322 (Div. 2) E F

    E. Kojiro and Furrari 题意说的是 在一条直线上 有n个加油站, 每加一单位体积的汽油 可以走1km 然后每个加油站只有一种类型的汽油,汽油的种类有3种 求从起点出发到达终点要求使 ...

  7. 树形dp - Codeforces Round #322 (Div. 2) F Zublicanes and Mumocrates

    Zublicanes and Mumocrates Problem's Link Mean: 给定一个无向图,需要把这个图分成两部分,使得两部分中边数为1的结点数量相等,最少需要去掉多少条边. ana ...

  8. Codeforces Round #322 (Div. 2) D. Three Logos 模拟

                                                      D. Three Logos Three companies decided to order a ...

  9. 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 ...

随机推荐

  1. Tomcat配置,Myeclipse破解和各种设置

    转自:http://www.cnblogs.com/tyjsjl/archive/2006/11/14/2156111.html 根据tomcat来配置eclipse和MyEclipse结合使用起来, ...

  2. because joins aren’t as important.

    “MongoDB wasn’t designed in a lab. We built MongoDB from our own experiences building large-scale, h ...

  3. Session Timeout 与 $.ajaxSetup

    对于session过期跳转的问题,很简单,就是一个过滤器,然后判断session为空?跳转:继续.但是对于ajax的请求,需要做特殊处理,见下面代码中的 // 此处考虑ajax操作session过期的 ...

  4. (31)java web的hibernate使用-一级缓存,二级缓存

    参考:https://blog.csdn.net/miachen520/article/details/52195832 hibernate自带一级缓存 和 二级缓存 一,一级缓存: 基于Sessio ...

  5. Spring的声明式事务

    1.与hibernate集成 <bean id="sessionFactory" class="org.springframework.orm.hibernate3 ...

  6. mysql优化----大数据下的分页,延迟关联,索引与排序的关系,重复索引与冗余索引,索引碎片与维护

    理想的索引,高效的索引建立考虑: :查询频繁度(哪几个字段经常查询就加上索引) :区分度要高 :索引长度要小 : 索引尽量能覆盖常用查询字段(如果把所有的列都加上索引,那么索引就会变得很大) : 索引 ...

  7. glibc CVE-2015-7547漏洞的分析和修复方法【转】

    本文转载自:http://blog.csdn.net/tengxy_cloud/article/details/50764370 漏洞概述 glibc中处理DNS查询的代码中存在栈溢出漏洞,远端攻击者 ...

  8. YTU 1068: 复制字符串

    1068: 复制字符串 时间限制: 1 Sec  内存限制: 128 MB 提交: 602  解决: 382 题目描述 有一字符串,包含n个字符.写一函数,将此字符串中从第m个字符开始的全部字符复制成 ...

  9. 没有该栏目数据可能缓存文件(data/cache/inc_catalog_base.inc)没有更新请检查是否有写入权限

    dedecms系统搬家后或在系统还原后,重新更新栏目或文件的时候,有时会出现这样的错误提示:没有该栏目数据可能缓存文件(data/cache/inc_catalog_base.inc)没有更新请检查是 ...

  10. 书写优雅的shell脚本(三) - shell中exec解析

    参考:<linux命令.编辑器与shell编程> <unix环境高级编程> exec和source都属于bash内部命令(builtins commands),在bash下输入 ...