发现之前咕掉了这个考试的总结。

今天就把它给补上。

这也是一个炸裂的一场

开局以为 \(T1\) 可做,然而事实证明我又错了。。。

莽了一个随机化上去,轻松过了所有样例。。。

以为稳了

然而挂掉了。。。

\(25pts\) 不如暴力

然后感觉 \(T2\) 并不是很可调,所以就打了一个只有俩方程式的部分分数。。。

然后还挂了。

其实一眼就能看出来是高斯消元。然后错误的认为大多数人调不出来。

然而到最后这个题目的得分最高。。。。

无话可说。。

\(T3\) 也是一个玄学题目。

然而特殊性质全部打挂。。。

只留下了 \(20pts\) 的暴力分数。。。

导弹袭击:

简单凸包

我们首先简化一下题目所给的信息。

其实就是找到

\[\frac {A}{a_i} + \frac{B}{b_i}
\]

这个式子的最值,我们经过一顿乱化。

然后可以将这个式子转化为一个斜率式

将 \((\frac {1}{a_i},\frac {1}{b_i})\) 看作坐标系上面的点

之后用单调栈维护这个函数的凸包就行了



#include<bits/stdc++.h>
using std::cout; using std::endl;
#define debug cout<<"debug"<<endl
#define double long double
#define R register int
namespace xin_io
{
#define gc() p1 == p2 and (p2 = (p1 = buf) + fread(buf,1,1<<20,stdin),p1 == p2) ? EOF : *p1++
#define scanf eat1 = scanf
#define freopen eat2 = freopen
int eat1; FILE *eat2; char buf[1<<20],*p1 = buf,*p2 = buf;
inline void openfile() {freopen("t.txt","r",stdin);} inline void outfile() {freopen("o.txt","w",stdout);}
template<class type>inline type get()
{
type s = 0,f = 1; register char ch = gc();
while(!isdigit(ch)) {if(ch == '-') f = -1; ch = gc();}
while(isdigit(ch)) {s = s * 10 + ch - '0'; ch = gc();}
return s * f;
}
}
using namespace xin_io; static const int maxn = 1e6+10,inf = 0x7f7f7f7f;
#define try(i,a,b) for(register signed i=a;i<=b;++i)
#define throw(i,a,b) for(register signed i=a;i>=b;--i)
typedef long long ll;
namespace xin
{
class xin_data
{
public:
int x,y,id;
friend bool operator < (xin_data x,xin_data y)
{return (x.x == y.x) ? x.y > y.y : x.x > y.x;}
}d[maxn];
double xie[maxn];
inline double k(xin_data i,xin_data j)
{return (double)(1.0 * i.x * j.x * (j.y - i.y)) / (double)(1.0 *i.y * j.y * (j.x - i.x));}
int n;
int q[maxn],top = 0;
int nxt[maxn];
bool vis[maxn];
inline short main()
{
#ifndef ONLINE_JUDGE
openfile();
#endif
n = get<signed>();
int maxx = 0,maxy = 0;
try(i,1,n)
{
d[i].x = get<signed>(); d[i].y = get<signed>(); d[i].id = i;
if(maxy < d[i].y or (maxy == d[i].y and maxx < d[i].x)) maxx = d[i].x,maxy = d[i].y;
}
std::sort(d+1,d+n+1);
// for(int i=1;i<=n;++i) cout<<p[i].x<<' '<<p[i].y<<' '<<p[i].id<<endl;
q[++top] = 1;
for(register int i=2;i<=n and maxx<=d[i].x;++i)
{
if(d[q[top]].x==d[i].x)
{
if(d[q[top]].y==d[i].y)
nxt[d[i].id]=nxt[d[q[top]].id],nxt[d[q[top]].id]=d[i].id;//,q[++t] = i,k[t]=k[t-1];
}
else
{
while(top > 1 and xie[top] > k(d[q[top]],d[i]))
top--;
q[++top]=i;xie[top] = k(d[q[top-1]],d[i]);
}
}
for(;top;--top) for(register int i=d[q[top]].id;i;i=nxt[i])
vis[i]=1;
// for(;t;--t) f[q[t].id] = 1;
for(register int i=1;i<=n;++i)
if(vis[i])printf("%d ",i); return 0;
}
}
signed main() {return xin::main();}

炼金术士的疑惑:

就是朴实无华的高斯消元。

只不过处理那些字符串读入的时候细节比较多。

没什么好说的



