201512-1 数位之和

水题一个,取模除以10胡搞即可(不知道字符串为什么不行

 #include <algorithm>
#include <iostream>
#include <iomanip>
#include <cstring>
#include <climits>
#include <complex>
#include <fstream>
#include <cassert>
#include <cstdio>
#include <bitset>
#include <vector>
#include <deque>
#include <queue>
#include <stack>
#include <ctime>
#include <set>
#include <map>
#include <cmath> using namespace std; int n; int main() {
while(~scanf("%d", &n)) {
int ans = ;
while(n) {
ans += n % ;
n /= ;
}
printf("%d\n", ans);
}
return ;
}

1

201512-2 消除类游戏

按行按列枚举三个相邻的中点,看看左右是否和它相同颜色,如果相同就打标记,最后根据标记处理所有点。

 #include <algorithm>
#include <iostream>
#include <iomanip>
#include <cstring>
#include <climits>
#include <complex>
#include <fstream>
#include <cassert>
#include <cstdio>
#include <bitset>
#include <vector>
#include <deque>
#include <queue>
#include <stack>
#include <ctime>
#include <set>
#include <map>
#include <cmath> using namespace std; const int maxn = ;
const int dx[] = {, , -, };
const int dy[] = {, -, , };
int n, m;
int G[maxn][maxn];
bool dis[maxn][maxn]; bool ok(int i, int j) {
return i >= && j >= && i < n && j < m;
} int main() {
// freopen("in", "r", stdin);
while(~scanf("%d %d", &n, &m)) {
memset(dis, , sizeof(dis));
for(int i = ; i < n; i++) {
for(int j = ; j < m; j++) {
scanf("%d", &G[i][j]);
}
}
for(int i = ; i < n; i++) {
for(int j = ; j < m; j++) {
if(ok(i-, j) && ok(i+, j)) {
if(G[i-][j] == G[i+][j] && G[i-][j] == G[i][j] && G[i+][j] == G[i][j]) {
dis[i-][j] = dis[i+][j] = dis[i][j] = ;
}
}
}
}
for(int i = ; i < n; i++) {
for(int j = ; j < m; j++) {
if(ok(i, j-) && ok(i, j+)) {
if(G[i][j-] == G[i][j+] && G[i][j-] == G[i][j] && G[i][j+] == G[i][j]) {
dis[i][j-] = dis[i][j+] = dis[i][j] = ;
}
}
}
}
for(int i = ; i < n; i++) {
for(int j = ; j < m; j++) {
if(dis[i][j]) G[i][j] = ;
printf("%d ", G[i][j]);
}
printf("\n");
}
}
return ;
}

2

201512-3 画图

小模拟,注意好行和列即可,第一个样例提供了一个trick,那就是覆盖后的颜色还可以被继续覆盖,并且覆盖后可以在其上画线段。判断线段相交在每画一段的时候完成,假如画之前存在与它不一样方向的线段就变+(注意原本就是+的情况)。填充操作一遍dfs就行,和POJ的一个题一样。

 #include <algorithm>
