=-=昨天被老师拉去吃点心了就没有发题解...忧伤..昨天的T2貌似都没有调完嗯

今天脑洞是大啊..

T1模拟写挂..呵呵我一面

T2数学题..刚开始只会求素数表的那种方法暴力..不过后面他们都知道一种数学方法..然后算是A了吧

T3SPFA..不过感觉略复杂..不会啊QAQ

T4最大生成树啊...没有时间打了 喜闻乐见,不过感觉还是会有一个地方卡住,详见题解

T1:纯模拟

像我这样代码能力那么弱的人,就很容易写挂了

就比如

h=s+n-1;
 while(h>m){
  h-=m;
 }

要判断第一个点有没有超范围..之后的点虽然有想到,不过第一个点你想到了没有!

...有空多练练这种无脑题吧...再写挂就不好玩了嗯

附上代码:

#include<cstdio>
#include<cstring>
using namespace std;
int h,m,s,n,k,ans=0,tot=0;
bool a[1001];
int main(){
freopen("game.in","r",stdin);
freopen("game.out","w",stdout);
scanf("%d%d%d%d",&m,&s,&n,&k);
memset(a,true,sizeof(a));
h=s+n-1;
while(h>m){
h-=m;
}
a[h]=false;
printf("%d ",h);
for(int i=2;i<=m;i++){
if(i%2==0){
for(int j=1;j<=k;j++){
h--;
if(h==0) h=m;
if(!a[h]){
while(!a[h]){
h--;
if(h==0) h=m;
}
}
}
}
a[h]=false;
if(i%2!=0){
for(int j=1;j<=n;j++){
h++;
if(h==m+1) h=1;
if(!a[h]){
while(!a[h]){
h++;
if(h==m+1) h=1;
}
}
}
a[h]=false;
}
printf("%d ",h);
}
return 0;
}

T2:数论..

这块内容还是不太懂的..主要是多积累,如果有遇上的话就很好解决了

=-=不太懂这题的原理...忧伤

