Codeforces Round 851 (Div. 2 D:枚舉+組合 Edp)

A - One and Two

相當于找第一個位置前后2的個數相同·

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10,mod=998244353;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
const long long inf=1e17;
int n,m,k;
int a[N],b[N];
int gcd(int a,int b){return b?gcd(b,a%b):a;
}
void solve()
{cin>>n;for(int i=1;i<=n;i++) cin>>a[i];vector<int> s(n+10);int cnt=0;for(int i=1;i<=n;i++){s[i]=s[i-1]+(a[i]==2);cnt+=(a[i]==2);}for(int i=1;i<=n;i++){if(s[i]==cnt-s[i]){cout<<i<<"\n";return ;}}cout<<"-1\n";}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

B - Sum of Two Numbers

每一個數位單獨考慮,如果是偶數就分一半,否則交換多1

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10,mod=998244353;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
const long long inf=1e17;
int n,m,k;
int a[N],b[N];
int gcd(int a,int b){return b?gcd(b,a%b):a;
}
void solve()
{cin>>n;if(n%2==0){cout<<"No\n";return ;}int s=(2*n)*(n*2+1)/2;int st=(s-(n*(n-1))/2)/n;int idx=st-(n+1);vector<bool> v(st,n+10);cout<<"Yes\n";for(int i=1;i<=n;i++){cout<<idx<<" "<<st-idx<<"\n";idx--;st++;if(idx==0) idx=n;}cout<<"\n";}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

C:

首先我們是能計算出第一個數的和

然后就手玩一下就得出這個規律了

比如 n=5

第一個數=9 3 6

第二個數=10 2 8

第三個數=11 1 10

第四個數=12 5 7

第五個數=13 4 9

emmm

我也不知道理由純猜的

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10,mod=998244353;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
const long long inf=1e17;
int n,m,k;
int a[N],b[N];
int gcd(int a,int b){return b?gcd(b,a%b):a;
}
void solve()
{cin>>n;if(n%2==0){cout<<"No\n";return ;}int s=(2*n)*(n*2+1)/2;int st=(s-(n*(n-1))/2)/n;int idx=st-(n+1);vector<bool> v(st,n+10);cout<<"Yes\n";for(int i=1;i<=n;i++){cout<<idx<<" "<<st-idx<<"\n";idx--;st++;if(idx==0) idx=n;}cout<<"\n";}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;cin>>t;while(t--) solve();
}

D - Moving Dots

首先因為坐標不同,不同的兩個點的位置肯定是不同的,所以直接枚舉兩個點即可

然后還要滿足這兩個點中間沒數,和左右滿足條件不改變這兩個點合并即可

如果兩個點中間有位置,那么他們的位置其實是中間的點構成的位置

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10,mod=1e9+7;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
const long long inf=1e17;
int n,m,k;
int a[N],b[N];
int x[N];
int p[N];
void solve()
{cin>>n;for(int i=1;i<=n;i++) cin>>x[i];p[0]=1;for(int i=1;i<=n;i++) p[i]=p[i-1]*2%mod;int res=0;for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){int d=x[j]-x[i];int l=1,r=n;int ans=0;while(l<r){int mid=l+r+1>>1;if(x[i]-x[mid]>d) l=mid;else r=mid-1;}if(x[i]-x[l]>d) ans+=l;l=1,r=n;while(l<r){int mid=l+r>>1;if(x[mid]-x[j]>=d) r=mid;else l=mid+1;}if(x[l]-x[j]>=d) ans+=n-r+1;res+=p[ans];res%=mod;}}cout<<res<<"\n";
}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;//  cin>>t;while(t--) solve();
}

E - Sum Over Zero

很典