#include <iostream>
#include <iomanip>
#include <cstring>
#include <climits>
#include <complex>
#include <fstream>
#include <cassert>
#include <cstdio>
#include <bitset>
#include <vector>
#include <deque>
#include <queue>
#include <stack>
#include <ctime>
#include <set>
#include <map>
#include <cmath> using namespace std; typedef struct Point {
int x, y;
Point() {}
Point(int xx, int yy) : x(xx), y(yy) {}
}Point; const int maxn = ;
const int dx[] = {, , , -};
const int dy[] = {, -, , }; char G[maxn][maxn];
int n, m, q;
Point a, b;
int cmd; void init() {
memset(G, , sizeof(G));
for(int i = ; i < n; i++) {
for(int j = ; j < m; j++) {
G[i][j] = '.';
}
}
} void line(Point a, Point b) {
if(a.y == b.y) {
if(a.x > b.x) {
Point tmp = a;
a = b;
b = tmp;
}
for(int i = a.x; i <= b.x; i++) {
if(G[i][a.y] == '-' || G[i][a.y] == '+') G[i][a.y] = '+';
else G[i][a.y] = '|';
}
}
else if(a.x == b.x) {
if(a.y > b.y) {
Point tmp = a;
a = b;
b = tmp;
}
for(int i = a.y; i <= b.y; i++) {
if(G[a.x][i] == '|' || G[a.x][i] == '+') G[a.x][i] = '+';
else G[a.x][i] = '-';
}
}
}
bool ok(int i, int j) {
return i >= && j >= && i < n && j < m;
} void dfs(int x, int y, char s) {
for(int i = ; i < ; i++) {
int xx = x + dx[i];
int yy = y + dy[i];
if(ok(xx, yy) && !(G[xx][yy] == '|' || G[xx][yy] == '+' || G[xx][yy] == '-' ) && G[xx][yy] != s) {
G[xx][yy] = s;
dfs(xx, yy, s);
}
}
} int main() {
// freopen("in", "r", stdin);
while(~scanf("%d %d", &m, &n)) {
scanf("%d", &q);
init();
while(q--) {
scanf("%d", &cmd);
if(cmd == ) {
scanf("%d %d %d %d", &a.y, &a.x, &b.y, &b.x);
line(a, b);
}
else {
char s[];
memset(s, , sizeof(s));
scanf("%d %d", &a.y, &a.x);
scanf("%s", s);
dfs(a.x, a.y, s[]);
}
}
for(int i = n - ; i >= ; i--) {
for(int j = ; j < m; j++) {
printf("%c", G[i][j]);
}
printf("\n");
}
}
return ;
}

3

201512-4 送货

图论小题,求一条不用回到原点的欧拉路,trick在图不连通的情况,因此要提前做一步连通性的判断。还有就是记录点的度,假如是奇数度的点为0个或者2个的时候是存在这样一条路的,假如奇数度点为1或者大于2则不存在。dfs的时候打好标记就可以了。

 #include <algorithm>
#include <iostream>
#include <iomanip>
#include <cstring>
#include <climits>
#include <complex>
#include <fstream>
#include <cassert>
#include <cstdio>
#include <bitset>
#include <vector>
#include <deque>
#include <queue>
#include <stack>
#include <ctime>
#include <set>
#include <map>
#include <cmath> using namespace std; const int maxn = ;
const int maxm = ;
vector<int>::iterator it;
vector<int> G[maxn];
bool vis[maxn][maxn];
int dig[maxn];
int n, m, top;
int st[maxm];
int pre[maxn]; int find(int x) {
return x == pre[x] ? x : pre[x] = find(pre[x]);
} void unite(int x, int y) {
x = find(x);
y = find(y);
if(x != y) {
pre[y] = x;
}
}
inline void init() {
for(int i = ; i < maxn; i++) {
pre[i] = i;
}
} void dfs(int u) {
for(int i = ; i < G[u].size(); i++) {
if(!vis[u][G[u][i]]) {
vis[u][G[u][i]] = vis[G[u][i]][u] = ;
dfs(G[u][i]);
st[top++] = G[u][i];
}
}
} int main() {
// freopen("in", "r", stdin);
int a, b;
while(~scanf("%d %d", &n, &m)) {
init();
memset(dig, , sizeof(dig));
memset(vis, , sizeof(vis));
for(int i = ; i < n + ; i++) G[i].clear();
for(int i = ; i < m; i++) {
scanf("%d %d", &a, &b);
G[a].push_back(b);
G[b].push_back(a);
unite(a, b);
dig[a]++; dig[b]++;
}
int odd = ;
bool exflag = ;
int father = find();
for(int i = ; i <= n; i++) {
if(father != find(i)) exflag = ;
sort(G[i].begin(), G[i].end());
if(dig[i] & ) odd++;
}
if(odd == || odd > || exflag) {
puts("-1");
continue;
}
top = ;
dfs();
printf("");
while(top--) printf(" %d", st[top]);
printf("\n");
}
return ;
}

4

201512-5 矩阵

题目好长QAQ,不想做QAQ

看了一眼题应该是矩阵快速幂,怎么看怎么是个烂题。。