#include<cstdio>
#include<cstring>
using namespace std;
int tot=0,ans=0;
int n,m;
int f[10000001];
int main(){
freopen("shlqsh.in","r",stdin);
freopen("shlqsh.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
tot+=m/i;
for(int i=1;i<=n-1;i++)
ans+=(n-1)/i;
printf("%d",tot-ans);
return 0;
}

T4:最大生成树

先说说T4好了...毕竟T3没有改..不懂怎么说

T4算是很裸的最大生成树了

就是有一个地方需要注意,就是给男生编号这个地方

你想啊...你需要区别男生女生对吧..男生就在女生后面往下编就可以

还有打了这题,除了对最大生成树复习之外,貌似对最后一步的加边操作有了更深的理解了吧,if(k==n+m-1) break;

嗯。。顺便回顾一下最大生成树的内容:

1.存边f[i].a,f[i].b,f[i].c

2.排序(根据是求最大生成树还是最小生成树来定..),感觉有时也需要看题目,PS:顺便注意一下一个struct排序时的用法

struct qem{
    int a,b,z;
}f[200001];
int cmp(qem f,qem b){
return f.z>b.z;
}

3.加边,直到构成一颗树为止

这一步需要用来并查集,来判断是否有共同的祖先,进行n-1的加边操作即可

附上代码..

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,r,h,t,ans=0;
int x,y,z,tot=0,maxn;
struct qem{
int a,b,z;
}f[200001];
int cmp(qem f,qem b){
return f.z>b.z;
}
int fa[200001];
int find(int x){
if(fa[x]==x) return x;
else return fa[x]=find(fa[x]);
}
int main(){
freopen("conscription.in","r",stdin);
freopen("conscription.out","w",stdout);
scanf("%d%d%d",&n,&m,&r);
for(int i=1;i<=r;i++){
scanf("%d%d%d",&x,&y,&z);
y+=n;
f[i].a=x;
f[i].b=y;
f[i].z=z;
}
for(int i=0;i<=n+m;i++) fa[i]=i;
sort(f+1,f+r+1,cmp);
int k=0;
for(int i=1;i<=r;i++){
h=find(f[i].a);
t=find(f[i].b);
if(h!=t){
fa[h]=t;
ans+=f[i].z;
++k;
}
if(k==n+m-1) break;
}
tot=10000*(m+n)-ans;
printf("%d",tot);
return 0;
}

T3:spfa

不是太明白怎么打..

附上标程吧..

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <vector>
#include <queue>
#include <utility>
#define fi first
#define se second
using namespace std;
const int inf=2000000000;
typedef pair<int,int> pii;
vector<pii> a[10010];
priority_queue<pii> q;
int g[110][110],d[10010],p[10010],ans[10010];
bool f[10010];
pii v[10010];
int main(){
int n,s,t,nn,mm,i,j,x,y,sx,sy,tx,ty;
vector<pii>::iterator it;
freopen("kingdom.in","r",stdin);
freopen("kingdom.out","w",stdout);
scanf("%d%d%d%d%d%d",&nn,&mm,&sx,&sy,&tx,&ty);
memset(g,0,sizeof(g));
for (i=1;i<=mm;i++){
scanf("%d%d",&x,&y);
g[x][y]=g[y][x]=1;
}
n=0;
for (i=1;i<nn;i++)
for (j=i+1;j<=nn;j++)
if (g[i][j]){
v[++n].fi=i;v[n].se=j;
if (sx==i && sy==j) s=n;
if (tx==i && ty==j) t=n;
v[++n].fi=j;v[n].se=i;
if (sx==j && sy==i) s=n;
if (tx==j && ty==i) t=n;
}
for (i=1;i<n;i++)
for (j=i+1;j<=n;j++)
if (v[i].fi!=v[j].se || v[i].se!=v[j].fi)
if (v[i].fi==v[j].fi){
if (g[v[i].se][v[j].se]){
a[i].push_back(make_pair(j,1));
a[j].push_back(make_pair(i,1));
}
}
else
if (v[i].se==v[j].se){
if (g[v[i].fi][v[j].fi]){
a[i].push_back(make_pair(j,1));
a[j].push_back(make_pair(i,1));
}
}
else
if (g[v[i].fi][v[j].fi] && g[v[i].se][v[j].se]){
a[i].push_back(make_pair(j,2));
a[j].push_back(make_pair(i,2));
}
for (i=1;i<=n;i++){
d[i]=inf;p[i]=0;f[i]=false;
}
d[s]=0;q.push(make_pair(0,s));
for (i=1;i<=n;i++){
while (f[x=q.top().se]) q.pop();
q.pop();
if (x==t) break;
f[x]=true;
for (it=a[x].begin();it!=a[x].end();it++){
y=it->fi;
if (!f[y] && d[x]+it->se<d[y]){
d[y]=d[x]+it->se;p[y]=x;
q.push(make_pair(-d[y],y));
}
}
}
x=t;ans[y=1]=t;
while (p[x]){
ans[++y]=p[x];x=p[x];
}
printf("%d %d\n",d[t],y);
for (i=y;i>0;i--)
printf("%d %d\n",v[ans[i]].fi,v[ans[i]].se);
return 0;
}

晚安..睡觉了..

明天中午希望可以写点D7的题解吧..

希望明天加油...BLESS ALL

世界晚安...

D8的更多相关文章

  1. WordPress D8 主题当中截取文章首图并显示的函数

    取自 WordPress D8 主题; 路径 theme\d8\modules ; if ( ! function_exists( 'deel_thumbnail' ) ) : function de ...

  2. 为何你跟着滴滴D8级前端大神撸代码,技术却依旧原地踏步?

    引子 听说最近有很多小伙伴,热衷于在慕课网上学习各种前端实战教程,并以完成项目为奋斗目标.比如本文接下来要提到的<Vue2.0高级实战之开发移动端音乐App>,这门课程的传授者是来自滴滴D ...

  3. FF D8 FF FE 00 24 47 00转图片

    String[] img = "FF D8 FF FE 00 24 47 00 9D 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F0 0 ...

  4. 8、D8: Default interface methods are only supported starting with Android N (--min-api 24): void

    1.错误信息 升级完 Android N 后,有些项目运行起来报错信息大致如下: Default interface methods are only supported starting with ...

  5. ArcGIS基于DEM计算水流方向的方法(D8算法)

    ArcGIS采用D8算法计算水流方向(9.3.1后新增),输入数据应首先完成了洼地填充处理: One of the keys to deriving hydrologic characteristic ...

  6. 使用 D8 分析 javascript 如何被 V8 引擎优化的

    在上一篇文章中我们讲了如何使用 GN 编译 V8 源码,文章最后编译完成的可执行文件并不是 V8,而是 D8.这篇我们讲一下如何使用 D8 调试 javascript 代码. 如果没有 d8,可以使用 ...

  7. 预科班D8

    2020.09.16星期三 预科班D8 学习内容: 一.注释 单行注释 ==>用 # 写在上一行或者该行后面 多行注释 ==>用 ''' '''或""" &q ...

  8. 正式班D8

    2020.10.15星期四 正式班D8 一.上节课复习 OSI七层协议 socket socket是对传输层以下的封装 IP+port标识唯一一个基于网络通讯的软件 TCP与UDP TCP:因为在通信 ...

  9. D8调试工具——jsvu的使用细则

    d8 is V8's own developer shell. D8 是一个非常有用的调试工具,你可以把它看成是 debug for V8 的缩写.我们可以使用 d8 来查看 V8 在执行 JavaS ...

  10. 桥牌笔记:Skill Level 4 D8

    西拿黑桃K.A后,转攻小方块. 看来只有一个小红桃失张了.飞方块没有必要冒险.但将牌分布4-0时会有点麻烦.

随机推荐

  1. 蜘蛛牌 (DFS)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1584 全部状态都判断一遍 代码: #include <stdio.h> #include ...

  2. 第5章 原型模式(Protype Pattern)

    原文 第5章 原型模式(Protype Pattern) 定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象. 原型图: 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Pro ...

  3. js中位运算的运用

    原文:js中位运算的运用 我们可能很少在编程中用位运算,如果没深入学习,可能也很难理解.平时的数值运算,其实是要先转换成二进制再进行运算的,而位运算就是直接进行二进制运算,所以位运算的执行效率肯定是更 ...

  4. Tomcat剖析(四):Tomcat默认连接器(1)

    Tomcat剖析(四):Tomcat默认连接器(1) 1. Tomcat剖析(一):一个简单的Web服务器 2. Tomcat剖析(二):一个简单的Servlet服务器 3. Tomcat剖析(三): ...

  5. CSharp设计模式读书笔记(8):桥接模式(学习难度:★★★☆☆,使用频率:★★★☆☆)

    桥接模式(Bridge Pattern): 将抽象部分与它的实现部分分离,使它们都可以独立地变化.它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模 ...

  6. VTune使用amplxe-cl进行Hardware Event-based Sampling Analysis 0分析

    于BASH正在使用VTune进行Hardware Event-based Sampling Analysis 0分析: 结果(部分)例如以下: 版权声明:本文博客原创文章.博客,未经同意,不得转载.

  7. 搭建及修正Hadoop1.2.1 MapReduce Pipes C++开发环境

    Hadoop目前人气超旺,返璞归真的KV理念让人们再一次换一个角度来冷静思考一些问题. 但随着近些年来写C/C++的人越来越少,网上和官方WIKI的教程直接落地的成功率却不高,多少会碰到这样那样的问题 ...

  8. Dungeon Master poj 2251 dfs

    Language: Default Dungeon Master Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16855 ...

  9. asp.net mvc3 数据验证(二)——错误信息的自定义及其本地化

    原文:asp.net mvc3 数据验证(二)--错误信息的自定义及其本地化 一.自定义错误信息         在上一篇文章中所做的验证,在界面上提示的信息都是系统自带的,有些读起来比较生硬.比如: ...

  10. HDU 1484 Basic wall maze (dfs + 记忆)

    Basic wall maze Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...