算法馬拉松24

算法馬拉松24

A?小C的多邊形

  • 題意:

n+1個點的多邊形。給外圈的邊標記上1~n,里圈的邊也標記上1~n,使得對于一個外圈相鄰點與中間點構成的三角形的邊權之和都相等。\(n \le 10^6\)

  • 題解:

顯然每個三角形權值和為\(\frac{3(n+1)}{2}\)

一開始簡化成n個數排一個環,相鄰兩個數的和不相等并且有上下界,然后并不好做

構造了一下n=5發現外圈正好1..5,內圈1,2之間填n

然后這樣寫一下交上就T了...不加輸出優化tle 2333

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;char c[20];
inline void put(int x) {int p = 0;while(x) c[++p] = x%10 + '0', x /= 10;while(p) putchar(c[p--]);
}
int n;
void solve() {for(int i=1; i<=n; i++) put(i), putchar(' ');puts("");int sum = (n+1)/2*3-1, now = (n+3)/2-1;for(int i=1; i<=n; i++) {put(now); putchar(' ');now = sum - now;sum--;}
}
int main() {
//  freopen("in", "r", stdin);scanf("%d", &n); n--;if(~n&1) puts("0");else solve();
}


B?逆序對統計

  • 題意:

n個位置,\(1..m\)中每個數可以放在某一個位置,求逆序對最多個數。\(n \le 20, m \le 100\)

  • 題解:

比賽時幾乎想到正解了qwq

從小到大枚舉數,然后放一個數只會與他位置后面的數構成逆序對,把n狀壓一下就行了

但當時認為如果位置i已經有數了,還要減去位置i已經構成的逆序對個數,沒法維護

