今天做的是湖南省2010年省赛题,悲催的只出了四题...今年省赛堪忧!

先做Codeforce去了...

A:汽水瓶

有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可
以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶
子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满
的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?

推算一下会发现最后的答案是n/2。

#include <stdio.h>int main()
{//freopen("a.in", "r", stdin);//freopen("A.out", "w", stdout);int n;while(scanf("%d", &n), n){printf("%d\n", n / 2);}return 0;
}

B:弟弟的作业

你的弟弟刚做完了“100以内数的加减法”这部分的作业,请你帮他检查一下。每道题目(包括弟弟的答案)
的格式为a+b=c或者a-b=c,其中a和b是作业中给出的,均为不超过100的非负整数;c是弟弟算出的答案,
可能是不超过200的非负整数,也可能是单个字符"?",表示他不会算。输出答对的数目

巨水的一道题,我居然小卡了一下!!!看到标程后表示跪了!

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char s1, s2, s5[5];
int a, b, c;
char s[20];
int main()
{int cnt = 0;while(scanf("%d%c%d%c%s", &a, &s1, &b, &s2, s5) != EOF){if(s5[0] == '?') continue;int t = 1;c = 0;for(int i = strlen(s5) - 1; i >= 0; i --){c += t * (s5[i] - '0');t *= 10;}if(s1 == '-'){if(a - b == c)cnt ++;}if(s1 == '+'){if(a + b == c)cnt ++;}}printf("%d\n", cnt);return 0;
}

标程:

#include<stdio.h>
int main() {char s[99];int a, b, c, n = 0;while(scanf("%s", &s) == 1) {if(sscanf(s, "%d+%d=%d", &a, &b, &c) == 3 && a+b==c) n++;if(sscanf(s, "%d-%d=%d", &a, &b, &c) == 3 && a-b==c) n++;}printf("%d\n", n);return 0;
}

不愧是刘汝佳大神啊!

C:数字整除

定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的5倍。当且仅当差是17的
倍数时,原数也是17的倍数。

输入一个10^100次方以内的数,判断能不能被17整除。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
const int MAXN = 110;
char str[MAXN];int main()
{while(scanf("%s", &str) != EOF){if(str[0] == '0') break;int ret;int len = strlen(str);if(len == 1){int d = str[len - 1] - '0';if(d % 17) puts("0");else puts("1");continue;}else if(len == 2){int d = str[1] - '0' + 10 * (str[0] - '0');if(d % 17) puts("0");else puts("1");continue;}int i;for(i = len - 1; i >= 2;){int d = str[i] - '0';int t = 0;t += (str[i - 1] - '0');t += (str[i - 2] - '0') * 10;while(t < d * 5){t += 17;}t -= 5 * d;str[i - 2] = t / 10 + '0';str[i - 1] = t % 10 + '0';i --;}int d = str[1] - '0' + 10 * (str[0] - '0');if(d % 17) puts("0");else puts("1");}return 0;
}

标程又深深打击了我:

#include<stdio.h>
#include<string.h>
int main() {char s[200];while(scanf("%s", &s) == 1) {if(!strcmp(s, "0")) break;int m = 0;for(int i = 0; i < strlen(s); i++)m = (m*10+s[i]-'0')%17;printf("%d\n", m==0?1:0);}return 0;
}

D:台球碰撞

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
double L, W, x, y, R, a, v, s;
const double PI = asin(1) * 2;int main()
{freopen("d.in", "r", stdin);freopen("D.out", "w", stdout);while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf", &L, &W, &x, &y, &R, &a, &v, &s) != EOF){if(L + W + x + y + R + a + v + s < 1e-8) break;L -= (2 * R), W -= (2 * R), x -= R, y -= R;double sum = v * s;double dx = cos(a / 180.0 * PI) * sum;double dy = sin(a / 180.0 * PI) * sum;dx = fmod(fmod(dx, L * 2) + L * 2, L * 2);dy = fmod(fmod(dy, W * 2) + W * 2, W * 2);dx += x, dy += y;if(dx <= L);else if(dx <= L * 2) dx = 2 * L - dx;else dx -= 2 * L;if(dy <= W);else if(dy <= W * 2) dy = 2 * W - dy;else dy -= 2 * W;printf("%.2f %.2f\n", dx + R, dy + R);}return 0;
}

E:内部收益率

