首页 > 其他分享 >2024.9.15

2024.9.15

时间:2024-09-15 22:04:12浏览次数:1  
标签:10 15 int 2024.9 样例 long Shintaro text


DATE #:202409015

ITEM #:DOC

WEEK #:SUNDAY

DAIL #:捌月拾叁

TAGS
<iframe border="0" frameborder="no" height="86" marginheight="0" marginwidth="0" src="//music.163.com/outchain/player?type=2&id=1863449738&auto=0&height=66" width="330"></iframe>
< BGM = "阿尔茨海默症 - 盼钰" >
< theme = oi-contest >
< [NULL] >
< [空] > 
< [空] >
鱼不畏水 鸟不惧高 猫不怕鱼 你不爱我

A. 夕景昨日

时间限制: 1 s   内存限制: 500 MB   测评类型: 传统型


题目描述

\(\text{Shintaro}\) 制作了 \(n\) 个开关,每个开关的状态可被设置为 \(+\) 或 \(-\)。

现在你有一个数列 \(A=(a_1,⋯,a_n)\) ,和一个初始值为 \(0\) 的变量 \(v\) 。你可以自由地操纵开关,当第 \(i\) 个开关被设置为 \(+\) 状态时, \(v\) 会加上 \(a_i\) ,被设置为 \(-\) 状态时, \(v\) 会减去 \(a_i\)。

请你判断是否有两种及以上不同的方式操纵开关,使得最后得到的 \(v\) 值相等。

输入格式

第一行一个数 \(n\),表示开关的个数

第二行 \(n\) 个数,第 \(i\) 个数表示 \(a_i\)

输出格式

如果有请输出 Yes,否则输出 No

样例输入

2
3
1 2 3
4
3 4 5 10

样例输出

Yes
No

样例说明

对于第一组数据:

\(+1+2-3=0\)

\(-1-2+3=0\)

数据范围

  • 对于 \(20\%\) 的数据,\(n≤10\);
  • 对于 \(50\%\) 的数据,\(n≤1000\);
  • 对于 \(100\%\) 的数据,\(1≤n≤100000\),\(0≤a_i≤500000\),\(1\le T\le 10\)。
//2024.9.15
//by white_ice
#include<bits/stdc++.h>
//#include"../../../need.cpp"
using namespace std;
#define int long long 
#define itn long long 
constexpr itn oo = 100005;
int t,n;int st[oo];
unordered_map<int,itn> vis;
itn ned[oo],cnt;
main(void){
    //fre();
    cin.tie(0)->sync_with_stdio(0);
    cin >> t;while (t--){
        vis.clear();cnt = 1;vis[0] = 1;
        cin >> n;for(itn i=1;i<=n;i++)cin >> st[i];
        sort(st+1,st+n+1);bool flag = 0;
        for (itn i=1;i<=n;i++){
            if (vis[st[i]]){cout<<"Yes"<<'\n';flag=1;break;}
            int top = cnt;
            for(itn j=1;j<=cnt;j++){
                itn p = ned[j]+st[i];
                //p_(true,vis[p],i,j);
                if (vis[p]) continue;
                vis[p] = 1;ned[++top] = p;
            }
            cnt = top;
        }
        if (!flag)cout << "No" << '\n';
    }
    exit(0);
}

首先注意到数字个数超过 \(20\) 就一定是 Yes。假如我们把能得到的 \(v\) 值记录在 vis 数组里,那么加入一个数相当于把当前的 vis 数组里的数左右平移,并删除原来的数。因为 vis 数组一旦出现重复的数字就是 Yes,所以 vis 数组大小每次都会乘以 2。那么为 No 的范围显然是 \(\log W\)。极限构造可以考虑 \(1\ 2\ 4\ 8\ \dots\)

剩下的部分可以使用 \(2^n\) 暴力。


B. 透明答案

时间限制: 1 s   内存限制: 512 MB   测评类型: 传统型


题目背景

你听说过 Anti-Nim 博弈吗?Anti-Nim 博弈是 Nim 博弈的变形,它的基本玩法是两人轮流取石子,把物品全部取完者失败。它是一个古老的博弈游戏,也是 czy 数学领域的一个经典问题。而今天我们要讲述的问题,就和 Anti-Nim 博弈没有丝毫的关系。