其實完全不用考慮有數的情況,加入再刪除和沒加入是一樣的,從沒數的狀態可以轉移呀

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int N = 105, M = (1<<20) + 5, INF = 1e9;
inline int read(){char c=getchar(); int x=0,f=1;while(c<'0'||c>'9') {if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9') {x=x*10+c-'0';c=getchar();}return x*f;
}int n, m, a[N], all, one[M], f[2][M], cur;
void print(int x) {for(int i=n-1; i>=0; i--) printf("%c", (x & (1<<i)) ? '1' : '0'); puts("");
}
int main() {freopen("in", "r", stdin);n=read(); m=read();for(int i=1; i<=m; i++) a[i] = read() - 1;all = 1<<n;for(int i=0; i<=n; i++) one[1<<i] = 1;for(int i=1; i<all; i++) one[i] = one[i&-i] + one[i^(i&-i)];memset(f, -1, sizeof(f));f[cur][0] = 0;for(int i=0; i<m; i++, cur ^= 1) { int *g = f[cur], *d = f[cur^1];for(int s=0; s<all; s++) if(g[s] != -1) { //printf("f %d %d  %d\n", i, s, g[s]); print(s);d[s] = max(d[s], g[s]);if(~ s & (1<<a[i+1])) {int ns = s | (1<<a[i+1]); d[ns] = max(d[ns], g[s] + one[ns >> (a[i+1] + 1)]);}g[s] = -1;}}printf("%d\n", f[cur][all-1]);
}


C?俄羅斯方塊

  • 題意:

\(n * m \le 10^7\)的01網格,每次將一個俄羅斯方塊區域異或,問是否能全0.

  • 題解:

稍微玩一下發現可以做到:

  1. 異或兩個相鄰格
  2. 將一個1格任意移動

這樣的話1的個數為奇數一定可行啊!

然而我忽略了網格大小,至少要是2*3才行!

這樣的話特判一下2*2 和1*x

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int N = 1e7+5;
inline int read(){char c=getchar(); int x=0,f=1;while(c<'0'||c>'9') {if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9') {x=x*10+c-'0';c=getchar();}return x*f;
}int n, m, a[N];
char s[N];
int main() {freopen("in", "r", stdin);int T = read();while(T--) {n = read(); m = read();if(n == 1 || m == 1) {if(n == 1) {scanf("%s", s+1); n = m; for(int i=1; i<=n; i++) a[i] = s[i] - '0';}else for(int i=1; i<=n; i++) a[i] = read();int flag = 1;for(int i=1; i<=n; i++) if(a[i]) {if(i+3 > n) {flag = 0; break;}for(int j=i; j<=i+3; j++) a[j] ^= 1;}puts(flag ? "Yes" : "No");continue;}int cnt = 0;for(int i=1; i<=n; i++) {scanf("%s", s+1);for(int j=1; j<=m; j++) cnt += (s[j] - '0') & 1;}if(n > m) swap(n, m);if(n >= 2 && m >= 3) puts((cnt & 1) ? "No" : "Yes");else if(n == 2 && m == 2) puts(cnt == 4 || cnt == 0 ? "Yes" : "No");}
}


D 單獨寫了 E F棄療

轉載于:https://www.cnblogs.com/candy99/p/6793047.html

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

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

相關文章

HUD2795 線段樹(單點更新)

題目中給出的h和w范圍均大&#xff0c;其實n的最大范圍才200000&#xff0c;所以我們建立的線段樹大小為min(h,n),線段樹的每一個節點包含一個變量c&#xff0c;記錄當前區間內還剩下的可以put on的最大長度。插入一個數時&#xff0c;如果該數大于該區間最大值&#xff0c;則返…

科維PLC運行時系統ProConOS embedded CLR 2.2 特定應用

ProConOS embedded CLR是新型的開放式標準化PLC運行時系統&#xff0c;符合IEC 61131標準&#xff0c;可執行不同的自動化任務&#xff08;PLC、PAC、運動控制、CNC、機器人和傳感器&#xff09;。   通過采用國際標準的微軟中間語言&#xff08;依據IEC/ISO 23271標準為MSIL…

linux下vi命令大全

進入vi的命令 vi filename :打開或新建文件&#xff0c;并將光標置于第一行首 vi n filename &#xff1a;打開文件&#xff0c;并將光標置于第n行首 vi filename &#xff1a;打開文件&#xff0c;并將光標置于最后一行首 vi /pattern filename&#xff1a;打開文件&…

set()與get()詳細解答(C#)

這幾天在搬磚時候用到了set()與get()&#xff0c;同事問了我一些問題&#xff0c;我打算在博客中總結一下。 覺得幫助到了您&#xff0c;幫我點個贊哦。 屬性訪問器 其實說白了就是操作一個屬性&#xff0c;更通俗一點說就是對一個變量的取值與賦值。 先來看get() get 訪問…

IM應用中如何計算富文本的高度

背景 在開發IM的項目過程中&#xff0c;經常會有出現一些需要計算DOM高度&#xff0c;然后超出若干行隱藏等需求。很多時候&#xff0c;需要計算高度的DOM元素都是動態生成的&#xff0c;我們無法在數據渲染前獲取到它的高度。 如果沒有任何交互&#xff0c;我們可以通過CSS來實…

G代碼 機器人的CNC實現

&#xfeff;  控制銑削工作臺和工件的NC程序&#xff0c;通過CAD軟件創建&#xff0c;這些NC程序與特定的機器類型相關。 NC程序在笛卡爾坐標系中動作的描述&#xff0c;對于需要確保一個明確的變換軸位置的關節型的機器人來說&#xff0c;缺少附加的狀態和旋轉信息。傳…

IScroll5中文API整理,用法與參考

IScroll是移動頁面上被使用的一款仿系統滾動插件。IScroll5相對于之前的IScroll4改進了許多&#xff0c;使得大家可以更方便的定制所需的功能了。 做項目的時候正好用到了這個插件&#xff0c;自己做了一下總結&#xff0c;發在這里方便大家學習IScroll5。 官網&#xff1a;htt…

Linux?安裝USB攝像頭

sudo apt-get updatesudo apt-get install fswebcamsudo apt-get install mplayersudo apt-get install alsamixer安裝完畢ls /dev查找設備是否有video0這個設備sudo mplayer tv:// 可以看到攝像內容轉載于:https://www.cnblogs.com/smartkeke/p/6820426.html

struct x264_t 維護著CODEC的諸多重要信息

//x264_t結構體維護著CODEC的諸多重要信息struct x264_t{/* encoder parameters ( 編碼器參數 )*/x264_param_t param;x264_t *thread[X264_SLICE_MAX];/* bitstream output ( 字節流輸出 ) */struct{int i_nal;x264_nal_t nal[X264_NAL_MAX];int i_bitstr…

如何判斷一條曲線是否自己相交?

今天看到群里有人在問這個問題&#xff0c;想了一個解決辦法。 我們首先作假設&#xff0c;如果一條曲線有交點&#xff0c;那么它就是相交的對吧。可能大家想的都是這樣&#xff0c;就開始找各種方法去識別交點。 我們換個角度想一下&#xff1a;是不是我們判斷這條曲線是否帶…

XML 與網絡的數據傳輸

&#xfeff;&#xfeff;XML 與網絡的數據傳輸

hdu 5813 Elegant Construction

水題 題意&#xff1a;有n個城市&#xff0c;給你每個城市能到達城市的數量&#xff0c;要你構圖&#xff0c;輸出有向邊&#xff0c;要求無環&#xff0c;輸出任意的解 例&#xff1a; Sample Input 332 1 021 143 1 1 0Sample OutputCase #1: Yes21 22 3Case #2: NoCase #3: …

Redis實戰筆記

Redis 數據庫 一、 概要 1. 特點 用于抽象數據類型的 DSL內存存儲基礎數據結構 API編碼風格避免代碼復雜兩層 API以優化為樂2. 數據類型 鍵值對&#xff08;字符串->字符串&#xff09;哈希列表&#xff08;鏈表&#xff09;集合&#xff1a;差并交有序集合 列表 集合位圖…

內存申請與一級二級指針

1.如果是函數內進行內存申請&#xff0c;很簡單&#xff0c;標準用法就可以了&#xff1a; test(){int *array;array(int *)malloc(sizeof(int)*10);//申請10*4 bytes&#xff0c;即10個單位的int內存單元}注意&#xff0c;malloc使用簡單&#xff0c;但是注意參數和返回值&…

halcon相機標定及圖像矯正(代碼)

侵刪 1 halcon相機標定和圖像矯正 對于相機采集的圖片&#xff0c;會由于相機本身和透鏡的影響產生形變&#xff0c;通常需要對相機進行標定&#xff0c;獲取相機的內參或內外參&#xff0c;然后矯正其畸變。相機畸變主要分為徑向畸變和切向畸變&#xff0c;其中徑向畸變是由透…

找尋一個郵箱

import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern;public class zhengze {public static void main(String[] args) { //1.創建一個正則表達式對象Pattern pPattern.compile("[0-9]{6}"); //2.獲得匹配器 String s…

先弄個XML解析器代碼抄一抄 慢慢研究 O(∩_∩)O哈哈~

&#xfeff;&#xfeff;出處&#xff1a;http://bbs.csdn.net/topics/390229172 已經自我放逐好幾年了.打算去上班得了.在最后的自由日子里,做點有意義的事吧... 先來下載地址 http://www.kuaipan.cn/file/id_12470514853353274.htm 已經在很多正式,非正式的場合…

紫書 例題8-10 UVa 714 (二分答案)

這道題讓最大值最小&#xff0c; 顯然是二分答案當題目求的是最大值最小&#xff0c; 最小值最大&#xff0c; 這個時候就要想到二分答案為什么可以二分答案呢&#xff0c; 因為這個時候解是單調性的&#xff0c; 如果簡單粗暴一點就全部枚舉一遍&#xff0c; 驗證答案。但是因…

was not declared in this scope

“was not declared in this scope”是一個錯誤信息&#xff0c;在編譯的時候會遇到。其含義為標識符在其出現的地方是未被定義的。 出現該錯誤的時候&#xff0c;會同時把未定義的變量名顯示出來。比如如下程序&#xff1a; int main(){ printf("%d",i);//這個i是…

函數參數的傳遞問題(一級指針和二級指針)

函數參數的傳遞問題&#xff08;一級指針和二級指針&#xff09; [轉]原以為自己對指針掌握了&#xff0c;卻還是對這個問題不太明白。請教&#xff01; 程序1&#xff1a; void myMalloc(char *s) //我想在函數中分配內存,再返回 { s(char *) malloc(100); } void …