题目链接 :http://dutacm.club:7217/codesheaven/contest.php?cid=1021;

A题说是 KMP裸模板,等弱先把KMP一补;过几天再补;

B题,贪心,向将所有X.000小数读入(整数不管)这里有个读入的小技巧,默认所有数向下R;这是的关键就是找出范围了,每反向R一次。sum值要减1(比如0.75变成1,和0.75变成0,这差值就是1)。暴力枚举就好。

设 总共一共n个数,c1个小数,c2个整数 下界 n=c1+c2;  low=max(0,n-c2),这里用max是因为害怕n-c2为负值.

上界 up=min(n,c1); 因为对半翻,上界最多就是n。

这里给出一个例子如 n=5/10,c1=7,c2=3; low=max(0,n-c2)=2;up=(n,c2)=5;

#include <iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<cmath>
using namespace std;
int T,n,sum,c1,c2;
int main()
{scanf("%d",&T);while(T--){scanf("%d",&n);sum=c1=c2=0;n<<=1;for(int a,b,i=1;i<=n;++i){scanf("%d.%d",&a,&b);if(!b) ++c1;else sum+=b,++c2;}n>>=1;int low=max(0,n-c1),up=min(n,c2);int best=sum;for(int i=low;i<=up;++i){best=min(best,abs(sum-i*1000));}printf("%d.%03d\n",best/1000,best%1000);}return 0;
}

C题 拿上来就一顿DFS,BFS结果无线M,T,W,PE;

其实就是简单的DP。但对我来说还蛮难的;

//dp的时候分奇数和偶数两种情况
//1.当i为偶数时,i可以从i-1和i/2得到
//2.当i为奇数时,i可以从i-1得到,也可以从(i/2+1)先翻倍再减1得到#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
const int maxn=1e7+20;
long long dp[maxn];
int main()
{long long  x,y;int n;//黑人问好为什么n是long long 就wa;while(scanf("%d%I64d%I64d",&n,&x,&y)!=EOF){memset(dp,0,sizeof(dp));dp[0]=0;for(int i=1;i<=n;++i){if(i%2==1) {dp[i]=min(dp[i-1]+x,dp[i/2+1]+x+y);}else {dp[i]=min(dp[i-1]+x,dp[i/2]+y);}}printf("%I64d\n",dp[n]);}return 0;
}

D题 是费用流,基本模板我会,但是那个残留网络找路径就不太会了

建图如下。

//很显然的费用流。源点到每个人流量为1,费用为0;
每个人到p流量为1费用为代码值×-1;每个人到q流量为1费用为运动值×-1;p到汇点流量为p费用为0;q到汇点流量为q费用为0.这样跑一次最小费用最大流,费用负一下就是最大化的值

此初跳过两道题。

G题 并查集,本来暴力建边然后TLE,具体都在代码里写了。

