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. 【CodeForces】【311E】Biologist

    网络流/最大权闭合图 题目:http://codeforces.com/problemset/problem/311/E 嗯这是最大权闭合图中很棒的一道题了- 能够1A真是开心-也是我A掉的第一道E题 ...

  2. js的全局函数

    JS的全局函数,全局函数和window对象的函数不一样. 全局函数不属于任何一个内置对象. JS包含以下7个全局函数,用于一些常用的功能: escape(),unescape(); //编码,解码. ...

  3. myeclipse 反编译插件 jad 安装

    1.  准备工作 下载jad.exe文件:http://www.varaneckas.com/sites/default/files/jad/jad158g.win.zip 下载jadeclipse插 ...

  4. poj 3254

    状态压缩 dp dp[i][j] 为第 i 行状态为 j 的总数 #include <cstdio> #include <cstdlib> #include <cmath ...

  5. HDOJ 1062 Text Reverse

    Text Reverse Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  6. javascript实现数据结构与算法系列:循环链表与双向链表

    循环链表(circular linked list) 是另一种形式的链式存储结构.它的特点是表中最后一个结点的指针域指向头结点,整个表形成一个环. 循环链表的操作和线性链表基本一致,仅有细微差别. w ...

  7. 【一】php 操作符

    1.php单引号和双引号的区别 单引号和双引号都能表示字符串,但是单引号不能识别里面带有转义字符'/'和变量的字符串,所以需要""去表示这种字符串.或者使用<<< ...

  8. Services学习(一)

    对于需要长期运行,例如播放音乐.长期和服务器的连接,即使已不是屏幕当前的activity仍需要运行的情况,采用服务方式.服务将通过API触发启动或者通过IPC(Interprocess Communi ...

  9. C# 比较方法

    public int Compare(Product first, Product second) { return PartialComparer.RefernceCompare(first, se ...

  10. 数据库(.udl)简单测试连接

    当我们烦于打开数据库进行连接的时候,我们可以用udl进行测试连接,并可以获得连接字符串. 1.新建一个txt文件,然后将后缀改成udl保存. 2.双击打开udl文件. 3.进行数据库连接测试. 4.用 ...