不小心有咕掉了一段时间

这次考试咕掉的分数也是太多了

然后就是这次暴力完全没有打满

遗憾啊遗憾

T1

入阵曲

前面的题目背景故意引导我们去往矩阵快速幂的方向去想

然而半毛钱关系没有

其实就是维护前缀和

二维的

然后就有显然的 \(\mathcal O(n^4)\) 的暴力。

然而我这个 \(sb\) 在考试之前认为没有开 \(long\;long\) 的必要,然后就把 \(long \;long\) 给关了。

\(60\;->\;50\)

心态炸裂

\(\huge_{\text{以后我要是在打暴力关long long我就是dogge}}\)

然后正解就是可以压缩一维的计算。

就是对于每个余数进行记录就行。

之后就是一个优秀的 \(\mathcal O(n^3)\) 的算法。

其实我认为有点扫描线的感觉。

\(code:\)



#include<bits/stdc++.h>
using std::cout; using std::endl;
#define int long long
#define debug cout<<"debug"<<endl
#define freopen eat2 = freopen
#define scanf eat1 = scanf
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
char buf[1<<20],*p1 = buf,*p2 = buf;FILE *eat2;
inline void openfile() {freopen("t.txt","r",stdin);} inline void outfile(){freopen("o.txt","w",stdout);}
inline int get()
{
int 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; int eat1;
static const int maxn = 401,maxl = 1e6+10;
#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)
namespace xin
{
int a[maxn][maxn];
int ans;
int n,m,k;
int he[maxn][maxn],b[maxl],cnt[maxl];
inline short main()
{
#ifndef ONLINE_JUDGE
openfile();
#endif
n = get(); m = get(); k = get();
try(i,1,n) try(j,1,m)
{
a[i][j] = get();
he[i][j] = he[i-1][j] + he[i][j-1] - he[i-1][j-1] + a[i][j];
}
// try(i,1,n){cout<<endl; try(j,1,m) cout<<he[i][j]<<' ';} cout<<endl;
try(i,0,n-1) try(j,i+1,n)
{
cnt[0] = 1;
try(t,1,m)
{
b[t] = (he[i][t] - he[j][t]) % k;
if(b[t] < 0) b[t] += k;
ans += cnt[b[t]]++;
}
try(t,1,m) cnt[b[t]] = 0;
}
cout<<ans<<endl;
return 0;
}
}
signed main() {return xin::main();}

码风逐渐扭曲

T2

遗憾的不是没有想出来看似简单的贪心正解。

而是没有打对自己的暴力。

我不是很擅长暴力的嘛

好吧

暴力就是对于每一个答案进行枚举

然后对于这个答案的方案进行暴力的枚举

然后进行 \(check\)。

之后发现 \(ok\) 的就可以 \(return \;0\) 了。

然后就可以愉快的 \(50pts\)

其实在 \(k==1\) 的部分可以打一个小胖收守皇宫

之后愉快 \(80pts\)

其实正解就是贪心

从深度大的开始枚举

如果这个点没有被守卫到那么就将他的 \(k\) 级祖先安排哨兵

就这?!

就这



#include<bits/stdc++.h>
using std::cout; using std::endl;
#define debug cout<<"debug"<<endl
#define freopen eat2 = freopen
#define scanf eat1 = scanf
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
char buf[1<<20],*p1 = buf,*p2 = buf;FILE *eat2;
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; int eat1;
#define try(i,a,b) for(register signed i=a;i<=b;++i)
#define m(c,num,size) memset(c,num,size)
static const int maxn = 1e6+10;
namespace xin
{
class xin_edge{public:int next,ver;}edge[maxn];
class xin_data
{
public:
int bian,d;
friend bool operator < (xin_data x,xin_data y)
{return x.d > y.d;}
}a[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 n,k,t;
int d[maxn];
bool vis[maxn],s[maxn];
inline void topo()
{
std::queue<signed>q;
q.push(1); a[1].d = 1; vis[1] = 1; d[1] = 1;
while(!q.empty())
{
register int x = q.front(); q.pop();
for(register int i=head[x];i;i=edge[i].next)
{
register int y = edge[i].ver;
if(!vis[y])
{
vis[y] = 1;
q.push(y);
a[y].d = a[x].d + 1;
d[y] = d[x] + 1;
}
}
}
}
bool ok = 0;
void dfs(int x,int fa,int cnt)
{
if(cnt > k) return ;
if(s[x]) {ok = 1;return;}
for(register int i=head[x];i;i=edge[i].next)
{
register int y = edge[i].ver;
if(y == fa) continue;
dfs(y,x,cnt+1);
}
}
void find(int x,int cnt)
{
s[x] = 1;
if(cnt == k or x == 1) {return;}
for(register int i=head[x];i;i=edge[i].next)
{
register int y = edge[i].ver;
if(d[y] >= d[x]) continue;
// cout<<"x = "<<x<<" a[x].d = "<<d[x]<<" y = "<<y<<" a[y].d = "<<d[y]<<endl;
find(y,cnt+1);
}
}
int ans = 0;
inline void work(int x)
{
ok = 0;
if(s[x]) {ok = 1;}
else
dfs(x,-1,0);
if(!ok)
s[x] = 1,find(x,0),ans++;
}
const int ms = 1e5;
inline short main()
{
#ifndef ONLINE_JUDGE
openfile();
#endif
n = get<signed>(); k = get<signed>(); t = get<signed>();
try(i,1,n-1)
{
register int x = get<signed>(),y = get<signed>();
add(x,y); add(y,x);
a[i].bian = i;
}
a[n].bian = n;
topo();
std::sort(a+1,a+n+1);
// try(i,1,n) cout<<a[i].bian<<' '<<a[i].d<<endl;
try(i,1,n)
work(a[i].bian);
cout<<ans<<endl;
return 0;
}
}
signed main() {return xin::main();}

T3

我用的背包

然后被某神笨认定假的。

然而不知道为什么我的code过了

既然假了,那就不写了。


这次真的咕了好多啊

[考试总结]noip模拟10的更多相关文章

  1. 2021.6.29考试总结[NOIP模拟10]

    T1 入阵曲 二位前缀和暴力n4可以拿60. 观察到维护前缀和时模k意义下余数一样的前缀和相减后一定被k整除,前缀和维护模数,n2枚举行数,n枚举列, 开一个桶记录模数出现个数,每枚举到该模数就加上它 ...

  2. 6.17考试总结(NOIP模拟8)[星际旅行·砍树·超级树·求和]

    6.17考试总结(NOIP模拟8) 背景 考得不咋样,有一个非常遗憾的地方:最后一题少取膜了,\(100pts->40pts\),改了这么多年的错还是头一回看见以下的情景... T1星际旅行 前 ...

  3. 5.23考试总结(NOIP模拟2)

    5.23考试总结(NOIP模拟2) 洛谷题单 看第一题第一眼,不好打呀;看第一题样例又一眼,诶,我直接一手小阶乘走人 然后就急忙去干T2T3了 后来考完一看,只有\(T1\)骗到了\(15pts\)[ ...

  4. 5.22考试总结(NOIP模拟1)

    5.22考试总结(NOIP模拟1) 改题记录 T1 序列 题解 暴力思路很好想,分数也很好想\(QAQ\) (反正我只拿了5pts) 正解的话: 先用欧拉筛把1-n的素数筛出来 void get_Pr ...

  5. [考试总结]noip模拟23

    因为考试过多,所以学校的博客就暂时咕掉了,放到家里来写 不过话说,vscode的markdown编辑器还是真的很好用 先把 \(noip\) 模拟 \(23\) 的总结写了吧.. 俗话说:" ...

  6. 2021.9.17考试总结[NOIP模拟55]

    有的考试表面上自称NOIP模拟,背地里却是绍兴一中NOI模拟 吓得我直接文件打错 T1 Skip 设状态$f_i$为最后一次选$i$在$i$时的最优解.有$f_i=max_{j<i}[f_j+a ...

  7. 6.10考试总结(NOIP模拟6)

    前言 就这题考的不咋样果然还挺难改的.. T1 辣鸡 前言 我做梦都没想到这题正解是模拟,打模拟赛的时候看错题面以为是\(n\times n\)的矩阵,喜提0pts. 解题思路 氢键的数量计算起来无非 ...

  8. NOIP 模拟 10 考试总结

    T1 一道很妙的题,打暴力分也很多,但是考试的时候忘开 long long 了. 题解 T2 一道挺水的题,不过...(打挂了) 题解 T3 此题甚妙,转化真多,不过对思维是一个非常大的扩展 题解 考 ...

  9. 2021.10.15考试总结[NOIP模拟77]

    \(n=40\)考虑\(meet \;in \;the \;middle\) 某个元素有关的量只有一个时考虑转化为树上问题 对暴力有自信,相信数据有梯度 没了 UPD:写了个略说人话的. T1 最大或 ...

随机推荐

  1. Kubernetes 实战——配置应用(ConfigMap、Secret)

    配置容器化应用的方式:①命令行参数:②环境变量:③文件化配置 一.向容器传递命令行参数或环境变量 这两种方式在 Pod 创建后不可被修改 1. 在Docker中定义命令与参数 ENTRYPOINT:容 ...

  2. Java调试大法,来了~

    很多同学经常问我:彤哥,你的源码为什么讲的那么好那么细,有没有什么方法? 此时,我一般回复四个字:调试大法. 然后,他们就会很懵逼:调试我也会呀,但是,我就做不到你那么细(像是在夸我),难道调试还有我 ...

  3. 关于使用JS去除URL中的指定参数问题,js 对url进行某个参数的删除,并返回url

    在网页上找了半天,发现现在的资源实在是少的可怜,而前端尤甚.所以没办法,于是自己花了一些时间写了一个: 1 /** 2 * 删除URL中的指定参数 3 * @param {*} url 4 * @pa ...

  4. 消失之物(背包DP)(容斥或分治)

    容斥做法: 首先n^2搞出f[i][j]第i个物品,j体积的方案数. 去除每个物品贡献: 设个g[i][j]表示当i不选,j体积方案数(注意不是此时的范围相对于全局,而不是1---i) 那么我们用到一 ...

  5. 有模有样解决Flutter里Webview无法访问HTTP页面的问题

    探索过程 Android9(好像是吧)开始谷歌就默认不让开发者访问不安全HTTP内容了,如果非要用HTTP,那必须在networkSecurityConfig里配置cleartextTrafficPe ...

  6. hive学习笔记之三:内部表和外部表

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. Redis计数信号量

    计数信号量是一种锁,它可以让用户限制一项资源最多能够同时被多少个进程访问,通常用于限定能够同时使用的资源数量.你可以把Redis分布式锁里面创建的锁看作是只能被一个进程访问的信号量. 计数信号量和其他 ...

  8. 深入学习Netty(1)——传统BIO编程

    前言 之前看过Dubbo源码,Nacos等源码都涉及到了Netty,虽然遇到的时候查查资料,后面自己也有私下学习Netty并实践,但始终没有形成良好的知识体系,Netty对想要在Java开发上不断深入 ...

  9. iOS工程师如何恍然大悟?

    聊聊行情?为什么总有人在乎旁人的看法而忽略自己的初衷? 虽然iOS开发市场说不上好但也绝不算坏,想没想过那些煽风点火说iOS不行的人在做什么? 真的转行从头开始? 错.大错特错! 在劝退你的同时他们会 ...

  10. keycloak~账号密码认证和授权码认证

    用户名密码登录 POST /auth/realms/demo/protocol/openid-connect/token 请求体 x-www-form-urlencoded grant_type:pa ...