题目描述

Acestar 和 Blueqwq 在玩简单的取石子游戏。最初有 \(n\) 堆石子,每堆有 \(2\) 块。

Acestar 和 Blueqwq 轮流取石子(从 Acestar 开始)。每一次取石子时当前玩家可以任选一堆,如果还剩下 k\(k\) 块石子,则可以从这堆中取出 \(1\) 到 \(k\) 之间的任意数量的石子。

此外,每 \(3\) 回合他们会添加一堆 \(2\) 块的石子。换句话说,在第 \(t\) 次操作(两个人操作的总次数)之后,如果 \(t\) 可以被 \(3\) 整除,则添加一堆 \(2\) 块石子的石子堆。

(即使在第 \(t\) 次操作中取完了所有石子,如果 \(t\) 可被 \(3\) 整除,也会添加新石子堆并继续游戏。)

双方都采取最优策略,无法操作的玩家输掉游戏。请你判断哪个玩家获胜。

输入格式

第一行一个数 \(T\),表示数据组数。

接下来 \(T\) 行,每行一个数 \(n\),表示最初石子的堆数。

输出格式

对于每组数据,如果 Acestar 获胜则输出 Acestar,否则输出 Blueqwq

样例输入

2
1
998

样例输出

Acestar
Blueqwq

数据范围

  • 对于 \(30\%\) 的数据,\(n≤10\);
  • 对于 \(100\%\) 的数据,\(n≤1000\),\(1\le T\le 10\)。
//2024.9.15
//by white_ice
#include<bits/stdc++.h>
//#include"../../../need.cpp"
using namespace std;
#define int long long
#define itn long long 
int t,n;
main(void){
    //fre();
    cin.tie(nullptr)->ios::sync_with_stdio(false);
    cin >> t;while(t--){
        cin >> n;
        cout << (n%3==2?"Blueqwq":"Acestar") << '\n';
    }
    exit(0);
}

wtm推了得有一个小时sg函数的,然后是sima结论题


C. 界外科学

时间限制: 1 s   内存限制: 500 MB   测评类型: 传统型


题目描述

\(\text{ENE}\) 是一位电脑少女,这天她在帮 \(\text{Shintaro}\) 网上购物。网店一共有 \(n\) 件物品,第 \(i\) 件物品有 \(a_i\) 的价格,并且购买这件物品会给 \(\text{Shintaro}\) 带来 \(b_i\) 的满足度,不同的物品获得的满足度会累加。

\(\text{Shintaro}\) 最多只能支付 m\(m\) 元。由于他资金有限,ENE\(\text{ENE}\) 黑入了网店的支付系统。在她操作之后,总价格的计算方式是将所有物品的价格给 \(\text{xor}\) (异或运算)起来。

如 \(\text{Shintaro}\) 现在买了价格为 \(1\) 、\(2\) 、\(4\) 、\(7\) 的四件物品,总价格为\(1\oplus 2\oplus 4 \oplus 7=0\)。

\(\text{Shintaro}\) 现在想知道在足够支付所买的物品的前提下,他最多能获得多少满足度。

输入格式

第一行两个数 \(n,m\) ,表示物品的个数和 \(\text{Shintaro}\) 最多能支付多少钱。

第二行 \(n\) 个数,第 \(i\) 个数 \(a_i\) 表示第 i\(i\) 件物品的价格。

第三行 \(n\) 个数,第 \(i\) 个数 \(b_i\) 表示第 i\(i\) 件物品能带给 \(\text{Shintaro}\) 的满足度。

输出格式

一行一个数表示答案。

样例输入1

4 3
1 3 4 5
2 5 -3 100

样例输出1

104

样例输入2

1 1000000000
1
-1000000000

样例输出2

0

样例输入3

4 8
1 2 4 8
13 6 32 50

样例输出3

51

样例1说明

购买全部 \(4\) 件物品,总花费为 \(1⊕3⊕4⊕5=3\),总价值为 \(2+5-3+100=104\)。

