标签:iss 电视节目 百度 拓扑 main 数据 广告 输入 行操作
最近每天都会打比赛...简直打到自闭好吗.....
欣赏一下我的新春对联:
上联:不论如何简单反正不对
下联:别提有多困难统统不会
横批:要废
呜呜呜呜自闭xrq在线哭泣
比赛前
xfy:今天的比赛有点难 大家决定一下打不打
xrq:打!(勇者无惧心想着能水几道是几道)
比赛中
xrq:我第一道就不会
xrq:我废了啊啊啊啊啊
ydy:让我看看有没有暴力水过去的
xrq:没有别想了
比赛后
xfy:此时一只莽夫失去了他的梦想
xrq:....是我贸然了
xfy:还打不打?
xrq:打!!(不就一场难赛是阻挡不了我的脚步的)
第二天的比赛中
xrq:我废了。
言归正传。
Day1 1月17日
这一天的题是真的难
我连交都没交
不仅没交还趁着机会和男神交流了感情
(╬ ̄皿 ̄)=○#( ̄#)3 ̄)
我不敢了不敢了
因为啥都没写出来也懒得看通过代码这天分析就莫得了...
Day2 1月18日
今天(据说)比较简单
然后我看着第一题陷入了沉思...
中垂线解析式咋求来着?
(初中数学都忘了我果不其然要废)
最后还是求助了度娘用数学公式死带出来了
度娘万岁!
题目描述
Nancy很喜欢音乐。
她能同时分辨出三种不同的音乐。恰巧,一座城市中有三处同时有交响音乐会(音源响度相同)。但是Nancy每一场都不想错过,于是她想寻找一个地点,使得三处音乐会声音的响度相同,这样她就可以同时欣赏三场音乐会啦!
(注:假设声音传播过程中不会受障碍物作用,声音传播满足平方反比定律)输入描述:
共三行:每行两个整数xix_ixi?与yiy_iyi?,三点不共线。
数据满足:0≤∣xi∣,∣yi∣≤109输出描述:
共一行:两个实数posx,posy,表示Nancy欣赏音乐会的地点(保留三位小数)
输入
0 0 1 3 4 2输出
2.000 1.000
#include<cmath> #include<cstdio> #include<string> #include<utility> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int main() { int x1,x2,x3,y1,y2,y3; double k1,k2,b1,b2,k3,k4,b3,b4,ans,ansy; scanf("%d%d",&x1,&y1); scanf("%d%d",&x2,&y2); scanf("%d%d",&x3,&y3); k1=((y1-y2)*1.0)/(x1-x2); k3=-(1/k1),b3=(x1+x2)/(2.0*k1)+((y1+y2)*1.0)/2.0; k2=((y2-y3)*1.0)/(x2-x3); k4=-(1/k2),b4=(x2+x3)/(2.0*k2)+((y2+y3)*1.0)/2.0; ans=(b4-b3)/(k3-k4); ansy=ans*k3+b3; printf("%.3lf %.3lf",ans,ansy); return 0; }
不过ydy大佬用万能搜索直接找见了(这里)....就我个傻子还推了半天
题目描述
Nancy喜欢做游戏!
汉诺塔是一个神奇的游戏,神奇在哪里呢?
给出3根柱子,最开始时n个盘子按照大小被置于最左的柱子。如果盘子数为偶数,则需要将她们全部移动到最右侧的柱子上,否则将她们移动到中间的柱子上。那么,Nancy该怎样移动呢?请你输出汉诺塔游戏的过程叭!输入描述:
共一行:一个整数n,表示最开始n个盘子(编号为1到n)的放置方法。
数据满足:2≤n≤11输出描述:
共2n组:每组n+2行,每行3×(2n+1)+4个字符,用.表示空白区域,用|表示柱子区域,用*表示盘子。组与组之间请输出3×(2n+1)+4个-。
具体输出方式请参看样例进行理解。输入
2输出
................... ...|.....|.....|... ..***....|.....|... .*****...|.....|... ------------------- ................... ...|.....|.....|... ...|.....|.....|... .*****..***....|... ------------------- ................... ...|.....|.....|... ...|.....|.....|... ...|....***..*****. ------------------- ................... ...|.....|.....|... ...|.....|....***.. ...|.....|...*****.
#define debug 0 #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef double db; const int N = 1e6 + 5, M = 20010905; const db eps = 1e-8; typedef vector<ll> vi; typedef vector<vi> vii; void solve(); void print(){cout<<‘\n‘;}template<class T,class ...U>void print(T x, U ...y){cout<<x<<‘ ‘;print(y...);} int main() { ios::sync_with_stdio(0); cin.tie(0); cout << setprecision(2) << fixed; if(debug){freopen("main.cpp","r",stdin);string x;cin>>x;} solve(); } // int stk[3][20], tp[3], n, m; char p[1000][1000], sl[1000]; bool flg; void line(int i, int j, int len, char c) { while (len--) p[i][j++] = c; } int get(int i) { return 2 * (n + 1) * i + n + 1; } void clear() { for (int i = 1; i <= n + 1; i++) { for (int j = 0; j < m; j++) { p[i][j] = ‘.‘; } } for (int i = 0; i < 3; i++) { for (int j = 1; j <= n + 1; j++) { p[j][get(i)] = ‘|‘; } } } void draw() { if (flg) cout << sl << ‘\n‘; flg = 1; clear(); for (int i = 0; i < 3; i++) { int t = n + 1; for (int j = 0; j < tp[i]; j++) { line(t--, get(i) - stk[i][j], 2 * stk[i][j] + 1, ‘*‘); } } for (int i = 0; i <= n + 1; i++) { cout << p[i] << ‘\n‘; } } void dfs(int u, int v, int s) { if (s == 1) { stk[v][tp[v]++] = stk[u][--tp[u]]; draw(); return; } int t; for (int i = 0; i < 3; i++) if (i != u && i != v) t = i; dfs(u, t, s - 1); stk[v][tp[v]++] = stk[u][--tp[u]]; draw(); dfs(t, v, s - 1); } void solve() { cin >> n; m = 3 * (2 * n + 1) + 4; for (int i = 0; i < n; i++) { stk[0][tp[0]++] = n - i; } line(0, 0, m, ‘.‘); for (int i = 0; i < m; i++) sl[i] = ‘-‘; draw(); if (n & 1) dfs(0, 1, n); else dfs(0, 2, n); }
题目描述
Nancy喜欢学习,也喜欢看电视。
为了想了解她能看多长时间的节目,不妨假设节目从时刻1开始,一直播放到时刻6×10100。每个节目持续50个时刻,节目与节目间会有10个时刻的广告时间。
然而,Nancy实在是太忙了,她从t1时刻开始观看,观看至t2?时刻,请你帮忙计算她有多少个时刻能欣赏到电视节目。输入描述:
若干行:每行两个整数t1与t2。
数据满足:1≤t1≤t2≤1018输出描述:
若干行:每行一个整数,表示能品味电视节目的时刻数。示例1
输入
1 61输出
51示例2
输入
116969978 507978500 180480072 791550396 139567120 655243745 1470545 167613747 57644034 176077476 44676 56984808 215706822 369042088 108368065 320914746输出
325840433 509225275 429730516 138452673 98694536 47450113 127779387 177122232
#include<cmath> #include<cstdio> #include<string> #include<utility> #include<cstring> #include<iostream> #include<algorithm> using namespace std; typedef unsigned long long ull; int main() { ull t1,t2,s1,s2,j1,j2,ans1,ans2; while(cin>>t1>>t2)//虽然我不喜欢用cin但那个评测机在这用scanf就会结束不了不知道为啥 { t1-=1;//这里是因为第一分钟也算在内 考试时我就因为这个老是不对 s1=t1/60; j1=t1%60; ans1=s1*50; if(j1>50) ans1+=50; else ans1+=j1; s2=t2/60; j2=t2%60; ans2=s2*50; if(j2>50) ans2+=50; else ans2+=j2; printf("%lld\n",ans2-ans1); } return 0; }
题目描述
Nancy的男朋友喜欢网络安全!
最近,一种新的DDoS——脉冲波悄然来临。其基本原理是利用不同线路服务器的延时,使得Request同时到达目标服务器,以堵塞其它正常的通讯。
不妨假设攻击者在1号节点,目标服务器在n号节点,其余节点(2到n-1号节点)为中继服务器。
攻击者可以在任意时间发送一个定向数据包(即规定其经过中继服务器的路线,但不同数据包的路线不能完全相同),目标服务器对这种数据包具有100%的识别率,一旦识别到这种数据包,则会屏蔽这一时刻后的所有数据包。
Nancy好奇,攻击者在最优策略下,目标服务器能够收到多少份数据包呢?输入描述:
第一行:两个整数n,m。
接下来m行:每行三个整数x,y,z,表示节点x与y可以单向通信(x到y),耗时为z。
数据满足:3≤n≤100000,1≤m≤200000,0≤z≤⌊10πe⌋,图为拓扑图(有向无环图)。输出描述:
共一行:表示攻击者在最优策略下,目标服务器能够收到数据包的数量。由于数量可能会很大,你只需要输出答案对20010905取模后的值。输入
4 4 1 2 3 1 3 1 2 4 1 3 4 3输出
2说明
显然,攻击者在0时刻发送两个定向数据包(1-2-4和1-3-4),它们同时在第4时刻到达目标服务器。
#include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<vector> #include<queue> #include<cmath> #include<map> #include<set> #define ll long long #define F(i,a,b) for(int i=(a);i<=(b);i++) #define mst(a,b) memset((a),(b),sizeof(a)) #define PII pair<int,int> using namespace std; template<class T>inline void read(T &x) { x=0; int ch=getchar(),f=0; while(ch<‘0‘||ch>‘9‘){if (ch==‘-‘) f=1;ch=getchar();} while (ch>=‘0‘&&ch<=‘9‘){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();} if(f)x=-x; } const int inf=0x3f3f3f3f; const int maxn=200500; const ll p=20010905; ll n,m,vis[maxn]; ll head[maxn],num; ll f[maxn]; struct node{ ll v,w,nex; }e[maxn]; void add(ll u,ll v,ll w) { e[++num].nex=head[u]; e[num].v=v;e[num].w=w; head[u]=num; } ll dfs(int u) { if(f[u]) return f[u]; ll temp=0; for(int i=head[u];i;i=e[i].nex) { int v=e[i].v; temp=(temp+dfs(v))%p; } f[u]=temp; return f[u]; } int main() { cin>>n>>m; for(int i=1;i<=m;i++) { ll x,y,z; read(x),read(y),read(z); add(y,x,z); } f[1]=1; ll ans=dfs(n); cout<<ans<<endl; return 0; }
好下一道
题目描述
Nancy是老师的小帮手!
众所周知,大学的学分绩点十分难以计算 。
一门课程,有必修、限选、任选之分,而其成绩,又由平时成绩、期中考试、期末考试之分,最后还要对总分数进行四舍五入。
具体的,一名同学的学分绩点是这样计算的:
下面你知道了Nancy的成绩单,请你计算其最终学分绩点。
- 计算且仅计算必修和限选课程
- 根据平时成绩、期中成绩、期末成绩对应的不同比例求和,并四舍五入到整数
- 学分绩点为各门课成绩乘以学分占总学分的比例
- 对计算结果进行四舍五入(保留两位小数)
输入描述:
第一行:一个整数n,表示Nancy本学期修读了n门课程
接下来n行:每行一个整数和七个实数,表示课程性质(0为必修,1为限选,2为任选),学分,平时成绩及其比例,期中考试及其比例,期末考试及其比例,保证比例之和为1,且实数最多有一位小数。
数据满足1≤n≤64,课程性质∈{0,1,2},学分∈[1,16],成绩∈[0,100],比例∈[0,1],数据保证至少有一门必修或限选课。输出描述:
共一行:表示Nancy的学分绩点。输入
5 0 1 97 1 0 0 0 0 0 2.5 98 0.3 0 0 92 0.7 0 4 100 0.3 0 0 100 0.7 0 1 0 0 0 0 74 1 0 2 94 1 0 0 0 0输出
94.67
#include<cmath> #include<cstdio> #include<string> #include<utility> #include<cstring> #include<iostream> #include<algorithm> using namespace std; struct mac { int chengji; double xuefen; }a[100]; int main() { int n,k; double pi,qi,mo,b1,b2,b3,zong=0,ans=0; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d%lf%lf%lf%lf%lf%lf%lf",&k,&a[i].xuefen,&pi,&b1,&qi,&b2,&mo,&b3); if(k==2) { i--,n--; continue; } pi=pi*b1+qi*b2+mo*b3; a[i].chengji=round(pi); zong+=a[i].xuefen; } for(int i=1;i<=n;i++) { ans+=(a[i].chengji*1.0)*(a[i].xuefen/zong); } printf("%.2lf",ans); return 0; }
题目描述
Nancy喜欢斐波那契数列!若f0=0,f1=1,f2=1,请求:fn+1fn−1−fn2(n≥2),其中fi?表示斐波那契数列第i项。输入描述:
共一行:一个整数n。
数据满足:2≤n≤102020。输出描述:
共一行:表示表达式的值。输入
2输出
1
#include<cmath> #include<cstdio> #include<string> #include<utility> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int a[10000]; int main() { char c; int i=0; while((c=getchar())!=‘\n‘) { a[++i]=c; } if(int(a[i]-‘0‘)%2&&a[i]-‘0‘!=3) cout<<-1; else cout<<1; return 0; }
题目描述
Nancy喜欢博弈!
Johnson和Nancy得到了一个神奇的多重集合,仅包含一个正整数n,两个人轮流进行操作。
一次操作可以将集合中一个数字分解为它的任意两个非1的因数,并加入集合中。
他们想知道,在Johnson和Nancy绝顶聪明的情况下,如果Nancy先手进行操作,最后谁没有办法继续操作了呢?输入描述:
第一行:一个整数n。
数据满足:1≤n≤95718。输出描述:
共一行:一个字符串,表示最后谁(Johnson或者Nancy)无法进行操作。输入
4输出
Johnson
#include<cmath> #include<cstdio> #include<string> #include<utility> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int main() { int m=0,n; scanf("%d",&n);for(int i=2;i<n;i++) { while(n!=i) { if(n%i==0) { m++; n=n/i; } else break; } } if(m%2) printf("Johnson"); else printf("Nancy"); return 0; }
再次360度鞠躬感谢ydy大佬
题目描述
新年快乐!输入描述:
无输出描述:
请输出本题题目(含引号)。
include<cmath> #include<cstdio> #include<string> #include<utility> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int main() { printf("”Happy New Year!“"); return 0; }
题目描述
此时相望不相闻,愿逐月华流照君。一纸情书,到底蕴含了多少倍的爱情呢?
I love you, not only for what you are, but for what I am when I am with you.输入描述:
共一行:一封若干个字符的情书(大小写不敏感)。
情书不会超过684594个字符(大写、小写字母)。输出描述:
共一行:包含一个整数,即iloveyou在情书中作为子序列出现的次数。
由于答案可能很大,请输出对20010905取模后的值。输入
IloveyouNotonlyforwhatyouareButforwhatIamWhenIamwithyouIloveyouNotonlyforwhatYouhavemadeofyourselfButforwhatYouaremakingofme输出
2864
#include <bits/stdc++.h> using namespace std; typedef long long ll; const ll mod = 20010905; const ll N = 1e6 + 5; ll dp[N]; char s[N]; int main() { ios::sync_with_stdio(false); cin >> s; for (int i = 0; s[i]; i++) { if (s[i] == ‘i‘ || s[i] == ‘I‘) dp[0] = (dp[0] + 1) % mod; else if (s[i] == ‘l‘ || s[i] == ‘L‘) dp[1] = (dp[1] + dp[0]) % mod; else if (s[i] == ‘o‘ || s[i] == ‘O‘) { dp[2] = (dp[2] + dp[1]) % mod; dp[6] = (dp[6] + dp[5]) % mod; } else if (s[i] == ‘v‘ || s[i] == ‘V‘) dp[3] = (dp[3] + dp[2]) % mod; else if (s[i] == ‘e‘ || s[i] == ‘E‘) dp[4] = (dp[4] + dp[3]) % mod; else if (s[i] == ‘y‘ || s[i] == ‘Y‘) dp[5] = (dp[5] + dp[4]) % mod; else if (s[i] == ‘u‘ || s[i] == ‘U‘) dp[7] = (dp[7] + dp[6]) % mod; } cout << dp[7] << ‘\n‘; return 0; }
好了下一个(~ ̄▽ ̄)~
J Jelly
题目描述
Nancy喜欢吃果冻!
Nancy钻进了一个n×n×n的果冻里,她想从(1,1,1)一路上、下、左、右、前、后六个方向吃到(n,n,n)。但果冻毕竟是有许多口味的,标记为*的口味是Nancy不愿意吃的,其余的果冻均标记为.。Nancy不想吃坏肚子,于是她想尽可能少的吃果冻。
下面给出果冻的情况,请你帮忙计算一下她能吃多少块果冻叭!输入描述:
第一行:一个整数n。
接下来n层,每组n行,每行n列,表示果冻(i,j,k)的情况(如题目描述所述)。
数据满足:1≤n≤100,保证果冻(1,1,1)不是Nancy不愿意吃的。输出描述:
如果可以到达(n,n,n),请输出路上吃的果冻数量,否则请输出-1。输入
2 .* .. *. ..输出
4
终于最后一道啦~
看上去是个好想法....我也想钻进果冻里!
三维搜索题,依旧没写
#include <bits/stdc++.h> using namespace std; const int maxn = 105; struct node{int i, j, k, val;}; int n; int di[] = {-1, 1, 0, 0, 0, 0}; int dj[] = {0, 0, -1, 1, 0, 0}; int dk[] = {0, 0, 0, 0, -1, 1}; char s[maxn][maxn][maxn]; queue<node> q; void bfs() { int ans = 0; s[1][1][1] = 0; q.push(node{1, 1, 1, 1}); while(!q.empty()) { node u = q.front(); q.pop(); if(u.i == n && u.j == n && u.k == n) { printf("%d", u.val); return; } for(int i = 0; i < 6; i++) if(s[u.i+di[i]][u.j+dj[i]][u.k+dk[i]] == ‘.‘){ s[u.i+di[i]][u.j+dj[i]][u.k+dk[i]] = 0; q.push(node{u.i+di[i], u.j+dj[i], u.k+dk[i], u.val+1}); } } printf("-1"); return; } int main() { scanf("%d", &n); for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j++) scanf("%s", s[i][j]+1); bfs(); return 0; }
今天就到这里吧~
话说今天比赛5个小时我只做了2个半小时的题...
学测还没写啊啊啊啊啊
zxp学长我对不起你...(真心忏悔)
溜了溜了
标签:iss 电视节目 百度 拓扑 main 数据 广告 输入 行操作
原文地址:https://www.cnblogs.com/ines0204/p/12213243.html