学长的话:套用分层图的概念就是,含有质因子p的所有数,构成一个‘层’,在这一层里是个完全子图

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=1000006;
bool ispr[maxn];
int prime[80000],pre[maxn];//判断素数,保存素数,保存j合数的最小素数i对应素数数组的下标cnt
int cnt=0;//素数的个数
int head[180000],flag;//head数组保存邻接表的头,flag是边的个数
bool vis[180000];//标记是否读入
struct Edge
{int to,next;void get(int a,int b){to=a;next=b;}
}edge[1400005];//边void init()
{cnt=0;memset(ispr,1,sizeof(ispr));ispr[0]=ispr[1]=0;for(int i=2;i<=1000000;++i){if(ispr[i]){prime[++cnt]=i;pre[i]=cnt;for(int j=i<<1;j<=1000000;j+=i){ispr[j]=0;if(!pre[j])     pre[j]=cnt;}}}
}void add(int u,int v)
{edge[flag].get(v,head[u]); head[u]=flag++;
}void dfs(int u)//dfs去标记同一层的数。
{vis[u]=1;for(int v,i=head[u];i!=-1;i=edge[i].next){v=edge[i].to;if(!vis[v]) dfs(v);}
}int main()
{init();int T,n,tt=1;scanf("%d",&T);while(T--){scanf("%d",&n);memset(head,-1,sizeof(int)*(cnt+n+3));memset(vis,0,sizeof(bool)*(cnt+n+3));flag=0;for(int a,i=1;i<=n;++i){scanf("%d",&a);if(a==1) continue;int y=a;//a的副本while(y>1){int z=pre[y];//这块边是与下标相连的,因为每个质因子只对一个下标。add(i+cnt,z);//抽像出来一个辅助点,把a所有的质因子都连边,形成一个层,然后对偶成点。add(z,i+cnt);//比如15,6.就会通过3这个质因子连起来;while(!(y%prime[z])) y/=prime[z];//把所有的下标是z的质因子除干净以防止重边。}}int ans=0;for(int i=1;i<=n;++i){if(!vis[cnt+i]){dfs(i+cnt),ans++;}}printf("Case %d: %d\n",tt++,ans);}return 0;
}

周赛西北第二次周赛(感谢佳神的讲解)相关推荐

  1. 【关于为什么要刷力扣的思考】记第二次周赛AK

    前言 从上次AK周赛的一月底,磕磕绊绊到五月初,总共经历了20多场的周赛 在这20场周赛中,四题:三题:两题:一题 = 2:12:8:1 总体来说应该还是在两到三题中间徘徊 但很多时候做出的两题,并非 ...

  2. C/C++描述 LeetCode 周赛 第199场周赛(阿里云专场)

    C/C++描述 LeetCode 周赛 第199场周赛(阿里云专场)   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN ...

  3. ACM第二周---周赛---题目合集.

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 A - k-LCM (easy version) B - Base K C - [例题]一维前缀和 D - 最小新整数 ...

  4. 第二场周赛(递归递推个人Rank赛)——题解

    很高兴给大家出题,本次难度低于上一场,新生的六个题都可以直接裸递归式或者裸递推式解决,对于老生的汉诺塔3,需要找出一般式,后两题分别为裸ST算法(或线段树)/线性DP. 正确的难度顺序为 种花 角谷定 ...

  5. SWPUACM第二次周赛

    文章目录 A.打卡,下班! B.组合判断 C.点菜吃饭 D.简单斐波那契数列 E.傻蛋 A.打卡,下班! 用栈模拟,区域赛签到题,详情请看代码,数据可能有问题,被暴力A了,下面是正解 #include ...

  6. 第二篇学会感谢身边的所有人!

    我们要学会感谢别人的懒惰,因为正是他们的懒惰,才使我们拥有了更多做事的机会,为我们搭起了展示才华的舞台与通向成功之路的台阶. 我大学毕业到一家集团公司的办公室当文员.办公室主任有一特长,即文章写得好, ...

  7. 【周赛】第一周周赛——欢迎16级的新同学题解(题目出自codeforces 318A,546A,431C,665E,HDU 4104)

    A题: A题题目链接 A题题目描述: Home W的数学 TimeLimit:1000MS  MemoryLimit:256MB 64-bit integer IO format: %I64d Pro ...

  8. 第 338 场周赛 (力扣周赛)

    6354. K件物品的最大和 袋子中装有一些物品,每个物品上都标记着数字 1 .0 或 -1 . 给你四个非负整数 numOnes .numZeros .numNegOnes 和 k . 袋子最初包含 ...

  9. Torque配置(转载,感谢羊神)

    真心是配了很久很久,但是各种问题一直报错,现在都没有完全解决,简直怀疑人生了,先记录一下吧 首先明确一下配置的环境 机器全都是Cent OS 主机:10.113.10.56 其他节点:10.113.1 ...

最新文章

  1. openjdk platform binary是什么进程_基于pytest实现appium多进程兼容性测试
  2. Qt + Python + OpenCV图标替换工具 之 Python调用dll(三)
  3. 【kafka】kafka LogSegmentOffsetOverflowException segment overflow Detected offset overflow
  4. Java线程的5种状态及切换(透彻讲解)-京东面试
  5. 最详细的ECLIPSE Android SDK下载安装及配置教程
  6. 遗传算法原理及其在车辆路径规划中的应用
  7. HTML5学完就去浪迹天涯的我...
  8. 电脑中EXE文件关联的修复方法
  9. 安装和配置fedora19要做的那些事,超值经验
  10. ipoo3可以用鸿蒙,真正全网通!iQOO 3支持双模六频5G,出国也能用
  11. PPT模板下载(二)--- 新科技、区块链
  12. Android拦截黑名单(简易版)
  13. Linux 命令xxd输出十六进制
  14. (笔记整理)公司vue平台用到redis,相关概念与登录(11)
  15. c++语言字母转换,c++大小写字母转换的思路有几种?
  16. Fitbit Flex
  17. 创建单元测试-编写测试用例 and执行测试用例
  18. 编译原理之语法分析(自底向上)(包含源码)
  19. python实现数据爬取-清洗-持久化存储-数据平台可视化
  20. 2021遥感应用组二等奖:基于机器学习回归算法的鄱阳湖水质遥感定量反演及时序变化监测研究

热门文章

  1. linux音频设备节点,Linux音频OSS的buffer分析
  2. 【数据结构与算法】leetcode75.颜色分类
  3. CIMCAl photo container detect is free, container damage detect
  4. 人工智能 - 扩展阅读
  5. 智能网联汽车测试场设计技术要求
  6. 【Self-Attentive Sequential Recommendation论文笔记】
  7. 深圳什么职称可以落户
  8. Rackspace: IT与业务的融合是一门艺术
  9. FPGA-as-a-Service:深度解析亚马逊的FPGA加速云
  10. [置顶]白话贝叶斯理论及在足球比赛结果预测中的应用和C#实现