自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 UVA 1149 - Bin Packing

贪心思想,排序后左右用两个变量从中间操作即可。#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#include <algorithm>#include <ctype.h>#include <iostream>#include <set>#include <map>#include <q

2015-06-29 20:25:07 682

原创 UVA 12627 - Erratic Expansion

一个红球可以分裂为3个红球和一个蓝球。 一个蓝球可以分裂为4个蓝球。分裂过程下图所示: 设当前状态为k1,下一状态为k2。 k1的第x行红球个数 * 2 ⇒ k2第2*x行的红球个数。 k1的第x行红球个数 ⇒ k2第2*x+1行的红球个数。特殊处理一下上下边界,递归求解就可以搞定了。#include <stdio.h>#include <string.h>#include <math.

2015-06-29 14:13:11 1115

原创 Codeforces Round #308 (Div. 2) A、B

552A - Vanya and Table 这题没什么好说的了,题目读懂了直接模拟就可以了。#include <stdio.h>#include <string.h>#include <algorithm>#include <iostream>using namespace std;int g[105][105];int gao(int x, int y, int xx, int y

2015-06-19 14:17:15 608

原创 UVA 11572 - Unique Snowflakes

输入一个长度为n(n <= 106)的序列A,找到一个尽量长的连续子序列AL~AR,使得该序列中没有相同得元素。 一开始用得map做的,用变量s存储子序列开始位置。 然后开始把map中每个出现的数字改为数字的下标。 然后从左到右枚举子序列结束位置i,当map[a[i]]的值不为零时,需要把map[s]~map[a[i]]的值改为0。然后才能继续向后扩展。 但是用map做的代码超时了,然后看了

2015-06-17 15:23:17 782

原创 UVA 11054 - Wine trading in Gergovia

把k个单位的酒从一个村庄运到相邻村庄需要k个单位的劳动力。 问最少需要多少劳动力可以满足所有村庄的需求? 由于所有位置的和一定为0,令最左端的位置为a1。 1、如果a1 > 0 那么a1买的酒一定需要经过a2才能到达,a2到a1需要的劳动力也就可以求出了,即:abs(a1)。 然后就把求a1到an需要的劳动力,转换为a2到an需要的劳动力 + abs(ai) 此时a2需要更新为a1 + a

2015-06-16 15:53:08 566

原创 UVA 11134 - Fabled Rooks

由于任意两个小车不能在同一行和同一列,那可以把行和列拆成一维来处理。这样就把问题转换为:把[1,n]中的每个数字填到每个区间里。假设有[1,6] [1,5] [1,7] 三个区间。 想一想1应该优先填到哪个区间里呢? 我们一定要把1填到区间[1,5]中,因为另外两个区间已经包含区间[1,5]。不会对后面的操作造成影响。对于[1,n]中的每个数贪心的策略是,尽量拿区间右端点小的那个即可。#incl

2015-06-16 12:22:59 576

原创 UVA 1605 - Building for UN

题意:输入一个数字n代表有n个国家,输出一种楼层排布,使得任意两个不同得国家都有一对相邻的格子(同层有公共边 或 相邻层同一位置)。并且自己国家的格子都是间接连通的。 此题答案不唯一,Special Judge。 其实仔细想想2层楼就够了,一层是每一行是一种国家,另一层是每一列是一种国家。#include <stdio.h>int main(){ int n; char ch

2015-06-16 08:58:23 781

原创 UVA 120 - Stacks of Flapjacks

输入一行数字,代表从上到下的饼的编号,现可以对第k张饼以上的编号整体翻转。问要如何操作使饼的编号为非递减序列。 此题是Special Judge,答案不唯一。 我的思路就是用两个数组,一个数组存读入的顺序编号,另一个存排序后的编号。 然后从后往前处理,当a[i] 不等于 b[i]的时候,有两种操作方式: 1、a[0] 等于 b[i],这种直接执行整体翻转第k张饼以上的编号即可。 2、a[0

2015-06-15 23:11:22 585

原创 读入一行由空格隔开的数字

当给你一行未知个数的数字时,需要读字符来处理,比较麻烦。 可以用C++封装的stringstream来处理的。#include <stdio.h>#include <iostream>#include <sstream>using namespace std;int main(){ int a[1005], cnt; string s; while(getline

2015-06-15 21:31:07 6290

原创 棋盘覆盖问题

#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#include <algorithm>#include <ctype.h>#include <iostream>#include <set>#include <map>#include <queue>#include <stack>

2015-06-15 20:48:06 582

原创 ACdream 1099 - 瑶瑶的第K大

快速排序思想,加一个优化就过了。#include <stdio.h>#include <algorithm>using namespace std;int a[1000005*5];int n, k;int ans = 0;void quicksort(int l, int r, int val){ if(l >= r) return ; int left = l, r

2015-06-13 16:36:40 720

原创 快速排序

每次选定轴值为区间第一个元素,最坏时间复杂度为O(N2)。#include <stdio.h>#include <algorithm>using namespace std;int a[10000];void quicksort(int l, int r){ if(l >= r) return; int left = l, right = r; int mid =

2015-06-13 15:26:03 510

原创 Codeforces Round #307 (Div. 2) A、B

551A - GukiZ and Contest 直接结构体排序即可,不多说了。#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#include <algorithm>#include <ctype.h>#include <iostream>#include <set>#include

2015-06-13 14:47:22 571

原创 UVA 12325 - Zombie's Treasure Chest

紫书P210 例题7-11。 此题分3种情况讨论: 1、S1很小,S2很大 直接枚举宝物2的个数0~N/S2。 2、S1很大,S2很小 直接枚举宝物1的个数0~N/S1。 3、S1很小,S2很小 当两种宝物体积相同时,比较S2*V1与S1*V2的大小,如果前者大,那应该优先拿前者。由此可得后者最多拿S1-1个。反之,前者最多拿S2-1个。#include <stdio.h>#incl

2015-06-01 20:47:16 595

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除