• XJOI奋斗群蒻蒟群群赛6 RANK排名10

    • T1Fraction已AC

      • 题意
      • 分析过程
      • 给出题解
    • T2Maxim Buys an Apartment WA两次AC
      • 题意
      • 分析过程
      • 给出题解
    • T3PlanningTLE两次后AC
      • 题意
      • 分析过程
      • 给出题解
    • T4Jury Meeting已AC
      • 题意
      • 分析过程
      • 给出题解
    • 蒻蒟的总结

—>XJOI奋斗群(蒻蒟群)群赛6<— RANK排名10

T1:Fraction(已AC)

题意:

定义一个分数,如果这个分数的分子小于分母,则该分数为适当分数。如果一个分数的分子和分母互质,那么这个分数成为不可约分数。给你一个分子与分母的和,让你计算最大的适当不可约分数的分子和分母。

分析过程:

既然是适当分数,那么分子一定严格小于分母,所以可以从和的一半开始向下枚举,如果枚举到一个数,使得分子和分母互质,这个数就会使分数最大,并满足条件。

给出题解:
#include<bits/stdc++.h>
using namespace std;int get_gcd(int a,int b)
{int c;c=min(a,b);for(int i=c;i>=1;i--){if(a%i==0&&b%i==0)return i;}
}
int main()
{int n;int zi,mu;int a,b;int gcd;cin>>n;for(int zi=n/2;zi>=1;zi--){mu=n-zi;gcd=get_gcd(zi,mu);if(gcd==1){a=zi;b=mu;break;}}cout<<a<<" "<<b;
}

T2:Maxim Buys an Apartment (WA两次AC)

题意:

给你总共的公寓的数量n和已经入住的人数k,要求再入住一个人,使得这个人的旁边必须有人住。然后让你计算这个人可以居住的公寓数量的最大值与最小数。

分析过程:

首先是两个特例,如果n等于k或者k等于零,可以直接输出两个0,其他的再继续判断。当k很小的时候,每个人可以提供2个可住的公寓的个数。而当k比较大的时候最大的可入住人数为n-k。而在k比较小的时候,n-k的个数一定比k*2大。所以只要选择n-k和k*2的比较小的值输出就行了。

给出题解:
#include<bits/stdc++.h>
using namespace std;int main()
{int n,k;int mint,max;cin>>n>>k;if(k==0||k==n){max=mint=0;}else {mint=1;max=min(n-k,k*2);}cout<<mint<<" "<<max;
}

T3:Planning(TLE两次后AC)

题意:

给你一个航班的安排,结果航班延迟了,要求在时间k之前飞机不能出发,并且飞机出发时间不能早于它原来的时间。每个飞机都有成本,如果飞机延迟出发n分钟,费用就为n*成本。要你求最小的成本。

分析过程:

思路其实很简单,只需要一个贪心就行了。既然要让成本最小,就是要让每个航班的成本最小。所以从最大的成本开始向下遍历,求出满足每个航班的成本最小的t的最大值,计算总花费,最后输出每个航班的出发时间。
但是!!!!!这样并不能AC,保证TLE。就算把复杂度降到了O(nlog n)都还是一样。最后在别人和百度的指导下学会了用优先队列,时间复杂度降到了O(log n),就AC了。关于优先队列,接下来会出一篇专门讲的。

