今天考得不太好,只拿了100+0+0+30=130分。。。


【GDKOI训练】音乐节拍

考场AC了!

其实就是大水一道

思路:二分查找

每次输入后,输出该时刻所在的区间的编号就好了。

总体难度:★★☆☆☆


【GDKOI训练】电视游戏问题##

思路:捆绑背包

设f[i,j]为前i个平台用j钱的最大价值。

然后一边输入一遍DP就好了。

具体过程请看下面的代码~~

总体难度:★★★★☆


【GDKOI训练】头晕的奶牛##

思路拓扑排序 ←(不懂的戳这里)

拓扑排序后,对于每条双向边,排序后位置靠前的先输出即可。

拓扑排序可以用BFS实现(不用管双向边)。

每连通到一个以前没到过的点,都把它存进队列里,并把它连到的所有边擦掉(所连接的点入度-1),再把这个点从图上永远擦去!

总体难度:★★★☆☆


【GDKOI训练】过路费##

变形的最短路算法。

思路:Floyd(DP)

用一个数组表示边值,一个数组表示点值,然后每次都把两个数组的值加起来判断就可以了。

只用做4次Floyd就可以了(卡常数,嘿嘿嘿嘿)

总体难度:★★☆☆☆


总结:这次比赛的质量还是挺高的。

终于不是那种简单到用暴力水法就可以AK的题目了(然而我还是A了)

我还是要学一下怎样做难题吧!

Σ(`д′*ノ)ノ


代码

音乐节拍

#include<cstdio>
using namespace std;
struct notes
{
int start,end;
}a[50010];
int main()
{
freopen("mnotes.in","r",stdin);
freopen("mnotes.out","w",stdout);
int l,r,n,k,i,j,mid,next=0,b;
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
{
scanf("%d",&b);
a[i].start=next,a[i].end=next+b-1;
next=next+b;
}
for(i=1;i<=k;i++)
{
scanf("%d",&b);
l=1,r=n;
while(l<=r)
{
mid=(l+r)/2;
if(a[mid].start<=b&&a[mid].end>=b) break;
if(a[mid].start>b) r=mid-1;
else if(a[mid].end<b) l=mid+1;
}
printf("%d\n",mid);
}
return 0;
}

电视游戏问题

#include<cstdio>
#include<cstring>
using namespace std;
__attribute__((optimize("-O2"))) //代码加速!!!
int n,m,f[51][100001];
__attribute__((optimize("-O2")))
int max(int x,int y)
{
if(x>y) return x;
else return y;
}
__attribute__((optimize("-O2")))
int main()
{
freopen("vidgame.in","r",stdin);
freopen("vidgame.out","w",stdout);
int i,j,k,t,ans=0,x,y,use,num,money,milk;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d%d",&use,&num);
for(j=use;j<=m;j++) f[i][j]=f[i-1][j-use];
for(j=1;j<=num;j++)
{
scanf("%d%d",&money,&milk);
for(k=m;k>=use+money;k--)
{
f[i][k]=max(f[i][k],f[i][k-money]+milk);
}
}
for(j=0;j<=m;j++) f[i][j]=max(f[i-1][j],f[i][j]);
}
for(i=1;i<=m;i++) if(f[n][i]>ans) ans=f[n][i];
printf("%d\n",ans);
return 0;
}

头晕的奶牛

#include<cstdio>
using namespace std;
int a[100010],lian[100010][110],b[100010],date[100010];
__attribute__((optimize("-O2")))
int main()
{
freopen("dizzy.in","r",stdin);
freopen("dizzy.out","w",stdout);
int n,m1,m2,i,j,k,x,y,head=0,tail=0;
scanf("%d%d%d",&n,&m1,&m2);
for(i=1;i<=m1;i++)
{
scanf("%d%d",&x,&y);
lian[x][++lian[x][0]]=y;
a[y]++;
}
for(i=1;i<=n;i++)
{
if(!a[i])
{
tail++;
date[tail]=i;
b[i]=tail;
}
}
while(head<tail)
{
head++;
k=date[head];
for(i=1;i<=lian[k][0];i++)
{
j=lian[k][i];
a[j]--;
if(!a[j])
{
tail++;
date[tail]=j;
b[date[tail]]=tail;
}
}
}
for(i=1;i<=m2;i++)
{
scanf("%d%d",&x,&y);
if(b[x]>b[y]) printf("%d %d\n",y,x);
if(b[x]<b[y]) printf("%d %d\n",x,y);
}
return 0;
}

过路费

#include<cstdio>
using namespace std;
int a[100010],lian[100010][110],b[100010],date[100010];
__attribute__((optimize("-O2")))
int main()
{
freopen("dizzy.in","r",stdin);
freopen("dizzy.out","w",stdout);
int n,m1,m2,i,j,k,x,y,head=0,tail=0;
scanf("%d%d%d",&n,&m1,&m2);
for(i=1;i<=m1;i++)
{
scanf("%d%d",&x,&y);
lian[x][++lian[x][0]]=y;
a[y]++;
}
for(i=1;i<=n;i++)
{
if(!a[i])
{
tail++;
date[tail]=i;
b[i]=tail;
}
}
while(head<tail)
{
head++;
k=date[head];
for(i=1;i<=lian[k][0];i++)
{
j=lian[k][i];
a[j]--;
if(!a[j])
{
tail++;
date[tail]=j;
b[date[tail]]=tail;
}
}
}
for(i=1;i<=m2;i++)
{
scanf("%d%d",&x,&y);
if(b[x]>b[y]) printf("%d %d\n",y,x);
if(b[x]<b[y]) printf("%d %d\n",x,y);
}
return 0;
}

最新文章

  1. SET-UID程序漏洞实验
  2. IDA 在string窗口中显示中文字符串
  3. HDU 1702 http://acm.hdu.edu.cn/showproblem.php?pid=1702
  4. datazen logo修改
  5. python高级编程之访问超类中的方法:super()
  6. 老李推荐:第8章5节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-运行测试脚本
  7. centos安装包选择--liveCD、liveDVD、bin-DVD、netinstall和minimal
  8. leetcode python 037 求解数独
  9. Solaris:你好奇的十件事
  10. 【开源GPS追踪】 之 硬件开源
  11. POJ1845
  12. Codeforces 448C Painting Fence(分治法)
  13. 【MySQL】-NO.21.MySQL.1.MySQL.1.001-【Install MySQL5.7 On Windows】
  14. 深入出不来nodejs源码-流程总览
  15. C#快速读写文件
  16. Android自定义字体
  17. conv1d UpSampling1D aotoencoder 自编码代码摘录
  18. WCF服务部署
  19. sys.argv和getopt.getopt()的用法
  20. ZT Android4.2关于bluetooth在HAL层的分析(1)

热门文章

  1. C# 选择文件夹 选择文件
  2. JavaWeb_客户端相对/绝对路径和服务器端路径
  3. php的 strval函数
  4. 分布式-网络通信-线程(socket)
  5. Docker 的安装与使用
  6. java 手机号/身份证(*)加密隐藏中间某几位几位
  7. JS闭包的理解及常见应用场景
  8. ffmpeg循环推流
  9. PHP CI 框架初识(一)
  10. docker top 和 docker exec ps 命令查看的PID区别