摘要:题意:求比给出的M大的循环数, 循环数,从位置0开始数arr[0]个数,然后再从位置i数arr[i]个数,最后回到起点解法:简单模拟/*ID: lsswxr1PROG: runroundLANG: C++*/#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define USACO#
阅读全文
摘要:题意:给定整数N,求出将集合[1...N]划分成两组,使得两组和相等的方案的个数解法: 直接枚举时间复杂度达不到要求。采用递推的方法,回忆经典的背包问题 f[i][v] = max{f[i - 1][v], f[i - 1][v - c[i]] + w[i]}即,第i个物品选或者不选,结合前i-1种物品的情况可以递推出所有的结果 将本题转换一下, 所有数的和为sum,那么每一组的和必为sum /2 (如果sum是偶数),问题就是:在[1...N]的集合中找到数字之和 为sum /2 的方案个数, 状态变量: f[i][sum] 在[1...i]集合中和为sum的方案的...
阅读全文
摘要:题意:给定整数N, 采用罗马数字的方式表达,统计每个罗马字符的个数,从小到大输出解法:枚举,统计每一个数字的字符数,然后输出/*ID: lsswxr1PROG: prefaceLANG: C++*/#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define USACO#ifdef
阅读全文
摘要:题意:给出N, b, D。找到N个数字,使得两两之间的汉明距离(Hamming distance)大于等于D,每个编码的位数为b输出要求,每行十个数,且保证数字在b进制下值最小解法:枚举,从1开始(必须包含0),主要是位运算,参考nocow/*ID: lsswxr1PROG: hammingLANG: C++*/#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include
阅读全文
摘要:题意:给奶牛喂营养素,一共有V种维生素需求,然后有G勺喂养(每勺只喂一次),并给出每勺喂养所获得的对应维生素量,给出至少V种维生素所要达到的需求,求出最少的勺数,如果勺子数相同,勺子编号尽量小解法: 一共G勺(G#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define USACO#ifdef..
阅读全文
摘要:IOI经典题目题意:交换排序的方式,如何以最少的次数使得目标序列有序解法:本题目中数字都来自集合{1, 2, 3},将序列排序,统计1, 2, 3的个数,标记为num1, num2, num3统计num1段中2,3的个数,num2段中1,3的个数,num3段中1,2的个数,分别标记为a2,a3,b1,b3,c1,c2对应的pair只需要交换一次就有序分别需要min(a2,b1) min(a3, c1)...等再统计剩余数组中不在本身位置上的个数y,总的个数就是3段pair可交换数之和,以及加上y * 2 / 3/*ID: lsswxr1PROG: sort3LANG: C++*/#includ
阅读全文
摘要:题意:给定正整数N,输出分母小于等于N的“既约真分数”(就是分子分母互质的数)解法:没发现跟graph有什么关系。。后面的分析上给出的求解既约真分数的方法bool rprime(int a, int b){ int r = a % b; while(r != 0){ a = b; b = r; r = a % b; } return(b == 1);}/*ID: lsswxr1PROG: frac1LANG: C++*/#include #include #include #include #include #include #include...
阅读全文
摘要:IOI经典原题题意:一幅城堡中的各个房间,东西南北四个方向都可能会有,没有墙的话视为连通,求解有多少个连通分量,最大房间的大小是多少,同时,如果移除一个墙,最大的房间面积是多少,移除墙的位置在哪儿。注意,移除墙的顺序为自南往北,先北面的墙再东面的墙(题意理解上比较麻烦的地方)2.1的TEXT中讲到了flood fill算法,结合DFS和BFS的基本搜索方法对于本题,先DFS求出所有的连通分量,然后按照题目的要求,顺序搜索移除的墙的位置,得到最优解(官方的解题思路类似)提交了3次。。/*ID: lsswxr1PROG: castleLANG: C++*/#include #include #in
阅读全文