给出题解:
#include<bits/stdc++.h>
#define maxn 300050
#define LL  long long
using namespace std;LL n,k;LL  x,t,ans=0;
struct flight
{int x;int money;friend bool operator<(flight a,flight b){return a.money<b.money;}
}fly[maxn];int main()
{int f[maxn];cin>>n>>k;for(int i=1;i<=n;i++){cin>>fly[i].money;fly[i].x=i;}priority_queue<flight>q;for(int i=1;i<=k;i++){q.push(fly[i]);}for(int i=k+1;i<=k+n;i++){if(i<=n)q.push(fly[i]);flight t=q.top();q.pop();ans=ans+(LL)(i-t.x)*(LL)(t.money);
//      cout<<ans<<" ";f[t.x]=i;}cout<<ans<<endl;for(int i=1;i<=n;i++){cout<<f[i]<<" ";}return 0;
}

T4:Jury Meeting(已AC)

题意:

有n个城市,要在第0个城市召开会议,持续k天。有m个航班,都是第0个城市与其他城市之间的,每个航班有不同的起飞时间与花费。问你能不能让所有人都到达第0个城市,开完k天的会议后都回到原来的城市,若果有,输出最小花费,如果没有,输出NO。

分析过程:

这题可以用贪心来解,首先,可以吧飞机分为两种,去0的和从0去别的地方的。先把这两种飞机进行时间上的排序,然后先从前面开始遍历,找出一个每一个点所需花费的钱,并找到一个点,所有的会议人员都可以到达0。然后从后面开始遍历,找出每一个点所需花费的钱,并且找出一个点,所有的会议人员必须启程的日子(即再往后就会有会议人员无法回到远程市)。最后在这两个区间中遍历点,找出去0的机票花费+回去的机票花费的最小值,即为题目所求。

给出题解:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define inf (ll)1e17
#define maxn  2100005
struct node
{ll day,from,to,cost;
} a[maxn];
bool comp(node a, node b)
{return a.day < b.day;
}
ll b[maxn], dp[maxn], dp1[maxn];
int main()
{
//  freopen("in.txt","r",stdin);ll n, k, m, i, j;cin>>n>>m>>k;for (i = 0; i <= 2100000; i++)b[i] = -1, dp[i] = inf;for (i = 1; i <= m; i++)cin>>a[i].day>>a[i].from>>a[i].to>>a[i].cost;sort(a + 1, a + m + 1, comp);ll num = 0, sum = 0;for (i = 1; i <= m; i++){if (a[i].from == 0)continue;if (b[a[i].from] == -1)num++, b[a[i].from] = a[i].cost, sum += a[i].cost;else{if (b[a[i].from] > a[i].cost){sum -= b[a[i].from];b[a[i].from] = a[i].cost;sum += a[i].cost;}}if (num == n)dp[a[i].day] = sum;}num = 0;sum = 0;for (i = 0; i <= 2100000; i++)b[i] = -1, dp1[i] = inf;for (i = m; i > 0; i--){if (a[i].to == 0)continue;if (b[a[i].to] == -1)num++, b[a[i].to] = a[i].cost, sum += a[i].cost;else{if (b[a[i].to] > a[i].cost){sum -= b[a[i].to];b[a[i].to] = a[i].cost;sum += a[i].cost;}if (num == n)dp1[a[i].day] = sum;}if (num == n)dp1[a[i].day] = sum;}for (i = 1; i <= 1000000; i++)if (dp[i] != inf)break;j = i;for (i = j + 1; i <= 1000000; i++)dp[i] = min(dp[i - 1], dp[i]);for (i = 1000000; i > 0; i--)if (dp1[i] != inf)break;j = i;for (i = j - 1; i > 0; i--)dp1[i] = min(dp1[i], dp1[i + 1]);ll ans = inf;for (i = 1; i <= 1000000; i++){if (dp[i] == inf || dp1[i + k + 1]==inf)  continue;ans = min(dp[i] + dp1[i + k + 1], ans);}if (ans == inf)cout<<-1;else cout<<ans;return 0;

蒻蒟的总结:

今天只有4个题目,前面两个算是比较水的题目,然而第二题还是WA了两次,这点要抓紧改正。后两题,用到堆和动态规划(可能…),而这些我都不怎么熟,所以自己不懂的东西还有很多。明天不出意外,是要跑两圈的,加油吧少年。

继续贴出吴老师的话:学信息的人永不服输!!!

czl蒻蒟的OI之路5相关推荐

  1. czl蒻蒟的OI之路

    XJOI奋斗群蒻蒟群群赛2 RANK排名3 T1Odds and Ends 已AC 题意 分析过程 给出题解 T2Tell Your World 已AC 题意 分析过程 给出题解 T3From Y t ...

  2. czl蒻蒟的OI之路8

    XJOI奋斗群蒻蒟群群赛9 RANK排名12 T1SnacktowerWA三次后AC 题意 分析过程 给出题解 T2The QueueWA六次后AC 题意 分析过程 给出题解 T3GarlandWA一 ...

  3. czl蒻蒟的OI之路9

    XJOI奋斗群蒻蒟群群赛10 RANK排名7 T1Chess TourneyWA一次后AC 题意 分析过程 给出题解 T2Luba And The TicketWA两次后AC 题意 分析过程 给出题解 ...

  4. czl蒻蒟的OI之路13

    XJOI奋斗群蒻蒟群群赛10 RANK排名6 T1Compote 已AC 题意 分析过程 给出题解 T2Decoding已AC 题意 分析过程 给出题解 T3Tram已AC 题意 分析过程 给出题解 ...

  5. czl蒻蒟的OI之路10、11、12

    好久没有发微博了表示自己也很绝望啊今天来个三连击 XJOI奋斗群蒻蒟群群赛11 RANK排名11 T1The Wall WA一次后AC 题意 分析过程 给出题解 T2Maximal Area Quad ...

  6. czl蒻蒟的OI之路3

    XJOI奋斗群蒻蒟群群赛4 RANK排名3 T1Arpa and a research in Mexican wave WA一次后AC 题意 分析过程 给出题解 T2Arpa and an exam ...

  7. czl蒻蒟的OI之路7

    XJOI奋斗群蒻蒟群群赛8 RANK排名 T1k-Factorization RE一次后AC 题意 分析过程 给出题解 T2Odd sumWA一次后AC 题意 分析过程 给出题解 T3Minimal ...

  8. czl蒻蒟的OI之路4

    XJOI奋斗群蒻蒟群群赛5 RANK排名15 T1Curriculum Vitae WA五次后AC 题意 分析过程 给出题解 T2Math Show WA十次后AC 题意 分析过程 给出题解 T3Fo ...

  9. czl蒻蒟的OI之路2

    XJOI奋斗群蒻蒟群群赛3 RANK排名7 T1Kirill And The GameTLE一次后AC 题意 分析过程 给出题解 T2Gleb And PizzaWA一次后AC 题意 分析过程 给出题 ...

最新文章

  1. 第十、十一周项目-阅读程序,写出这些程序的运行结果(2)
  2. Hashtable TreeMap HashMap LinkedHashMap的区别
  3. [BUUCTF-pwn]——[OGeek2019]babyrop
  4. cookie和session的讲解
  5. Android USB 开发详解
  6. 《H5 移动营销设计指南》 读书笔记整理
  7. android 充电动画_iPhone 12充电测试:18/20W并无明显区别
  8. 带权并查集-Building Block
  9. matlab入门4-mdlInitializeSizes解析
  10. GitHub上传文件不能超过100M的解决办法
  11. Unity3D设置天空盒skybox
  12. Excel 函数公式大全
  13. julia 调用python库_install julia with python
  14. macOS 安装老旧版本的 adobe 应用
  15. java获取中文拼音或拼音首字母
  16. 360全景虚拟现实图片拍摄的注意细节
  17. Android Room的使用
  18. 阿里云服务器的mysql安装
  19. bzoj1616[Usaco2008 Mar]Cow Travelling游荡的奶牛*
  20. jq animate动画详解

热门文章

  1. 《疯狂的石头》在线观看(网通用户)
  2. 【学习笔记】正则语言的可检验性(性质检验)
  3. Docker---(7)Docker安装启动RabbitMQ
  4. 重装window系统总结
  5. Flex to Excel or Excel to Flex
  6. ##gif录制软件——初识GifCam##
  7. 计算机控制矢量网络分析仪,完全独立的HF(短波)软件定义收发器和矢量网络分析仪设计...
  8. 深度学习推理框架调研总结
  9. Gaussian Process understanding
  10. html5创建三次贝塞尔曲线,HTML5 Canvas中使用路径描画二阶、三阶贝塞尔曲线