NOIp2018集训test-9-18

2023-11-06 06:50
文章标签 test 18 集训 noip2018

本文主要是介绍NOIp2018集训test-9-18,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

T1.Conjugate

只能选没选过的点,看成如果选了选过的堆的点就不管它继续选。如果第一次选到某一堆的点在第一次选到第一堆的点之前,这一堆对答案就会有1的贡献。那么a[i]有贡献的概率是a[i]和a[1]的相对顺序序列中,第一个是a[i]中的点的概率(转换后的游戏和原游戏等价),即ai/(a1+ai),答案就是这个东西求和再+1。

 1 //Achen
 2 #include<bits/stdc++.h>
 3 #define Formylove return 0
 4 #define For(i,a,b) for(int i=(a);i<=(b);i++)
 5 #define Rep(i,a,b) for(int i=(a);i>=(b);i--)
 6 const int N=100007;
 7 typedef long long LL;
 8 typedef double db;
 9 using namespace std;
10 int n,a[N];
11 db ans;
12 
13 template<typename T>void read(T &x)  {
14     char ch=getchar(); x=0; T f=1;
15     while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();
16     if(ch=='-') f=-1,ch=getchar();
17     for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0'; x*=f;
18 }
19 
20 #define ANS
21 int main() {
22 #ifdef ANS
23     freopen("conjugate.in","r",stdin);
24     freopen("conjugate.out","w",stdout);
25 #endif
26     read(n);
27     For(i,1,n) read(a[i]); 
28     ans=1;
29     For(i,2,n) ans=ans+(db)a[i]/(1.0*(a[i]+a[1]));
30     printf("%lf\n",ans);
31     Formylove;
32 }
View Code

 

T2.Conjunct

我不是很懂题解说的dp lcs是什么意思,但是我自己yy了一个dp。

最后的序列肯定是一坨0和一坨1交替,相交的位置中间有一个2(0和1的坨里面可能也有2,就看成是0或者1就好了)