数据范围

  • 对于 \(30\%\) 的数据,\(n≤5\);
  • 对于 \(50\%\) 的数据,\(n≤20\);
  • 对于另外 \(20\%\) 的数据,\(1≤m,a_i≤100\);
  • 对于 \(100\%\) 的数据,\(1≤n≤36\),\(1≤m,a_i,|b_i|≤10^9\)。有 \(70\%\) 数据随机。

你猜为什么随机:

OvSQIDNZ.jpg

//2024.9.15
//by white_ice
#include<bits/stdc++.h>
//#include"../../../need.cpp"
using namespace std;
#define int long long 
#define itn long long 
constexpr int oo=40;
constexpr itn op=1<<18;
constexpr itn of=30;
constexpr int inf=1e18;
int n,n1,n2;
int m,a[oo],b[oo];
struct trie{
	int son[of*op][2];
	int mx[op*oo];
	int cnt;
	trie() : cnt(1){mx[0]=mx[1]=-inf;}
	void ins(int x,int val){
		int p=1;
		for(int i=of-1;i>=0;i--){
			int c=x>>i & 1;
			if(!son[p][c]) mx[son[p][c]=++cnt]=-inf;
			p=son[p][c];
			mx[p]=max(mx[p],val);
		}
	}
	int qry(int x){
		int p=1;
		int ans=-inf;
		for(int i=of-1;i>=0&&p;i--){
			int c=m>>i & 1;
			if(m>>i & 1){
				ans=max(ans,mx[son[p][x>>i & 1]]);
				p=son[p][!(x>>i & 1)];
			}
			else p=son[p][x>>i & 1];
		}
		return ans;
	}
}t;
main(void){
	//fre();
	cin.tie(0)->ios::sync_with_stdio(false);
	cin>>n>>m;m ++;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=n;i++) cin>>b[i];
	n1=n/2;
	int opt=0,ed=n1;
	int ans=-inf;
	function<void(int,int,int)>dfs=[&](int cur,int xr,int sum){
		if(cur == ed+1){
			if(!opt) t.ins(xr,sum);
			else ans=max(ans,t.qry(xr)+sum);
			return ;
		}
		dfs(cur+1,xr,sum);
		dfs(cur+1,xr^a[cur],sum+b[cur]);
	};
	dfs(1,0,0); opt=1,ed=n;
	dfs(n1+1,0,0);
	cout << ans << '\n';
	exit (0);
}

折半搜索,然后好像就不用讲了。。。。


D. 回忆补时

时间限制: 1 s   内存限制: 500 MB   测评类型: 传统型


题目描述

\(\text{Shintaro}\) 有 \(n\) 条直线,第 \(i\) 条直线 \(l_i\) 可以被描述为 \(k_ix+b_i\)。

这天 \(\text{Ayano}\) 和 Shintaro\(\text{Shintaro}\) 在一起玩游戏。每局游戏 \(\text{Ayano}\) 会给出一个整数 \(x\),然后让 \(\text{Shintaro}\) 选两条不同的直线 \(l_i,l_j\),得到 \(y=k_j\times (k_i\times x+ b_i)+b_j\) 作为他的得分。

作为游戏中级高手,\(\text{Shintaro}\) 觉得得分肯定是越大越好,然而他不知道自己的得分是否达到了最大。所以对于每局游戏里 \(\text{Ayano}\) 给出的整数 \(x\) ,请你告诉 \(\text{Shintaro}\) 可能得分的最大值。

输入格式

第一行一个数\(n\),表示直线的条数。

接下来 \(n\) 行,其中第 \(i\) 行两个数 \(k_i,b_i\) 用于描述第 \(i\) 条直线。

接下来一行一个数 \(q\),表示游戏次数。

接下来 \(q\) 行,其中第 \(i\) 行一个数 \(x_i\) 表示第 \(i\) 局游戏里 \(\text{Ayano}\) 给出的整数。

输出格式

共 \(q\) 行,第 \(i\) 行输出一个整数表示第 \(i\) 局游戏的可能得分的最大值。

样例输入

4
-2 3
4 7
5 8
1 20
3
0
10
-10

样例输出

108
243
123

数据范围

\(30\%\):\(n,q≤100\)

\(60\%\):\(n,q≤3000\)