解这个方程求IRR,二分就可以了,比赛的时候一点都没想到,我真弱!我推出来的IRR的范围大致是-1到100之间,因为数据比较小,拍过了!

#include <stdio.h>
#include <string.h>
#include <stdlib.h>int n, a[15];
int main()
{freopen("e.in", "r", stdin);freopen("es.out", "w", stdout);while(scanf("%d", &n), n){for(int i = 0; i <= n; i ++){scanf("%d", &a[i]);}double l = -1.0, r = 100, m;for(int i = 0; i < 100; i ++){m = l + (r - l) / 2;double x = 1.0, sum = 0.0;for(int j = 1; j <= n; j ++){x /= (1 + m);sum += a[j] * x;}if(sum < -a[0]) r = m;else l = m;}printf("%.2f\n", m);}return 0;
}

F:

G Repairing a Road

这道题如果没有修一条路这个条件就是普通的单源最短路径的题,直接上dijkstra就能解决。但是加上了修路这个条件之后题目就变难了不少。大致题意是这样,

无向图, C个点,R条边,每条边连接两个点u,v,修路之前通过这条边的时间是vt,被修过的路通过的时间就变成了vt * at的-t次方,每条边的at都是给定的,

t为这条路被修的时间,这里也是本题的难点,你从离开源点1就可以叫你的朋友修路, 修路过程中不可以通过,但是假如你到了a点,你可以选择在a点等待时间t1然

后通过,此时修路的时间是t + t1,你经过这条边的时间就是t1 + vt * at的-(t + t1)次方,这里让我不知道怎么做。而且我的主体思路有问题,我先用dij做了

一遍最短路,然后从枚举每条边,假设起点是i,这里t就是d[1][i],在求一个t使得通过该条边的时间最短,看上去貌似没什么错误,但是每次枚举一条边都得做一次

最短路,而且最终结果还不对。正解是floyd求一遍任意两点间的最短路,然后枚举两点i,j,两点如果存在vt的话,证明他们之间有一条边,这样从1到C的最短路就

是d[1][i] + d[j][C] + 通过这条边的时间,前面两个是定值了,然后t=d[1][i]无误,求t1或者说求通过这条边的时间用了逼近最小值的方法,这里之前不会,不过