f[i][j][k]表示前i个位置的移动确定好了,最后一个坨是k(0/1)的坨,第i个位置后面放一个分割的2的答案,因为是0.1相间的,一定存在一种合法的方案是把前i个中最后一个部分的和这一部分不同的数移到下一个坨里和把下一个坨里一部分数移到这一坨里,所以转移的时候只需要放心大胆地把不合法的代价算出来,它一定是有地方可去的,而这个代价预处理0.1的前缀和就可以求出。这样复杂度是n^3的,发现f[i][j]k]仅由f[i'][j-1][k^1]转移来,对于每个j和k求前缀最小值即可n^2解决。

 1 //Achen
 2 #include<bits/stdc++.h>
 3 #define Formylove return 0
 4 #define For(i,a,b) for(int i=(a);i<=(b);i++)
 5 #define Rep(i,a,b) for(int i=(a);i>=(b);i--)
 6 const int N=5007;
 7 const int inf=1e8;
 8 typedef long long LL;
 9 typedef double db;
10 using namespace std;
11 int T,n,tot,a[N],f[N][N][2],mi[2][N],ans,sum1[N],sum0[N],tot1,tot0;
12 
13 template<typename T>void read(T &x)  {
14     char ch=getchar(); x=0; T f=1;
15     while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();
16     if(ch=='-') f=-1,ch=getchar();
17     for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0'; x*=f;
18 }
19 
20 void get_min(int &x,int y) {
21     if(y<x) x=y; return ;
22 }
23 
24 #define ANS
25 int main() {
26 #ifdef ANS
27     freopen("conjunct.in","r",stdin);
28     freopen("conjunct.out","w",stdout);
29 #endif
30     read(T);
31     while(T--) {
32         read(n); 
33         tot=tot0=tot1=0;
34         For(i,1,n) {
35             read(a[i]);
36             sum0[i]=sum0[i-1];
37             sum1[i]=sum1[i-1];
38             if(a[i]==1) tot1++,sum1[i]++;
39             else if(a[i]==0) tot0++,sum0[i]++;
40             else tot++;
41         }
42         if(!tot0||!tot1) {
43             puts("0"); 
44             continue; 
45         }
46         For(i,0,n) For(j,0,tot) f[i][j][0]=f[i][j][1]=inf;
47         For(i,0,tot) mi[0][i]=mi[1][i]=inf;
48         ans=inf;
49         mi[0][0]=mi[1][0]=0;
50         if(a[1]==2) get_min(ans,min(tot1,tot0));
51         For(i,1,n) Rep(j,min(tot,i),1) {
52             get_min(f[i][j][0],sum1[i]+(a[i+1]!=2)+mi[1][j-1]);
53             get_min(f[i][j][1],sum0[i]+(a[i+1]!=2)+mi[0][j-1]);
54             get_min(mi[0][j],f[i][j][0]-sum0[i]);
55             get_min(mi[1][j],f[i][j][1]-sum1[i]);    
56             get_min(ans,f[i][j][0]+sum0[n]-sum0[i]);
57             get_min(ans,f[i][j][1]+sum1[n]-sum1[i]);
58         }
59         if(ans==inf) ans=-1;
60         printf("%d\n",ans);
61     }
62     Formylove;
63 }
View Code

 

T3.conjecture

寄蒜几盒简单(神)题。我不会。要是noip后还没退役再来看吧。

 

转载于:https://www.cnblogs.com/Achenchen/p/9683221.html

这篇关于NOIp2018集训test-9-18的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/355086

相关文章

Python实现数据清洗的18种方法

《Python实现数据清洗的18种方法》本文主要介绍了Python实现数据清洗的18种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录1. 去除字符串两边空格2. 转换数据类型3. 大小写转换4. 移除列表中的重复元素5. 快速统

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

Golang test编译使用

创建文件my_test.go package testsimport "testing"func TestMy(t *testing.T) {t.Log("TestMy")} 通常用法: $ go test -v -run TestMy my_test.go=== RUN TestMyTestMy: my_test.go:6: TestMy--- PASS: TestMy (0.

JavaScript正则表达式六大利器:`test`、`exec`、`match`、`matchAll`、`search`与`replace`详解及对比

在JavaScript中,正则表达式(Regular Expression)是一种用于文本搜索、替换、匹配和验证的强大工具。本文将深入解析与正则表达式相关的几个主要执行方法:test、exec、match、matchAll、search和replace,并对它们进行对比,帮助开发者更好地理解这些方法的使用场景和差异。 正则表达式基础 在深入解析方法之前,先简要回顾一下正则表达式的基础知识。正则

react笔记 8-18 事件 方法 定义方法 获取/改变数据 传值

1、定义方法并绑定 class News extends React.Component {constructor(props) {super(props)this.state = {msg:'home组件'}}run(){alert("我是一个run") //方法写在类中}render() {return (<div><h2>{this.state.msg}</h2><button onCli

mybatis if test 之 0当做参数传入出问题

首先前端传入了参数 if(StringUtils.isNotBlank(status)){requestParam.setProperty("status", Integer.parseInt(status));}List<SuperPojo> applicationList = groupDao.getApplicationListByReviewStatusAndMember(req

js正则表达式test方法的问题

今天在网上碰到一个帖子,写了一个关于Regex的奇怪现象,(文章来源http://www.php100.com/html/webkaifa/javascript/2007/0109/1866.html) 代码如下 <script type="text/javascript"><!--var re = /^\d+(?:\.\d)?$/ig; alert(re.test('112.3'

Day18_0.1基础学习MATLAB学习小技巧总结(18)——MATLAB绘图篇(1)

利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍,为了在这个过程中加深印象,也为了能够有所足迹,我会把自己的学习总结发在专栏中,以便学习交流。 参考书目:《MATLAB基础教程 (第三版) (薛山)》 之前的章节都是基础的数据运算用法,对于功课来说更加重要的内容是建模、绘图、观察数据趋势,接下来我会结合自己的使用经验,来为大家分享绘图、建模使用的小技巧。 二维图形绘制 在本章开

2014暑假集训搜索专题

A - 漫步校园 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Description LL最近沉迷于AC不能自拔,每天寝室、机房两点一线。由于长时间坐在电脑边,缺乏运动。他决定充分利用每次从寝室到机房的时间,在校园里散散步。整个HDU校园呈方形布局,可划

18. 4 Sum

题目: 解答: 与之前的三数之和的解法类似,也是先排序,然后不断剔除不可能的条件,最后两个参数,通过两头求和计算得出。 代码: class Solution {public:vector<vector<int>> fourSum(vector<int>& nums, int target) {vector<vector<int>> result;int len = nums.size