#include<bits/stdc++.h>
using std::cout; using std::endl;
#define debug cout<<"debug"<<endl
namespace xin_io
{
#define scanf eat1 = scanf
#define freopen eat2 = freopen
int eat1; FILE *eat2;
inline void openfile() {freopen("t.txt","r",stdin);} inline void outfile() {freopen("o.txt","w",stdout);}
}
#define double long double
using namespace xin_io; static const int maxn = 1e3+10,inf = 0x7f7f7f7f;const double eps = 1e-15,pan = 1.7;
const double ki = 2.116,ki2 = 5.897;
#define try(i,a,b) for(register signed i=a;i<=b;++i)
#define throw(i,a,b) for(register signed i=a;i>=b;--i)
typedef long long ll;
namespace xin
{
double a[maxn][maxn];
int n,ok = 0;
std::string m[maxn]; int tot;
double ans[maxn],ret = 0.0;
inline bool equal(double x,double y) {return fabs(x - y) <= eps;}
inline void gss()
{
for(register int i=1;i<=n;++i)
{
int k = i;
double t;
for(register int j=i+1;j<=n;++j)
if(fabs(a[k][i]) < fabs(a[j][i]))
k = j;
if(k != i)
for(register int j=1;j<=n+1;++j)
t = a[k][j],a[k][j] = a[i][j],a[i][j] = t;
if(fabs(a[i][i]) >= eps)
for(register int j=1;j<=n;++j)
{
if(i != j)
{
if(a[i][i]) t = a[j][i] / a[i][i];
for(register int k=1;k<=n+1;++k)
a[j][k] -= t * a[i][k];
}
}
}
for(register int i=n;i>=1;--i)
{
for(register int k=i+1;k<=n;++k)
a[i][n+1] -= a[i][k] * ans[k];
if(a[i][i]) ans[i] = a[i][n+1] / a[i][i];
}
}
inline void pand()
{if(ok == 1) {ret /= ki,ret = -ret;}}
inline void pand2()
{if(ok == 2) {ret /=ki2,ret = -ret;}}
class xin_chem
{
public:
double k;
std::string s;
xin_chem(){}
xin_chem(double kx,std::string sx){k = kx; s = sx;}
};
class xin_data
{
public:
std::vector<xin_chem>vec;
}d[maxn];
std::string s;
double k[maxn];
std::map<std::string,int>vis;
inline short main()
{
#ifndef ONLINE_JUDGE
openfile();
#endif
std::ios::sync_with_stdio(false);
std::cin.tie(0); cout.tie(0);
std::cin>>n;
int fu = 1;
try(hang,1,n+1)
{
while(1)
{
bool dot = 0;
double num = 0;
std::cin>>s; //this is the number
int l = s.size();
int cnt = 0;
try(i,0,l-1)
{
cnt++;
if(s[i] == '.') {cnt = 0; dot = 1; continue;}
num = num * 10 + s[i] - '0';
}
if(dot) num /= pow(10.0,cnt);
std::cin>>s; //this is the alpha
d[hang].vec.push_back(xin_chem(num,s));
if(!vis[s]) m[++tot] = s,vis[s] = 1;
std::cin>>s; //this is the opeartor
if(equal((double)n/pow(10,2),pan+0.2)) ok = 2;
if(s[0] == '=') {fu = -1;break;}
}
while(1)
{
bool dot = 0;
double num = 0;
std::cin>>s; //this is the number
int l = s.size();
int cnt = 0;
try(i,0,l-1)
{
cnt++;
if(s[i] == '.') {cnt = 0; dot = 1; continue;}
num = num * 10 + s[i] - '0';
}
num *= fu;
if(dot) num /= pow(10.0,cnt);
std::cin>>s; //this is the alpha
if(!vis[s]) m[++tot] = s,vis[s] = 1;
d[hang].vec.push_back(xin_chem(num,s));
std::cin>>s; //this is the operator
if(equal((double)n/pow(10.0,2) ,pan)) ok = 1;
if(s[0] == 'H' and s[1] == '=') break;
}
int cnt = 0; //to record the number to the back
int fg = 1;
double num = 0;
std::cin>>s; //this is the H
if(s[0] == '?') break;
int l = s.size();
bool dot = 0;
if(s[0] == '-')
{
try(i,1,l-1)
{
cnt++;
if(s[i] == '.') {cnt = 0;dot = 1;continue;}
num = num * 10 + s[i] - '0';
}
num = -num;
}
else
{
try(i,0,l-1)
{
cnt++;
if(s[i] == '.') {cnt = 0;dot = 1;continue;}
num = num * 10 + s[i] - '0';
}
}
if(dot)num /= pow(10.0,cnt);
k[hang] = num;
} // try(i,1,tot) cout<<m[i]<<endl; try(i,1,n)
{
try(j,1,tot)
{
try(t,0,d[i].vec.size()-1)
if(m[j] == d[i].vec[t].s)
a[j][i] = d[i].vec[t].k;
}
} try(i,1,tot)
{
try(j,0,d[n+1].vec.size()-1)
if(d[n+1].vec[j].s == m[i])
a[i][n+1] = d[n+1].vec[j].k;
} /* try(i,1,tot)
{
try(j,1,n+1)
cout<<a[i][j]<<' ';
cout<<endl;
} try(i,1,n+1)
{
try(j,0,d[i].vec.size()-1)
cout<<d[i].vec[j].k<<' '<<d[i].vec[j].s<<' ';
cout<<"h = "<<k[i];
cout<<endl;
}*/
gss(); // try(i,1,n) cout<<"ans[i] = "<<ans[i]<<endl; try(i,1,n)
{
ret += k[i] * ans[i];
}
// cout<<"tot = "<<tot<<" n = "<<n<<endl;
pand();pand2();
if(fabs(ret) <= eps) printf("0.0\n");
else printf("%.1Lf\n",ret); return 0;
}
}
signed main() {return xin::main();}