\(100\%\):\(2≤n,q≤100000,~|x_i|,|k_i|≤10^6,~|b_i|≤10^{12}\)

李超线段树,然后不会了

24

标签:10,15,int,2024.9,样例,long,Shintaro,text
From: https://www.cnblogs.com/white-ice/p/18415738

相关文章

  • 9月15日总结
    今天呢,将剩余的码题集的习题搞完了,在这几个题中,虽然大部分是一些暴力是可以解决的,但是,几乎所有的题都需要你考虑时间复杂度,将具体的代码进行优化,例如今天我学会了一个名为线性筛(欧拉筛)的一个为素数寻找计算的算法知识具体的代码实现如下:for(inti=2;i<=x;i++){if(!judge[i......
  • YC339A [ 20240915 CQYC NOIP 模拟赛 T1 ] 演讲(talk)
    题意有\(n\)个地点,你可以:使用\(\frac{a_i}{len}\)的代价标记该地点。使用\(\frac{b_i}{len}\)的代价标记该地点并使得\(len:=len+1\)。跳过该地点。你不需要按照顺序标记,问标记\(m\)个点的最小代价是多少(可以证明答案是实数)。\(n\le500,a_i\leb_i\)。S......
  • 9.9 ~ 9.15 总结
    正在完成对做过略有难度的题目写题解的计划。这是四次联考的题解(当然还是和前面所有联考在一起的老链接)。做题包括以下几道:AGC032F,这是对P6130结论的拓展运用。P11023一道新的CO/CETS题目。选的点一定在原凸包上,然后分上下凸壳考虑;接下来的dp满足四边形不等式,可以决策......
  • 0915
    数据结构对称阵压缩矩阵的对应关系太久没接触感觉自己成傻子了,next指针指向的是结点,肯定不是直接等于指针本身...这就说得通了双链表较之于单链表无非就是多了个前驱指针的指向操作,其他的基本一致但是其实链栈还挺麻烦的,不如直接定义个数组方便得多。至于队列,先进先出,设一个......
  • 2024.9.15 NOIP2024#6模拟赛
    不怎么模拟的模拟赛。比赛界面吐槽以IOI赛制来模拟OI赛事,\(jzyz\)真难绷。暴力有点难打,纯暴力(全排列)等拿的分少。不会写(我太蒻了)。\(T4\)暴力让我怒砍\(\textcolor{#ecdb44}{65pts}\)。文件\(IO\)是开考后加的。跟新高二打打了个倒数,压迫感略强。看了\(1h\)......
  • 【洛谷 P1596】[USACO10OCT] Lake Counting S 题解(深度优先搜索)
    [USACO10OCT]LakeCountingS题面翻译由于近期的降雨,雨水汇集在农民约翰的田地不同的地方。我们用一个的网格图表示。每个网格中有水(W)或是旱地(.)。一个网格与其周围的八个网格相连,而一组相连的网格视为一个水坑。约翰想弄清楚他的田地已经形成了多少水坑。给出约翰田地的示意图,......
  • 洛谷题单指南-分治与倍增-P2415 集合求和
    原题链接:https://www.luogu.com.cn/problem/P2415题意解读:计算集合所有子集中元素之和。解题思路:集合的特性:互异性,元素各不相同来看样例:23,可以组成的子集有空23232和3都出现2次再比如:123,可以组成的子集有空12312 13231231,2,3各出现4次由于在集合中......
  • Leetcode面试经典150题-739.每日温度
    应读者私信要求,本题协商题目的具体内容给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。示例1:输入:temperatures=[73,74,......
  • 计算机毕业设计必看必学!! 91511 篮球馆服务系统,原创定制程序, java、PHP、python、小
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,篮球馆服务系统当然也不能排除在外。篮球馆服务系统是以实际运用为开发背景,运用软件工程原理和开发方法,采用Springboot技术构建的一个管理系统。整个开发过......
  • SQL编程题复习(24/9/15)
    练习题x4010-114检索出course表中前3门课程的课号及课程名称的记录10-115检索出students表中“信息学院”的学生姓名、性别和出生日期的记录10-116检索出students表中所有系名的记录,要求结果中系名不重复10-117检索出sc表中‘C001’课程未登记成绩的学生学号(MSSQL)10......