
NSU
南宮逸辰
喜欢听音乐,ACM旅途中
展开
-
NSU-1483-口袋的天空
将k个棉花糖看做k个点,然后求最小生成树,只取n-k个点出来即可。在取的过程中注意形成环的状况,可以用并查集进行避免。代码:#include#include#include#include#include#define MAX 1001using namespace std;struct node{ int pnt; int nxt; int cos原创 2013-03-04 20:24:44 · 487 阅读 · 0 评论 -
NSU-1241-麦森数
这个题是个高精度题,要求求2的k次方-1的后500位,不足的用0补,另外还要求计算2的k次方-1的位数。首先求位数可用公式进行计算,公式为n=k*log(10)2.0+1;然后写个高精度计算即可,最后只是需要注意换行的问题。这里分2种情况进行换行:1、当i%25==0的时候刚好是100位,因为每个数组我们存的4位。2、当i%25==12的时候,由1我们知道对于100的情况我们已原创 2013-02-27 12:06:32 · 1039 阅读 · 0 评论 -
NSU-1191-Compound Words
这个题大意就是说给你一系列单词,所给单词已经按照字典序排好。要求输出单词能由所给单词中2个单词拼成的单词,即对该单词分割为2部分,这2部分都作为独立的单词存在于所给的单词中。用二分查找即可以过~代码:#include#include#include#define MAX 120001using namespace std;char word[MAX][100];bool原创 2013-02-23 16:50:43 · 370 阅读 · 0 评论 -
NSU-1245-火星人
之前没做,现在重新看题发现其就是一个关于全排列的问题,显然根据题的数据量,直接暴力会超时,这就需要用数学方法进行解决。我们一只求一个序列的下一个比它大的序列应该为从最后一个向左找第一个相邻的左边小于右边的数,记为i,然后又重新从右边开始找第一个比当前数大的数记为j,然后交换ai和aj的值,最后再将ai+1直至最后一个数进行转置操作即可。代码:#include#include#inc原创 2013-04-12 11:47:32 · 508 阅读 · 0 评论 -
Nsu-1467-VIJOS-P1164
今天朋友问我,才做的~看了一下题发现是中国剩余定理,然后就做了~有一个地方需要特殊处理,就是找Mi的时候,我设定了一个上限,尽量大一点吧~代码:#include#include#includeusing namespace std;long long b[11],m[11],Mi[11],M[11];int main(){ int n; while(scan原创 2013-04-28 22:11:08 · 651 阅读 · 0 评论 -
VIJOS-P1404-遭遇战
这几天因为一些事情都没咋做题,今天本来想刷一道的,结果却在这个题上面费了半天。其实这个题以时间限制来说的嘛,n2的复杂度是可以过的,但是还是尽量的优化一些,最开始打算用线段树做,结果失败了,后来发现可以用优先队列做,然后就AC了~思路比较简单,直接放代码吧:代码:#include#include#include#include#include#includeusing原创 2013-05-04 04:27:02 · 1412 阅读 · 0 评论 -
VIJOS-P1401-复制CS
这个题只要注意取出重复区间就行了~我做的时候卡死在没有到巡视的最后就已经完成了全部的操作上面,唉,细节啊~代码:#include#include#include#includeusing namespace std;const int maxn=10001;struct node{ double l; double r; bool operator <原创 2013-05-04 14:25:11 · 711 阅读 · 0 评论 -
VIJOS-P1294-拯救OIBH总部
真的不想说这几天自己的状态, 一道不算难的DFS题却卡了我很久,到最后却发现自己写掉了DFS调用~囧~其实算法比较简单,从四周开始搜索就行了,也就是人为在四周加上一圈洪水~代码:#include#include#includeusing namespace std;const int maxn=510;int n,m,ans,movex[4]={0,1,-1,0},movey原创 2013-05-04 22:46:33 · 923 阅读 · 0 评论 -
NSU-1596-VIJOS-P1406
刚开始打算用DFS做,但是没想到特别好的剪枝方法,后来想到将图的进行编号然后重新构图,再加上一个编号为0的起点以及加一个汇点,然后用spfa求最短路径即可。需要注意的是加起点的时候需要把第一行所有的编号进行连边,对应的也需要对最后一行与汇点进行连边。代码:#include#include#include#includeusing namespace std;const int原创 2013-05-31 23:46:12 · 539 阅读 · 0 评论