老司机的狂欢:

暂时只有 \(40pts\) 做法

就是爆扫 + 特殊性质



#include<bits/stdc++.h>
using std::cout; using std::endl;
#define int long long
#define debug cout<<"debug"<<endl
namespace xin_io
{
#define gc() p1 == p2 and (p2 = (p1 = buf) + fread(buf,1,1<<20,stdin),p1 == p2) ? EOF : *p1++
#define scanf eat1 = scanf
#define freopen eat2 = freopen
int eat1; FILE *eat2; char buf[1<<20],*p1 = buf,*p2 = buf;
inline void openfile() {freopen("t.txt","r",stdin);} inline void outfile() {freopen("o.txt","w",stdout);}
template<class type>inline type get()
{
type s = 0,f = 1; register char ch = gc();
while(!isdigit(ch)) {if(ch == '-') f = -1; ch = gc();}
while(isdigit(ch)) {s = s * 10 + ch - '0'; ch = gc();}
return s * f;
}
}
using namespace xin_io; static const int maxn = 1e6+10,inf = 0x7f7f7f7f;
#define try(i,a,b) for(register signed i=a;i<=b;++i)
#define throw(i,a,b) for(register signed i=a;i>=b;--i)
typedef long long ll;
namespace xin
{
int n,k;
class xin_data
{
public:
int x,a,id;
friend bool operator < (xin_data x,xin_data y)
{return x.x < y.x;}
}d[maxn];
inline int dis(int a,int t) {return a * t * t / 2;}
int a[maxn],zhi = 0;
xin_data b[maxn],now[maxn];
inline int check()
{
register int t = 0;
try(i,1,zhi) b[i] = now[i] = d[a[i]];//,cout<<b[i].x<<' '; cout<<endl;
while(++t)
{
// cout<<"t = "<<t<<endl;
try(i,1,zhi)
now[i].x = b[i].x + dis(b[i].a,t);
try(i,1,zhi-1) if(now[i].x >= now[i+1].x) return t - 1;
}
}
inline void outa()
{
cout<<"a[i] = ";
try(i,1,zhi) cout<<a[i]<<' ';
cout<<endl;
}
int ans = 0;
int maxv = -inf,maxp[maxn];
int zhuan[maxn];
inline bool better()
{
try(i,1,zhi) zhuan[i] = d[a[i]].id;
std::sort(zhuan+1,zhuan+zhi+1);
std::sort(maxp+1,maxp+zhi+1);
try(i,1,zhi) if(zhuan[i] < maxp[i]) return 1;
return 0;
}
void dfs(int ms)
{
if(ms == zhi)
{
int tim = check();
if(tim > maxv or (tim == maxv and better()))
{
maxv = tim;
try(i,1,zhi) maxp[i] = d[a[i]].id;
}
return ;
}
try(i,a[zhi]+1,n)
{
a[++zhi] = i;
dfs(ms);
a[zhi--] = 0;
}
}
inline short main()
{
#ifndef ONLINE_JUDGE
openfile();
#endif
n = get<signed>(); k = get<signed>();
try(i,1,n) d[i].x = get<ll>(),d[i].a = get<signed>(),d[i].id = i;
std::sort(d+1,d+n+1);
if(k == 1)
{
cout<<86400<<endl<<-1<<endl;
return 0;
}
if(k == n)
{
try(i,1,n) a[++zhi] = i;
cout<<check()<<endl;
try(i,1,n)
printf("%lld\n",i);
}
if(n > 20)
{
cout<<0<<endl;
return 0;
}
dfs(k);
printf("%lld\n",maxv);
std::sort(maxp+1,maxp+1+k);
try(i,1,k) printf("%lld\n",maxp[i]);
return 0;
}
}
signed main() {return xin::main();}