不解釋了,感覺做了很多次

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10,mod=1e9+7;
#define int long long
typedef long long LL;
typedef pair<int, int> PII;
const long long inf=1e17;
int n,m,k;
class BitTree {public:vector<int> tree;int n;BitTree(int _n) : n(_n) {tree.resize(n+1);fill(tree.begin(),tree.end(),-2e18);}inline int lowbit(int x) { return x&-x; }inline void Modify(int x,int v) {for(;x<=n;x+=lowbit(x)) tree[x]=max(v,tree[x]);}inline int q(int x) {int ret=-2e18;if(x<=0) return 0;for(;x;x-=lowbit(x)) ret=max(ret,tree[x]);return ret;}inline int Query(int l,int r) {return q(r)-q(l-1);}
};
vector<int> nums;
int find(int x){return lower_bound(nums.begin(),nums.end(),x)-nums.begin()+1;
}
void solve()
{cin>>n;vector<int> f(n+10),a(n+10),s(n+10);nums.clear();for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=n;i++){s[i]=s[i-1]+a[i];nums.push_back(s[i]);//cout<<s[i]<<" ";}nums.push_back(0);sort(nums.begin(),nums.end());nums.erase(unique(nums.begin(),nums.end()),nums.end());BitTree tr(N);tr.Modify(find(0),0);for(int i=1;i<=n;i++){f[i]=f[i-1];f[i]=max(f[i],tr.q(find(s[i]))+i);tr.Modify(find(s[i]),f[i]-i);// for(int j=0;j<=i;j++){//     if(s[i]-s[j]>=0)//     f[i]=max(f[i],f[j]-j+i);// }}cout<<*max_element(f.begin(),f.end());
}signed main()
{cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);int t=1;//cin>>t;while(t--) solve();
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/207306.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/207306.shtml
英文地址,請注明出處:http://en.pswp.cn/news/207306.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

有哪些值得分享的銷售拓客技巧?

拓客對于銷售的重要性 拓客&#xff08;Toker&#xff09;是一個商業上的名詞&#xff0c;核心就是提高售前服務、市場推廣的水平&#xff0c;從而挖掘出潛在客戶的隱形需求&#xff08;或稱軟需求&#xff09;。 拓客的核心&#xff0c;其實就是提高售前服務、市場推廣的水平…

如何部署自己的服務渲染頁面為Pdf文檔

前言 相信大家都覺得官方發布的文檔生成模塊https://docs.mendix.com/appstore/modules/document-generation/很有用&#xff0c;它能把Mendix頁面像素級導出到Pdf文件中&#xff0c;這對于歸檔等業務非常有價值。但部署依賴公有云提供的渲染服務&#xff0c;而中國本土用戶對…

折半查找(數據結構實訓)

題目&#xff1a; 標準輸入輸出 題目描述&#xff1a; 實現折半查找。要求查找給定的值在數據表中相應的存儲位置。本題目假定輸入元素均按非降序輸入。 輸入&#xff1a; 輸入包含若干個測試用例&#xff0c;第一行為測試用例個數k。每個測試用例占3行&#xff0c;其中第一行為…

初識人工智能,一文讀懂過擬合欠擬合和模型壓縮的知識文集(3)

&#x1f3c6;作者簡介&#xff0c;普修羅雙戰士&#xff0c;一直追求不斷學習和成長&#xff0c;在技術的道路上持續探索和實踐。 &#x1f3c6;多年互聯網行業從業經驗&#xff0c;歷任核心研發工程師&#xff0c;項目技術負責人。 &#x1f389;歡迎 &#x1f44d;點贊?評論…

SQL存儲過程和視圖

1 存儲過程 存儲過程是事先編寫好、存儲在數據庫中的一組SQL命令集合。用來完成對數據庫的指定操作。 1.1 優缺點 優點&#xff1a; 1&#xff09;提高系統性能。創建時進行編譯&#xff0c;隨后存放在數據庫服務器的過程高速緩存中&#xff0c;之后不需要再次執行分析和編…

uniapp app將base64保存到相冊,uniapp app將文件流保存到相冊

