SGU
文章平均质量分 52
流風回雪_YZK
只盼来日登蜀道..
展开
-
SGU 105 数学找规律
观察一下序列,每3个数一组,第一个数余1,不能,加第二个数后整除(第二个数本身余2),第三数恰整除。一行代码的事。011011011.... #include using namespace std; int main() { int n; while(cin>>n) { cout<<n/3*2+(n%3==2?1:0)<<endl; }原创 2014-03-29 11:23:58 · 663 阅读 · 0 评论 -
sgu 102模拟欧拉函数
感觉自己弱爆了,做做SGU吧。。。 #include #include //欧拉函数 using namespace std; int euler(int n) { int m=n; int ans=n; for(int i=2;i<=sqrt(n*1.0);i++) //注意等于号, { if(m%i==0) {原创 2014-03-29 11:20:08 · 682 阅读 · 0 评论 -
SGU101 求有重边的无向图欧拉迹
题意:好多木棒,俩端有数字(0--6)标记,按数字相同的端首尾相连成一条直线(木棒可以相同)。即求有重边的无向图欧拉迹。 先判定是否为欧拉图,俩个条件,不说了。如果是欧拉图,输出路经。 方法:dfs遍历边,回溯时候记录边,遍历过了就标记“双向边”. 那么所记录的恰好是一条逆欧拉迹。不可以前进的时候标记,原因:有可能一笔画失败,导致边不连续, 而回溯的时候记录,原因较复杂,大致证明如下:原创 2014-03-30 22:26:44 · 944 阅读 · 0 评论 -
SGU 107 数学题
题意:求平方后末尾9个数是987654321的数个数。 之前做此题,竟然愚蠢到用计算器 在哪里算,还加笔算,SB啊!不知道先打印一下吗! #include #include using namespace std; int main() { /* for(long long i=100000;i<999999999;i++) { if(i*i%100000原创 2014-03-31 12:28:36 · 641 阅读 · 0 评论 -
SGU 106 在区间范围内的线性方程解个数
题意:求解方程ax+by+c=0,在区间x1->x2和y1->y2的解的个数。看似简单,真心a的不容易啊! 开始跪于第8组数据,原因是没用long long !后来改了,跪于12组,超时,于是,换方法,求出x的解,对应到y ,然后算在y1,y2的解有几个(不要用枚举法,算有几个就行)。竟然又跪于第4组数据!!哎,弱爆了。 才发现,x对应过去的y,x递增,y未必也递增,也未必递减啊!! 做线原创 2014-04-01 12:04:35 · 733 阅读 · 0 评论 -
SGU112
题意:求a^b-b^a次,100以内。大数的-和*的模拟,用的模板,注意该模板中间和结果都不能出现负数。 #include #include using namespace std; const int ten[4]={1,10,100,1000}; const int maxl=1000; struct bignum { int d[maxl]; bignum(string原创 2014-04-03 09:18:12 · 802 阅读 · 0 评论 -
SGU103+POJ 1158 最短路/dp
题意:一个无向图,求起点到终点最少时间,限制:每个路口有灯,要灯颜色一样才能过去,灯之有俩种颜色,周期 变化,给定每个灯初态,时间。 思路:开始就想到直接DP,方程dp[k]=dp[i]+distance[i][k]+waittime(i,k),于是天真得BFS敲了这个, SB啊!有些点松弛了,之后它又被松弛,它便还可以松弛别人啊!否则世界上最短路O(n)的算法就诞生了! 所以,一旦某个点原创 2014-04-04 17:41:56 · 875 阅读 · 0 评论 -
SGU104 二维dp
大致题意: n个东西放在(1.2.3.。。m)个容器中,先放的必需在后方的左边。a[i][j]表示i号物品放在j容器所得 的价值,求最大价值。 几乎是刚刚开始接触动态规划题,开始我这样想 每个东西一件一件放,dp[k]表放k物品时候已经到达最大值 dp[k]=dp[k-1]+max(放k物品所得到最大值),这样想想不行,如果现在放最大值未必最大啊。 百度一下,发现别人用二维数组,我马上想想原创 2014-04-04 20:24:11 · 817 阅读 · 0 评论