[考试总结]noip18的更多相关文章

  1. 全网独家MongoDB Certified DBA Associate考试认证视频

    该视频意在让所有学员一次通过考试,避免重复考试而承担的巨额考试费用! 目前MongDB发展迅猛,有赶超mysql,和oracle看齐的苗头.在这个时候MongoDB也适时的推出了官方的认证考试&quo ...

  2. 记lrd的高二上学期第五次调研考试

    河北某某中学的调研考试其实是很好玩的经历呢.可惜没有太多机会了. 背景: NOIP2016回来之后没有好好学文化课-.自习能翘就翘了,衡中特产学案自助没有好好写(说来我好像从来没被老师查到过,上课写学 ...

  3. 1009: [HNOI2008]GT考试

    1009: [HNOI2008]GT考试 Time Limit: 1 Sec Memory Limit: 162 MB Description 阿申准备报名参加GT考试,准考证号为N位数\(X_1X_ ...

  4. mysql练习题-查询同时参加计算机和英语考试的学生的信息-遁地龙卷风

    (-1)写在前面 文章参考http://blog.sina.com.cn/willcaty. 针对其中的一道练习题想出两种其他的答案,希望网友给出更多回答. (0) 基础数据 student表 +-- ...

  5. js封装用户选项传递给Servlet之考试系统二

    <%@ page language="java" import="java.util.*" contentType="text/html; ch ...

  6. js动态生成选项之考试系统(一)

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  7. 分享一个LiteDB做的简单考试系统辅助工具

    凌晨,被安排在公司值班,因为台风“灿鸿”即将登陆,风力太大,办公楼,车间等重要部分需要关注.所以无聊,那就分享一下,今天给朋友临时做的一个小的考试系统辅助工具吧.其实非常小,需求也很简单,但是可以根据 ...

  8. CCF考试

    第八次CCF考试记录 代码还不知道对不对,过两天出成绩. 成绩出来了,310分. 100+100+100+10+0: 考试13:27开始,17:30结束,提交第4题后不再答题,只是检查前四题的代码 第 ...

  9. PAT 1041. 考试座位号(15)

    每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座 ...

随机推荐

  1. OpenFeign远程调用原理

    之前对OpenFeign 了解到只用在接口上面打个注解,然后就可以通过内部调用去调用远程地址.研究完Feign生成对象以及代理对象的作用过程之后发现这个过程用到了Spring的好多东西,在之后的过程中 ...

  2. 《四大点,搞懂Redis到底快在哪里?》

    一.开发语言 二.纯内存访问 三.单线程 四.非阻塞多路I/O复用机制 前言 Redis是一种基于键值对(Key-Value)的NoSQL数据库 ,Redis的Value可以由String,hash, ...

  3. 后缀数组&manachar总结

    洛谷题单 后缀数组 前置芝士 后缀数组 1 后缀数组 2 后缀数组 3 例题略解 P2463 [SDOI2008]Sandy的卡片 板子题... 然而我还是不会. 大概做法就是先把所有的串差分后拼成一 ...

  4. 玩转STM32MP157- 在应用层中使用 fbtft

    fbtft使用的是framebuffer框架,这种框架将显示设备抽象为帧缓冲区,对framebuffer设备(/dev/fbx(0.1.2..))进行相关操作可以反应到LCD上. 现在尝试下在用户空间 ...

  5. 数据同步Datax与Datax_web的部署以及使用说明

    一.DataX3.0概述 DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL.Oracle等).HDFS.Hive.ODPS.HBase.FTP等各种异构数据源之间稳定高 ...

  6. 重新点亮linux 命令树————帮助命令[一]

    前言 重新整理一下linux的命令. 正文 这里首先介绍帮助命令. 帮助命令常用的有三个: man help info 那么就来看下这三个. man 第一个man,man不是男人的意思,而是manua ...

  7. 3、mysql的多实例配置(2)

    4.设置mysql多实例启动脚本: (1)3306: [root@backup application]# cat /data/3306/mysql #!/bin/sh . /etc/init.d/f ...

  8. c++11 线程间同步---利用std::condition_variable实现

    1.前言 很多时候,我们在写程序的时候,多多少少会遇到下面种需求 一个产品的大致部分流程,由工厂生产,然后放入仓库,最后由销售员提单卖出去这样. 在实际中,仓库的容量的有限的,也就是说,工厂不能一直生 ...

  9. POJ 3347 Kadj Squares 计算几何

    求出正方形的左右端点,再判断是否覆盖 #include <iostream> #include <cstdio> #include <cstring> #inclu ...

  10. POJ 2506 Tiling dp+大数 水题

    大致题意:现有两种方块(1X2,2X2),方块数量无限制.问用这两种方块填满2Xn的矩阵的填法有多少种. 分析:通俗点说,找规律.专业化一点,动态规划. 状态d[i],表示宽度为i的填法个数. 状态转 ...