如果是文件流可以先轉base64詳情見>uniapp 顯示文件流圖片-CSDN博客 onDown(){let base64 this.qrcodeUrl ; // base64地址const bitmap new plus.nativeObj.Bitmap("test");bitmap.loadBase64Data(base64, function() {const url "_doc/" new Dat…

Backend - Dbeaver

目錄 一、說明 二、下載并安裝 &#xff08;一&#xff09;官網下載 &#xff08;二&#xff09;安裝 三、使用 &#xff08;一&#xff09;操作步驟 &#xff08;二&#xff09;相關問題&#xff1a;無法加載驅動類oracle.jdbc.oracledriver 1. 新建驅動 2. 再重新連接數據庫 …

PyTorch2.0環境搭建

一、安裝python并配置環境變量 1、打開python官網&#xff0c;下載并安裝 Welcome to Python.org 下載 尋找版本&#xff1a;推薦使用3.9版本&#xff0c;或其他表中顯示為安全&#xff08;security&#xff09;的版本 安裝&#xff1a;&#xff08;略&#xff09; 2、配置環…

數據增強改進,實現檢測目標copypaste,增加目標數據量,提升精度

???YOLOv8實戰寶典--星級指南:從入門到精通,您不可錯過的技巧 ??-- 聚焦于YOLO的 最新版本, 對頸部網絡改進、添加局部注意力、增加檢測頭部,實測漲點 ?? 深入淺出YOLOv8:我的專業筆記與技術總結 ??-- YOLOv8輕松上手, 適用技術小白,文章代碼齊全,僅需 …

python圣誕樹代碼編程

以下是一個簡單的Python圣誕樹代碼&#xff1a; def draw_tree(height): for i in range(height): print( * (height - i - 1) * * (2 * i 1)) print( * (height - 1) |)draw_tree(10) 這個函數會繪制一個等腰三角形&#xff0c;其中每一行的星號數量從1開…

Java基礎知識

JVM&#xff0c;JRE&#xff0c;JDK JVM 運行Java字節碼的機器 JRE Java運行時環境&#xff0c;包括JVM&#xff0c;Java類庫&#xff0c;運行時類庫&#xff0c;國際化支持&#xff0c;安全管理器&#xff0c;啟動器等 比JVM多的內容 Java類庫&#xff1a;提供大量已經實…

【TiDB理論知識09】TiFlash

一 TiFlash架構 二 TiFlash 核心特性 TiFlash 主要有 異步復制、一致性、智能選擇、計算加速 等幾個核心特性。 1 異步復制 TiFlash 中的副本以特殊角色 (Raft Learner) 進行異步的數據復制&#xff0c;這表示當 TiFlash 節點宕機或者網絡高延遲等狀況發生時&#xff0c;Ti…

億勝盈科ATR2037 無限射頻前端低噪聲放大器

億勝盈科ATR2037 是一款應用于無線通信射頻前端&#xff0c;工作頻段為 0.7 到 6GHz 的超低噪聲放大器。 ATR2037 低噪聲放大器采用先進的 GaAs pHEMT 工藝設計和制作&#xff0c;ATR2037 低噪聲放大器在整個工作頻段內可以獲得非常好的射頻性能超低噪聲系數。 億勝盈科ATR203…

WGCLOUD v3.5.0 新增支持監測交換機的接口狀態UP DOWN

WGCLOUD v3.5.0開始 可以監測交換機或SNMP設備的接口狀態了&#xff0c;直接上圖

什么是ElasticSearch中的過濾器?

在Elasticsearch中&#xff0c;過濾器&#xff08;Filters&#xff09;是一種用于在查詢中篩選文檔的強大工具。過濾器可以根據特定條件來評估文檔是否符合搜索查詢。這些條件通常應用于字段數據&#xff0c;并根據匹配結果返回符合條件的文檔。 過濾器的主要優點包括&#xf…

如何給網頁和代碼做HTML加密?

? 本篇文章給大家談談html混淆加密在線&#xff0c;以及HTML在線加密對應的知識點&#xff0c;希望對各位有所幫助&#xff0c;不要忘了收藏本站喔。 如何給代碼加密? 1、源代碼加密軟件推薦使用德人合科技的加密軟件&#xff0c;是一套從源頭上保障數據安全和使用安全的軟…

vue2+datav可視化數據大屏(1)

開始 &#x1f4d3; 最近打算出一個前端可視化數據大屏的系列專欄&#xff0c;這次將很全面的教大家設計可視化大屏&#xff0c;從開始到打包結束&#xff0c;其中&#xff0c;包括如何設計框架&#xff0c;如何封裝axios&#xff0c;等等&#xff0c;本次使用的數據均為mock數…

linux C++監聽管道文件方式

方式一&#xff08;傳統讀取文件&#xff0c;一直監聽循環讀取文件&#xff09; 非阻塞打開文件&#xff0c;用read循環定時讀取&#xff0c;性能不好 代碼如下&#xff1a; #include <iostream> #include <fstream> #include <functional> #include <…

spring boot項目如何自定義參數校驗規則

spring boot項目對參數進行校驗時&#xff0c;比如非空校驗&#xff0c;可以直接用validation包里面自帶的注解。但是對于一些復雜的參數校驗&#xff0c;自帶的校驗規則無法滿足要求&#xff0c;此時需要我們自定義參數校驗規則。自定義校驗規則和自帶的規則實現方式一樣&…

時域頻域(學習記錄1)

1 小伙伴們&#xff0c;今天讓我們一起來聊聊Something about DATA 系列。我們先回顧一下本系列對NVH測試中的數據采集做的整體介紹&#xff1a; A 數據采集過程&#xff1b; B 硬件設備&#xff1b; C 數采軟件&#xff1b; D ATOM中的數據采集&#xff1b; 接下來的幾篇文章…