[考试总结]noip模拟33
连炸两场。。。
伤心。。。
第一个题目首先因为有期望坐镇,然后跳过。。。
然后第二个题目发现题目挺绕的,然后转化了一句话题意,然后。。。。。
\(\huge{\text{转化错了!!!!}}\)
然而。。。
\(\huge{\text{样例过了!!!}}\)
什么玩意!!!!!
然后就有 \(9pts\) 。。。
然后 \(T3\) 打了一个自己都觉得假的最大生成树。
然后完全图还没有判断正确,导致。。。。
只有 \(10pts\)
如果再这样就真的要被翻了。。。。
Hunter
又是一个结论题。
其实这个看到题解之后完全不用懊悔
这个是真的不太好推出来。
虽然思路很简单。
答案就是:
\]
然后就三行代码。。。。
#include<bits/stdc++.h>
typedef long long ll;const ll mod = 998244353; ll n,w[1000001],ans = 1;inline ll ksm(ll x,ll y) {register ll ret = 1; while(y) {if(y & 1) ret = ret * x % mod;x = x * x % mod; y >>= 1;} return ret;}
signed main() {std::cin >> n >> w[1]; for(ll i=2;i<=n;++i) std::cin >> w[i],(ans += w[i] * ksm(w[1] + w[i],mod-2) % mod) %= mod; std::cout<<ans;}
真不骗你,就三行。
Defence
这个题目的意思并不是要让你求 \(0\) 的个数!!!!
而是求最长的连续 \(0\) 的个数。。。。
然后显然发现可以线段树合并。。。。
跟板子一样。。。。
水得一批。。。。
#include<bits/stdc++.h>
using std::cout; using std::endl;
#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)
#define asm(i,x) for(register signed i=head[x];i;i=edge[i].next)
namespace xin_io
{
#define debug cout<<"debug"<<endl
#define enum(x) cout<<#x" = "<<x<<endl;
#define gc() p1 == p2 and (p2 = (p1 = buf) + fread(buf,1,1<<20,stdin),p1 == p2) ? EOF : *p1++
char buf[1<<20],*p1 = buf,*p2 = buf; int ak; typedef long long ll; typedef unsigned long long ull;
class xin_stream{public:template<typename type>inline xin_stream &operator >> (type &x)
{
register type s = 0; register int f = 1; register char ch = gc();
while(!isdigit(ch)) {if(ch == '-') f = -1; ch = gc();}
while( isdigit(ch)) s = (s << 1) + (s << 3) + (ch xor 48),ch = gc(); return x = s * f,*this;
}}io;
}
using namespace xin_io; static const int maxn = 1e5+10,inf = 1e9+7,mod = 998244353; const ll llinf = 1e18+7;
namespace xin
{
class xin_edge{public:int next,ver;}edge[maxn];
int head[maxn],zhi = 0;
inline void add(int x,int y) {edge[++zhi].ver = y; edge[zhi].next = head[x]; head[x] = zhi;}
int root[maxn],tot;
class xin_segment
{
private:
#define ls(fa) (t[fa].lson)
#define rs(fa) (t[fa].rson)
inline void up(int fa)
{
t[fa].size = t[ls(fa)].size + t[rs(fa)].size;
t[fa].s = std::max(t[ls(fa)].s , t[rs(fa)].s);
if(t[rs(fa)].lpos and t[ls(fa)].rpos) t[fa].s = std::max(t[fa].s,t[rs(fa)].lpos - t[ls(fa)].rpos - 1);
if(!t[rs(fa)].rpos) t[fa].rpos = t[ls(fa)].rpos; else t[fa].rpos = t[rs(fa)].rpos;
if(!t[ls(fa)].lpos) t[fa].lpos = t[rs(fa)].lpos; else t[fa].lpos = t[ls(fa)].lpos;
}
public:
class xin_tree{public:int s,lson,rson,lpos,rpos,size;}t[maxn * 32];
void insert(int &fa,int l,int r,int pos)
{
if(!fa) fa = ++tot;
if(l == r) {t[fa].lpos = t[fa].rpos = l; t[fa].size = 1; return ;}
register int mid = l + r >> 1;
if(pos <= mid) insert(ls(fa),l,mid,pos); else insert(rs(fa),mid+1,r,pos);
up(fa);
}
int merge(int x,int y,int l,int r)
{
if(!x or !y) return x | y;
if(l == r) return x;
register int mid = l + r >> 1;
ls(x) = merge(ls(x),ls(y),l,mid); rs(x) = merge(rs(x),rs(y),mid+1,r);
up(x);
return x;
}
}t;
int n,m,qnum;
int ans[maxn];
void dfs(int x)
{
asm(i,x)
{
register int y = edge[i].ver;
dfs(y);
root[x] = t.merge(root[x],root[y],1,m);
}
if(!t.t[root[x]].size) ans[x] = -1;
else ans[x] = std::max(t.t[root[x]].s,t.t[root[x]].lpos - 1 + m - t.t[root[x]].rpos);
}
inline short main()
{
io >> n >> m >> qnum;
try(i,1,n-1)
{
register int x,y; io >> x >> y;
add(x,y);
}
try(i,1,qnum)
{
register int x,y; io >> x >> y;
t.insert(root[x],1,m,y);
}
dfs(1);
try(i,1,n) printf("%d\n",ans[i]);
return 0;
}
}
signed main() {return xin::main();}
Connect
这个题目给人的第一直觉就是求一个最大生成树,然后用总价减去
然后是假的,并且你可以过样例。
然后 \(10pts\) 收场。。。。
我们可以考虑状压,因为发现这个 \(n\) 的范围很小很小。
然后枚举补集的子集,很好转移。。
%: pragma GCC optimize("O3","Ofast","inline")
#include<bits/stdc++.h>
using std::cout; using std::endl;
#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)
#define asm(i,x) for(register signed i=head[x];i;i=edge[i].next)
namespace xin_io
{
#define debug cout<<"debug"<<endl
#define enum(x) cout<<#x" = "<<x<<endl;
#define gc() p1 == p2 and (p2 = (p1 = buf) + fread(buf,1,1<<20,stdin),p1 == p2) ? EOF : *p1++
char buf[1<<20],*p1 = buf,*p2 = buf; int ak; typedef long long ll; typedef unsigned long long ull;
class xin_stream{public:template<typename type>inline xin_stream &operator >> (type &x)
{
register type s = 0; register int f = 1; register char ch = gc();
while(!isdigit(ch)) {if(ch == '-') f = -1; ch = gc();}
while( isdigit(ch)) s = (s << 1) + (s << 3) + (ch xor 48),ch = gc(); return x = s * f,*this;
}}io;
}
using namespace xin_io; static const int maxn = 15,inf = 1e9+7,mod = 998244353; const ll llinf = 1e18+7;
namespace xin
{
int sum[1<<maxn],dis[maxn][maxn];
int n,m;
int f[1<<maxn][maxn];
inline short main()
{
io >> n >> m;
try(i,1,m)
{
register int x,y,z; io >> x >> y >> z;
dis[x-1][y-1] = dis[y-1][x-1] = z;
}
try(i,1,(1 << n) - 1)try(j,0,n-1)try(k,j+1,n-1)
if(((i >> j) & 1) and ((i >> k) & 1))
sum[i] += dis[j][k];
memset(f,-0x3f,sizeof (f));
// try(i,0,(1<<maxn)-1) try(j,0,maxn-1) f[i][j] = -inf;
f[1][0] = 0;
try(i,1,(1 << n) - 1)
try(j,0,n - 1)
{
if(f[i][j] == -1044266559) continue;
try(k,0,n - 1)if(dis[j][k] and !((1 << k) & i)) f[i | (1 << k)][k] = std::max(f[i | (1 << k)][k],f[i][j] + dis[j][k]);
register int jihe = (i xor ((1 << n) - 1));
for(register int k=jihe;k;k=(k-1)&jihe) f[i|k][j] = std::max(f[i|k][j],f[i][j] + sum[k|(1<<j)]);
}
printf("%d\n",sum[(1<<n)-1] - f[(1 << n) - 1][n-1]);
return 0;
}
}
signed main() {return xin::main();}
[考试总结]noip模拟33的更多相关文章
- 2021.8.8考试总结[NOIP模拟33]
T1 Hunter 考场上一看期望直接状压拿了$45pts$跑了.结果正解只用$4$行? 把问题转化为一号猎人之前死的猎人数的期望加一. 期望的线性性. 对每个猎人$i$,$w_i+w_1$种情况中有 ...
- 8.8考试总结(NOIP模拟33)[Hunter·Defence·Connect]
无法逃避的是自我,而无法挽回的是过去. 前言 还算可以,不过 T1 少 \(\bmod\) 了一下挂了 25pts,T2 没看清题面挂了 27pts. 下回注意吧.. T1 Hunter 解题思路 感 ...
- noip模拟33[进阶啦啦啦]
noip模拟33 solutions 不知道该咋说,这场考试其实是我这三四场以来最最最最最顺心的一场了 为啥呢?因为我这回思考有很多结果,得到了脑袋的回复 就是你想了半个小时就有了一点点头绪,那感觉就 ...
- noip模拟33
\(\color{white}{\mathbb{失足而坠千里,翻覆而没百足,名之以:深渊}}\) 这场考试的时间分配非常不科学 开题试图想 \(t1\) 正解,一个半小时后还是只有暴力,特别惊慌失措 ...
- 6.17考试总结(NOIP模拟8)[星际旅行·砍树·超级树·求和]
6.17考试总结(NOIP模拟8) 背景 考得不咋样,有一个非常遗憾的地方:最后一题少取膜了,\(100pts->40pts\),改了这么多年的错还是头一回看见以下的情景... T1星际旅行 前 ...
- 5.23考试总结(NOIP模拟2)
5.23考试总结(NOIP模拟2) 洛谷题单 看第一题第一眼,不好打呀;看第一题样例又一眼,诶,我直接一手小阶乘走人 然后就急忙去干T2T3了 后来考完一看,只有\(T1\)骗到了\(15pts\)[ ...
- 5.22考试总结(NOIP模拟1)
5.22考试总结(NOIP模拟1) 改题记录 T1 序列 题解 暴力思路很好想,分数也很好想\(QAQ\) (反正我只拿了5pts) 正解的话: 先用欧拉筛把1-n的素数筛出来 void get_Pr ...
- 2021.9.17考试总结[NOIP模拟55]
有的考试表面上自称NOIP模拟,背地里却是绍兴一中NOI模拟 吓得我直接文件打错 T1 Skip 设状态$f_i$为最后一次选$i$在$i$时的最优解.有$f_i=max_{j<i}[f_j+a ...
- [考试总结]noip模拟23
因为考试过多,所以学校的博客就暂时咕掉了,放到家里来写 不过话说,vscode的markdown编辑器还是真的很好用 先把 \(noip\) 模拟 \(23\) 的总结写了吧.. 俗话说:" ...
随机推荐
- Lin语法(Linq对数据库操作)
一.Linq语句的应用: var queryAllCustomers = from cust in customers group cust by cust.City into custGroup ...
- js笔记14
1.作用域面试题 画图分析 2.DOM document object model 节点树状图 document>documentElement>body>tagname 3.我们常 ...
- Android系统编程入门系列之加载界面Activity
上回说到应用初始化加载及其生命周期,在Android系统调用Applicaiton.onCreate()之后,继续创建并加载清单文件中注册的首个界面即主Activity,也可称之为入口界面.主Acti ...
- 15、linux文件、目录的权限及如何改变权限(root用户不受任何权限的限制)
15.1.linux普通文件的读.写.执行权限说明: r:读,表示具有读取\阅读文件内容的权限: w:可写,表示具有新增,修改文件内容的权限: 如果没有r配合,那么vi编辑文件会提示无法编辑(但可以强 ...
- HDU 4821 2013长春现场赛hash
题意: 一个字符串S 问其中有几个子串能满足以下条件: 1.长度为M*L 2.可以被分成M个L长的小串 每个串都不一样 分析: hash方法,一个种子base,打表出nbase[i]表示base的 ...
- Unknown custom element: <...> - did you register the component correct?
之前用过的组件没有出现过任何问题,但偏偏在其他目录下引用就出问题了.组件的名称.import的路径都没任何问题,发现这是因为组件name填写不规范所导致的. 在定义组件的时候我们要严格按照官方文档要求 ...
- 用阻塞队列实现一个生产者消费者模型?synchronized和lock有什么区别?
多线程当中的阻塞队列 主要实现类有 ArrayBlockingQueue是一个基于数组结构的有界阻塞队列,此队列按FIFO原则对元素进行排序 LinkedBlockingQueue是一个基于链表结构的 ...
- ExtJs4学习(五)最基本的Ext类
Ext类是ExtJs中最常见.最基础的一个类,它是一个全局对象,封装了所有类.单例和 Sencha 库所提供的实用方法. 大多数用户界面组件在一个较低的层次嵌套在命名空间中, 但是提供的许多常见的实用 ...
- pybot参数
p.p1 { margin: 0; font: 12px "Helvetica Neue" } p.p2 { margin: 0; font: 12px "Helveti ...
- WPF教程十三:自定义控件进阶可视化状态与自定义Panel
如果你敲了上一篇的代码,经过上一篇各种问题的蹂躏,我相信自定义控件基础部分其实已经了解的七七八八了.那么我们开始进阶,现在这篇讲的才是真正会用到的核心的东西.简化你的代码.给你提供更多的可能,掌握了这 ...