[CCF2015.12]题解的更多相关文章

  1. “玲珑杯”ACM比赛 Round #12题解&源码

    我能说我比较傻么!就只能做一道签到题,没办法,我就先写下A题的题解&源码吧,日后补上剩余题的题解&源码吧!                                     A ...

  2. cojs 强连通图计数1-2 题解报告

    OwO 题目含义都是一样的,只是数据范围扩大了 对于n<=7的问题,我们直接暴力搜索就可以了 对于n<=1000的问题,我们不难联想到<主旋律>这一道题 没错,只需要把方程改一 ...

  3. 2019.11.11&12题解

    Day1 考的不是很好,T1T2没区分度,T3想的太少,考试后期几乎都是在摸鱼,bitset乱搞也不敢打,只拿到了35分,跟前面的差距很大 A. 最大或 标签: 二进制+贪心 题解: 首先x,y中一定 ...

  4. 8.3 NOIP 模拟12题解

    话说这次考试T1和T2是真的水,然而T1CE,T2TLE,T3CE 这不就是在侮辱我的智商啊!之前本机编译都是c++,以后要用c++11. 这次的T1就是一个大型找规律,我的规律都找出来了,但是竟然用 ...

  5. [CCF2015.09]题解

    201509-1 数列分段 水,记下前一个数,看看跟当前是否一样,不一样就ans+1 #include <algorithm> #include <iostream> #inc ...

  6. [NOIP模拟测试12]题解

    A. 找规律题.儿子的编号减去 小于它编号的最大的fibonacci数 即可得到它父亲的编号. 然后两个节点都暴力上跳就好了.预处理一下fibonacci数,每次二分查找即可. #include< ...

  7. 华东交通大学2017年ACM双基程序设计大赛题解

    简单题 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submissio ...

  8. bzoj 4610 Ceiling Functi

    bzoj 4610 Ceiling Functi Description bzoj上的描述有问题 给出\(n\)个长度为\(k\)的数列,将每个数列构成一个二叉搜索树,问有多少颗形态不同的树. Inp ...

  9. Splay树-Codevs 1296 营业额统计

    Codevs 1296 营业额统计 题目描述 Description Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司 ...

随机推荐

  1. 【POJ】【1821】Fence

    DP/单调队列优化 题意:k个人粉刷总长为n的墙壁(或者说栅栏?),每个人有一个必刷点s[i](这个人也可以一点也不刷,如果刷就必须刷这个点),最大粉刷长度l[i](必须是连续粉刷一段),和粉刷一格的 ...

  2. java 验证身份证号

  3. 【bzoj1013】[JSOI2008]球形空间产生器sphere

    1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 4530  Solved: 2364[Subm ...

  4. js java正则表达式替换手机号4-7位为星*号

    需求: 一个手机号13152461111,由于安全性,需要替换4-7位字符串为星号,为131****1111,那么有2中玩法,一种是前端隐藏,一种是后台隐藏. 1. 前台隐藏 <!DOCTYPE ...

  5. volatile关键字的使用

    (简要概括:volatile变量有两个作用:一个是告诉编译器不要进行优化:另一个是告诉系统始终从内存中取变量的地址,而不是从缓存中取变量的值) 一.前言 1.编译器优化介绍: 由于内存访问速度远不及C ...

  6. LCIS(m*n) 最长公共上升子序列

    详见:http://wenku.baidu.com/view/3e78f223aaea998fcc220ea0n3的: for(int i=1;i<=n;i++)             for ...

  7. rpc 小例子

    RpcFramework /* * Copyright 2011 Alibaba.com All right reserved. This software is the * confidential ...

  8. c#实现Socket网络编程

    命名空间: 在网络环境下,我们最感兴趣的两个命名空间是System.Net和 System.Net.Sockets. System.Net命名空间通常与较高程的操作有关,例如download或uplo ...

  9. Error Code: 1175 Mysql中更新或删除时报错(未带关键字条件)

    SET SQL_SAFE_UPDATES = 0; SQL_SAFE_UPDATES = {0 | 1} 如果设置为0,则MySQL会放弃在WHERE子句或LIMIT子句中不使用关键字的UPDATE或 ...

  10. Manacher算法 O(n) 求最长回文子串

    转自:http://bbs.dlut.edu.cn/bbstcon.php?board=Competition&gid=23474 其实原文说得是比较清楚的,只是英文的,我这里写一份中文的吧. ...