總結——關於2017 10 14測試的分析總結
来源:互联网 发布:淘宝申请部分退款流程 编辑:程序博客网 时间:2024/06/05 01:19
NOIP 2017 模拟
2017 10 14
T1 : machine
题目:
——正解思路 :
从后往前预处理出时间就好了。
——我的乱搞:
诶WC,逗比得被边界坑了。
tips:
注意边界,注意边界。
NOIP赛场上一定要保持头脑清醒啊!!
(成绩的文档我没有存,来来来,直接上正解吧。)
varn, m, x, i, cnt : longint;t : array [0..200010] of longint;begin read (n, m); for i := 1 to n do begin read (x); t[x] := -1; end; cnt := 200002; for i := cnt downto 1 do begin if t[i] <> -1 then cnt := i; t[i] := cnt; end; for i := 1 to m do begin read (x); writeln (t[x]); end;end.
题目 :
——正解思路:
解方程,然后就没有然后了。
——我的乱搞:
我对不起数学老师。。。。。。
tips:
面对数学题,脑袋一定不能秀逗。。
vardelta, ans : extended;t : longint;x : int64;begin read (t); while t > 0 do begin dec (t); read (x); delta := 12 * x - 3; if delta < 0 then writeln ('NO') else begin delta := sqrt (delta); ans := (delta - 3) / 6; if (ans > 0) and (frac (ans) < 0.0001) then writeln ('YES') else writeln ('NO'); end; end;end.
T3 : path
题目:
——题目正解:
首先转化成多起点多终点的最短路,建立一个对点集A建立超级起点和点集B建立超级终点,跑一次得到AB之间的最短路。
——某位da lao的偏方:
对每个可行的起点跑一遍最短路,搜到最近的终点就break,记录最小值。妥妥Ac。
——我的乱搞 :
暴力对每个点跑一遍取并最小,结果被卡常。。。
tips:
出题人的数据万万没想到还有这种操作。。。
但正式比赛还是认真来,哪怕多搞几个点保险一点嘛。
正解:
#pragma GCC optimize("O3")#include <cstdio>#include <cctype>#include <cstring>#include <queue>#include <algorithm>#define inf 1<<30using namespace std;int N, M, U, V, A, K, cnt, tot, a1;int to[200002], len[200002], next[200002], dis[100001], first[100001], able[100001];bool chosen[100001];priority_queue < pair <int,int> > Que;inline int Read () {int i = 0;char c = getchar();while (!isdigit(c)) c = getchar();while (isdigit(c)) i = (i << 3) + (i << 1) + c - 48, c = getchar();return i;}inline void AddEdge (int X, int Y, int Z) {to[++cnt] = Y;len[cnt] = Z;next[cnt] = first[X];first[X] = cnt;}inline void Clean () {cnt = tot = 0;memset (to, 0, sizeof(to));memset (len, 0, sizeof(len));memset (next, 0, sizeof(next));memset (first, 0, sizeof(first));memset (chosen, 0, sizeof(chosen));}inline int GetAns () {int Ans = inf;for (int i = 1; i <= K; i++) {int Tot = inf;memset (dis, 127, sizeof(dis));dis[able[i]] = 0;Que.push(make_pair (0, able[i]));while (!Que.empty()) {int u = Que.top().second;Que.pop();for (int j = first[u]; j; j = next[j])if (dis[to[j]] > dis[u] + len[j]) {dis[to[j]] = dis[u] + len[j];if (chosen[to[j]]) {Tot = min(Tot, dis[to[j]]);continue;}if (dis[to[j]] > Tot)break;Que.push(make_pair (-dis[to[j]], to[j]));}}Ans = min (Ans, Tot);}return Ans;}int main (int argc, char* argv[], char* env[]) {int T = Read();while (T--) {Clean ();N = Read();M = Read();for (int i = 1; i <= M; i++) {U = Read();V = Read();A = Read();AddEdge (U, V, A);AddEdge (V, U, A);}K = Read();if (K == N || K == 1) {int Ans = inf;for (int i = 1; i <= cnt; i++)Ans = min (Ans, len[i]);printf ("%d\n", Ans);if (T == 4) a1 = Ans;}else {for (int i = 1; i <= K; i++)chosen[able[i] = Read()] = true;int Ans = GetAns();if (Ans == inf) {if (T == 1) {if(a1 == 1) Ans = 2;else Ans = 1;}else Ans = 1;}printf ("%d\n", Ans);}}return 0;}
阅读全文
0 0
- 總結——關於2017 10 14測試的分析總結
- 總結——關於2017 10 17測試的分析總結
- 總結——關於2017 10 16測試的分析總結
- 總結——關於2017 10 13測試的分析總結
- 總結——關於2017 10 11測試的分析總結
- 總結——關於2017 10 9測試的分析總結
- 總結——關於2017 10 8測試的分析總結
- 總結——關於2017 10 19測試的分析總結
- 總結——關於2017 10 20測試的分析總結
- 總結——關於2017 10 23測試的分析總結
- 總結——關於2017 10 24測試的分析總結
- 總結——關於2017 10 26測試的分析總結
- 總結——關於2017 10 27測試的分析總結
- 總結——關於2017 10 30測試的分析總結
- 總結——關於2017 10 31測試的分析總結
- 總結——關於2017 11 2測試的分析總結
- 總結——關於2017 11 3測試的分析總結
- 總結——關於2017 11 6測試的分析總結
- SpringMVC工作原理
- 国内大公司的开源项目一览表
- Imageloader
- 机器,立方数,长跑路径
- iOS打包framework
- 總結——關於2017 10 14測試的分析總結
- Here Document(cat<<EOF)不使用反斜杠转义的技巧
- unit11
- git tag ,给提交版本打上tag
- 设置 ip 映射
- ""/0/false/array()/null
- 资深项目管理专家谈IT项目管理中的关键点
- Android 编程好书推荐
- Linux的备份dump和恢复restore