- 博客(30)
- 收藏
- 关注
原创 这里是数学和算法爱好者的部落格
博主是来自通信工程专业和数学专业的两名算法爱好者。 本科课程尚未读完,自知才疏学浅,还请各位多多指教。 O(∩_∩)O谢谢啦
2015-09-04 18:31:41 310
原创 USACO 2.3.5 Controlling Companies
根据当前【股份关系】更新【所属关系】无更新:算法结束有更新:再由最新的【所属关系】维护新的【股份关系】重回第一步#include #include #include #include #include //#define LOCALusing namespace std;#ifdef LOCALofstream fo
2015-10-05 00:10:59 412
原创 USACO 2.3.4 Money Systems
注意状态的定义与转移#include #include #include #define LL long long//#define LOCALusing namespace std;#ifdef LOCALofstream fout ("out.txt");ifstream fin ("in.txt");#elseofstream fout ("money.o
2015-10-04 22:35:36 390
原创 USACO 2.3.3 Zero Sum
DFS重点是路径记录问题内存允许的情况下可以用数组还有一个方法三进制枚举路径然后一个一个进行可行性检查#include #include #include //#define LOCALusing namespace std;#ifdef LOCALofstream fout ("out.txt");ifstream fin ("in.txt");#el
2015-10-02 23:47:47 451
原创 USACO 2.3.2 Cow Pedigrees
DP问题 注意状态定义以及转移方式#include #include #include #define MOD 9901//#define LOCALusing namespace std;#ifdef LOCALofstream fout ("out.txt");ifstream fin ("in.txt");#elseofstream fout ("nocows.
2015-10-02 12:42:30 335
原创 USACO 2.3.1 Longest Prefix
动态规划思路:dp[j]为1则dp[i]为1 (j #include #include #include #include #include //#define LOCALusing namespace std;#ifdef LOCALofstream fout ("out.txt");ifstream fin ("in.txt");#elseofstr
2015-10-01 22:59:17 318
原创 USACO 2.2.4 Party Lamps
注意有状态重复,所以实际需要统计的状态并不多以及有效按钮数#include #include #include #include //#define LOCALusing namespace std;#ifdef LOCALofstream fout ("out.txt");ifstream fin ("in.txt");#elseofstream fout ("l
2015-10-01 14:07:37 337
原创 USACO 2.2.3 Runaround Numbers
暴力枚举+模拟验证,注意判断条件#include #include #include #include #include #define LL long long//#define LOCALusing namespace std;#ifdef LOCALofstream fout ("out.txt");ifstream fin ("in.txt");#els
2015-09-29 23:29:27 393
原创 (USACO 2.2.1) Preface Numbering
按位观察即可#include #include #include //#define LOCALusing namespace std;#ifdef LOCALofstream fout ("out.txt");ifstream fin ("in.txt");#elseofstream fout ("preface.out");ifstream fin ("prefac
2015-09-28 15:05:02 415
原创 Healthy Holsteins(USACO 2.1.4)
暴力枚举,使用bitset优化bitset在此处用作枚举状态空间#include #include #include #include using namespace std;#ifdef LOCALofstream fout ("out.txt");ifstream fin ("in.txt");#elseofstream fout ("holstein.o
2015-09-25 20:34:37 400
原创 Largest Point(2015年吉林网络赛)
思路:所求多项式由两项相加贪心思路:每项尽可能大扫描集合元素统计其最大值可能会出现两项取相同的数时值最大所以需要统计次大值和所取元素的位置标记重合时替换其中一个为次大值替换方案有两种,取较大的即可#include #include #include #define LL long long#define MIN (-1e18-1)using
2015-09-19 23:05:43 530
原创 Jesus Is Here(2015年吉林网络赛)
思路:简化方法:对'c'一个字母考虑即可动态规划需维护元素:原序列的长度cnt1原序列的距离和res1原序列的'c'数目numc1原序列所有'c'距第一个'c'的距离和dis_beg1原序列所有'c'距最后一个'c'的距离和dis_end1以上所有元素需维护两套(两个材料序列)转移思路:temp_res = (res1
2015-09-19 22:00:14 654
原创 Minimum Cut(2015年吉林网络赛)
思路:贪心结论:切出一个点的合格切法一定符合最小原则证明:加入当前方法切出n个结点,则切掉的树边两头的节点之一进行切除可小化数目根据此结论,可以对结点进行遍历维护最小值。为保证切除且仅切除一条树边,通过遍历树边的两个端点即可。遍历时检查每个结点的树边数量与非树边的图边数量#include #include #include #include #d
2015-09-19 21:41:25 470
原创 Alisha’s Party
模拟,认真理解题意#include #include #include #define MAXN 150010#define SCI(i) scanf("%d", &i)using namespace std;struct Node{ char name[210]; int v; int id; bool operator <(const No
2015-09-18 20:48:31 468
原创 Sorting a Three-Valued Sequence(USACO 2.1.3)
利用原数组与目标数组的差异性#include #include #include #include #define FOR(fi) for(int i = 0; i < (fi); i++)//#define LOCAL#define MAXN 1010using namespace std;#ifdef LOCALofstream fout ("out.txt");
2015-09-18 19:56:15 381
原创 Ordered Fractions(USACO 2.1.2)
筛选法求素数的思想#include #include #include #include #define EPS 1e-9//#define LOCALusing namespace std;#ifdef LOCALofstream fout ("out.txt");ifstream fin ("in.txt");#elseofstream fout ("frac1.
2015-09-18 14:27:48 357
原创 The Castle(USACO 2.1.1)
图的遍历,注意对边的处理,以及要合理地使用类#include #include #include //#define LOCAL#define MAXN 2510using namespace std;#ifdef LOCALofstream fout ("out.txt");ifstream fin ("in.txt");#elseofstream fout ("
2015-09-18 13:53:39 347
原创 POJ 2991
题意: 直角坐标系上有N条相连线段(序号分别为1,2,3...N) 最底层线段的起点为原点每条线段的初始放置状态平行于y轴方向 输入每个线段的长度,以及对序号i线段进行的操作角度aa的含义为使i与i+1之间角度为a 输出进行给定操作后线段端点的坐标。 思路: 每次对序号i转动改变的是编号为 1到i 以及 i+1到N两个线段集合的位置关系,需要
2015-09-12 15:46:48 410
原创 POJ 1064(二分)
给定N条网线原材料 (正整数N属于[1, 10^4])给定每条网线材料的长度(浮点数类型,属于[1, 10^8])(将于原材料裁剪即可得到网线)K为所需的网线数量 (正整数K属于[1, 10^4]),且需保证每条长度相等输出最长长度。思路:解的值域为(0, the min length of all]二分+验证#include #i
2015-09-08 19:11:58 343
原创 POJ 3061 (二分找值)
一个由N个正整数组成的序列 // 10 其中每个数小于或等于10000给定一个正整数 S // S 找到一个长度最小的连续子序列,使各个元素之和不小于S输出此子序列长度#include #include #include using namespace std;int integer[100010];int num_integer;in
2015-09-08 19:08:32 370
原创 POJ 2456 (二分找值)
题意:给定num_place([2, 10^5])个牛栏每个牛栏的位置为xi([0, 10^9])有num_cow([2, num_place])个牛需安排在牛栏里,求安排后牛之间最小值的最大值。思路:值域在[0, 10^9]之间,最优值为可以容纳下的方案的最大值可用二分枚举+验证缩小值域直至得出结果。#include #include
2015-09-08 19:05:23 376
原创 POJ 1328
题意:一个直角坐标系,x轴上方有N个点。现要求画若干个圆心在x轴上,半径为R的圆,将N个点包含(内部或边界)输入最小的圆的数量。不存在则输出-1 思路:对于每个点分析,如纵坐标大于R则不存在可行方案否则在x轴上存在一区间上所有点皆符合条件(点间距小于或等于R) 子问题:线性区间选点给定n个区间,要求选若干个点,保证每个区间内都有点被选,输出点的最小数目
2015-09-05 21:29:07 361
原创 POJ 2376 Cleaning Shifts (区间覆盖)
给定n个区间,要求选出若干个来完整地覆盖0~T输入使用区间最小的数目贪心思想:每次选择可以覆盖到“开头”且右边界最靠右的点编写方法:加上排序和边界修正可较小编写代码的难度 贪心思想的证明:假设选取了区间a1, a2, a3, a4, a5,a6来完成覆盖任务另有区间b可以覆盖到a3的“开头”且右边界比a3靠右,则可以将a3替换为b,不会增加区间数量。
2015-09-05 16:31:32 411
原创 GCJ 2008 APAC local onsites C(Millionaire) (dp+离散化)
题意: 刚开始持有x元钱将进行M轮赌博每轮赢得概率为P赢则赌注翻倍,输则赌注全无问最优策略下赚得1000000元钱(或以上)的概率。 思路: 搜索: double chance(int cengshu, int money){ if(cengshu== M ){ if(money>=1000000)
2015-09-05 14:48:12 1138
原创 GCJ 2009 Round 1C C (Bribe the Prisoners)
题意: 有P个相邻的牢房(序号1,2,…,P),每个牢房中关押着犯人一名现在要释放Q个牢房中的犯人(序号给出),释放后牢房为空每次释放一名时需要依次向左向右给其他牢房犯人每人一枚金币直到遇到空牢房为止 可以按照任何顺序释放犯人,输出所需最小金币数。 思路:为方便理解,预处理出序号为0和序号为P+1的空牢房。可以想到,如若释放了序号i(0 故可以用动态
2015-09-04 18:20:11 812
原创 GCJ 2009 Round2 A (Crazy Rows)
题意:给定一个N*N矩阵,每次可以对矩阵进行一次换行操作(只能交换相邻行),求至少多少次操作可以将其转化为上三角矩阵(主对角线上方都是0的矩阵) 抽象可得:定义tail[i] (1通过一定的相邻行交换操作使tail[i]满足 tail[i] 思路:假设有tail[m]不满足条件A,则此行对于任意tail[i] (i 由于对tail[m]的操作需向下交换
2015-09-04 16:17:31 376
原创 GCJ 2008 Round1AA
题意: 两个集合1 {x1,x2,x3…xn }2 {y1,y2,y3…yn} 将两个集合元素排序成两个序列定义集合内积为两个序列对应元素的乘积和求一个排序方案使得内积和最小,输出最小内积和。 思路:对内积和起作用的仅为元素对的匹配,而与每个序列自己的相对位置无关,故可以先将其中一个顺序确定,为了方便讨论,将其中一个按升序排列
2015-09-03 18:26:44 611
原创 POJ No.3169 Layout
将已知条件抽象:d[i+1] + 0 >= d[i]d[AL]+DL >= d[BL]d[BD]+(-DD) >= d[AD] 问题为:满足以上诸多条件的情况下,求出d[n] – d[1]的最大值。即求d[1]+ MAX>=d[n] 中MAX的值。 分析: 1)d[i]+x >= d[j] d[k]+y>= d[i] 则有d[k]+(x+y
2015-09-03 16:20:36 442
原创 UVA No.10006 Carmichael Numbers
思路:预处理素数判断表+快速幂求模#include #include #define LL long longint is_prime[65010];void init_table() // prepare the table for judging prime{ memset(is_prime, 1, sizeof(is_prime)); is_prime[0] = 0
2015-09-02 16:23:02 485
原创 POJ 3723
思路: 最小生成树算法统计绝对值最大权重和#include #include #include using namespace std;int tree[20010];int num_boy, num_girl, num_cost;struct link{ int ID_boy; int ID_girl; int cost;};link l[50050]
2015-09-02 15:26:58 455
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人