好在现在会了。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <algorithm>
using namespace std;
const int MAXR = 550;
const int MAXN = 110;
const double eps = 1e-6;
const double INF = 10000000.0;
int C, R;
double d[MAXN][MAXN], vt[MAXN][MAXN], at[MAXN][MAXN];void ReadGraph()
{for(int i = 1; i <= C; i ++){for(int j = 1; j <= C; j ++){if(i != j)d[i][j] = INF;elsed[i][j] = 0.0;vt[i][j] = INF;}}while(R --){int a, b;double vc, ac;scanf("%d%d%lf%lf", &a, &b, &vc, &ac);d[a][b] = d[b][a] = vc;vt[a][b] = vt[b][a] = vc;at[a][b] = at[b][a] = ac;}
}void floyd()
{for(int k = 1; k <= C; k ++)for(int i = 1; i <= C; i ++)for(int j = 1; j <= C; j ++)d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
}double calc()
{double ans = d[1][C];for(int i = 1; i <= C; i ++){for(int j = 1; j <= C; j ++){if(i == j || vt[i][j] == INF) continue;double low = 0.0, high = 10.0;double t = d[1][i];while(high - low > eps){double l = (2.0 * low + high) / 3.0;double r = (2.0 * high + low) / 3.0;//逐渐接近最小值double res1 = l + vt[i][j] * pow(at[i][j], -(l + t));double res2 = r + vt[i][j] * pow(at[i][j], -(t + r));if(res1 < res2)high = r;else low = l;ans = min(ans, min(res1, res2) + d[1][i] + d[j][C]);}}}return ans;
}int main()
{while(scanf("%d%d", &C, &R), C + R){ReadGraph();floyd();printf("%.3f\n", calc());}return 0;
}

转载于:https://www.cnblogs.com/Yu2012/archive/2012/10/07/2714634.html

国庆七天乐 Day7相关推荐

  1. 国庆七天乐,要猛! ——经典迷宫问题

    目录 前言 思路 一.先创建迷宫 代码演示 输出效果为 二.在方法中使用递归回溯思想解决鼠鼠出迷宫 演示 三.代码 + 结果演示 输出结果 四.更改路线后再次尝试 五.测试回溯现象 总结 前言 迷宫题 ...

  2. 国庆七天乐,写博也快乐之小程序个人中心精美样式分享(登录、天气功能、天气动态背景变换、iconfont阿里巴巴、个人中心代码演示)

    hello,大家国庆快乐~今天是国庆节第三天啦,你有好好学习吗?

  3. 国庆七天乐——第一天

    20171001 所学内容:分治倍增,搜索模拟,位运算+考试 [时间复杂度] 表示运行时间的增长趋势 T(N)=T(N/2)+O(1)  二分查找 T(N)=2*T(N/2)+O(1) 线段树的节点个 ...

  4. 国庆七天乐 Day5

    今天做的是第五届河南省省赛,我挫到爆了,只出了三题,都是水题,个人赛垫底. 先总结一下,今天写最水的A题居然WA了两次,关键是调了半个小时,浪费了不少时间,也影响了心情.然后做的是同样水的 F题,还好 ...

  5. 国庆七天乐——第三天

    2017102 [[动态规划]] [基础内容] 状态设计:往往是观察在搜索过程中需要用到的参数,所表 示的含义往往是"最大"."最小"."方案总数&q ...

  6. 国庆七天乐,写博也快乐之微信小程序天气预报+根据天气自动变换背景图实战(使用和风天气API)

    hello,大家好,这里是X大魔王,先提前祝各位国庆节快乐

  7. 【20191001】国庆七天长假安排

    [20191001]国庆七天长假安排 1. 作息时间表 2. 七天目标 (1)学习:将 Androi Audio 模块 从上层Java apk 到 kernel底层硬件 整个流程学懂 (2)锻炼:全身 ...

  8. 国庆七天假期就剩下最后一天了

    国庆七天假期就剩下最后一天了,抽空赶一下代码.原计划假期可以多花点时间优化一下框架代码,最终只完成了一小半,虽然有些遗憾,但是相对这个假期的收获,还是非常值得. 回顾整个假期,有几点收获: 一个人用心 ...

  9. 【2018 国庆雅礼 NOIP 培训】OI七天乐

    DAY 0 早上专门去了趟学校陪某人跑了八百决赛,第六还行,浪了一会儿见了pushinl一块吃了饭然后开车去运城,睡了一觉起来就到了qwq,在关公机场坐了一会儿登机去长沙,睡了一会儿起来吃了点东西聊了 ...

最新文章

  1. 学计算机的要做文档吗,我是如何学习计算机编程的
  2. jsonpath的用法
  3. python字符串与文本处理技巧(3):字符剔除、字符对齐、字符拼接、字符插入变量
  4. DNS实现域名负载均衡
  5. python socket 多人聊天室
  6. linux sd卡 读写速度测试_铠侠(原东芝存储)SD卡,大容量存储时代,高速读写选择...
  7. 信息学奥赛一本通 1982:【19CSPJ普及组】数字游戏
  8. 开源在线考试系统推荐-支持web端和小程序
  9. 我扒了 6730 个微信用户数据,得出了这些结论......
  10. ? extends T 与 ? super T
  11. 智能优化算法:秃鹰搜索算法 -附代码
  12. Linux里面输入错误无法使用Backspace键
  13. java 实现linux进度条,Linux实现的进度条一(基本知识学习和简单功能)
  14. 【Qt开发】QThread中的互斥、读写锁、信号量、条件变量
  15. 华为笔记本换装linux双系统,matebook的win+ubuntu双系统安装方法
  16. 京东月薪45k的AI算法工程师,需要具备怎样的技能?
  17. 抖音运营:抖音直播运营入门
  18. 非梯度类启发式搜索算法:Nelder Mead
  19. 三星存储新品首销情况揭秘
  20. 深入理解nvme协议之二:nvme 协议重点数据结构之间的关系

热门文章

  1. 无法打开登录所请求的数据库 sa。登录失败。 用户 sa 登录失败。
  2. React Native 交互管理器InteractionManager
  3. Etcd服务发现原理
  4. 2021年6月20日 是第111个父亲节,祝福所有的父亲节日快乐
  5. 500并发相当于多少人_linux开发技术之线程池accept处理高并发connect(含源码)
  6. 农村70后、80后、90后的儿时玩具有哪些?
  7. 注意力是非常宝贵的资源
  8. 如何给namedtuple添加docstring
  9. 华为和荣耀蓝牙耳机为什么那么贵?
  10. Golang学习 - sync 包